Как мы можем получить перевод в представлении при рендеринге для атрибута модели рельсов, например, сообщения в блоге?

Я хочу перевести столбец в рельсах при отображении в представлении, которое переведено на язык текущих пользователей. IE. Мне не нужно действительно хранить перевод в БД. Есть ли причина, по которой драгоценные камни, такие как Globalize и Traco, заставляют вас сохранять перевод в отдельной таблице при сохранении?

Есть ли способ перевести то, что я хочу в представлении, когда я отрисовываю свой пост в блоге?

Раньше я не делал никакого преобразования языка в rails, но кажется, что файлы YAML предназначены только для статического текста. IE, мы не можем добавить объекты модели и перевести их?


person Lee Eather    schedule 15.05.2020    source источник
comment
Есть ли причина, по которой гемы, такие как Globalize и Traco, заставляют вас сохранять перевод в отдельной таблице при сохранении? - Да. Потому что это разумное дизайнерское решение. Если вы храните переводы в той же таблице, что и записи, вам нужно добавить attributes*languages количество столбцов в таблицу, а затем поэкспериментировать с метапрограммированием, чтобы собрать все переводы с объектов. Добавление дополнительного языка потребует от вас выполнить миграцию моделей * атрибутов.   -  person max    schedule 16.05.2020
comment
Хотя вы могли бы сделать это, если бы у вас был один или два атрибута, которые вам нужно перевести на ограниченный набор языков с точки зрения дизайна библиотеки, это было бы катастрофой.   -  person max    schedule 16.05.2020
comment
Я не спрашивал, почему они хранят его в отдельной таблице БД.   -  person Lee Eather    schedule 17.05.2020


Ответы (1)


Я нашел это в другом месте, где я задал вопрос ..

Google Translate

Делает нужную мне работу.

Не думайте, что globalize - это даже библиотека переводчика, и, выходя из railscast 338, кажется, вам все равно нужно добавить свои собственные ymls перевода, если только это не только для пользовательских языков. Я не уверен, как именно это работает. Но все же вам нужно перевести и сохранить каждый язык только для ваших методов модели для перевода

person Lee Eather    schedule 21.05.2020