Перевод моделей в Ruby on Rails 3.0 - PullRequest
2 голосов
/ 03 августа 2010

Используя Ruby on Rails 3.0, я хотел бы иметь страницы, где посты имеют параллельные переводы.Например, страница будет выглядеть следующим образом

+---------------+---------------+-----------------+
| Hello         | Hola          | Bonjour         |
+---------------+---------------+-----------------+ ... (there could be many more languages)
| Hello, world. | Hola, mundo.  | Bonjour, monde. |
+---------------+---------------+-----------------+

Какой простой способ это сделать?Я не верю, что это можно решить с помощью I18N, поскольку это обычно означает установку одного языкового стандарта и перевод всей страницы на этот язык.Я хочу несколько столбцов языков (эти языки и их количество также неизвестно).Я знаю, что мог бы создать множество таблиц для переводов, таких как Posts, PostTitleTranslations и PostBodyTranslations, но это не лучший способ сделать это.Кто-нибудь когда-нибудь решал что-то подобное?

Ответы [ 4 ]

1 голос
/ 17 мая 2012

Я создал плагин Ruby on Rails с именем acts_as_translatable , который позволяет легко переводить ваши модели и таблицы базы данных.

Надеюсь, вы сможете его использовать!

С уважением, Лассе Банк

1 голос
/ 04 сентября 2010

Как я понял, вы хотите перевести строки таблицы. Вы можете сделать это, используя простейшую, но при этом лучшую практику, которую я нашел и использовал в 3 проектах. Добавьте модель PostTranslation со своими полями, такими как title, text и т. Д., А также со специальными столбцами: post_id (в вашем примере) и locale.

Это можно сделать с помощью puret (который поддерживает rails3 с самого начала) или с использованием разработанного мной плагина has_translations (сейчас я тестировал его только на rails 2.3 , но следующий, который я выпущу очень скоро (версия 0.4), будет поддерживать rails3).

Это очень удобно. Вы можете прочитать файлы README прямо, нажав на ссылки.

Если у вас возникнут вопросы, просто напишите мне сообщение на github.

1 голос
/ 04 сентября 2010

Ради полноты

Вам нужны файлы для каждой локали:

config
|
+- locales
   |
   +- es.yml
      en.yml
      fr.yml

Пример использования es.yml

es:
  :hello "Hola"
  :world "mundo"

Как уже говорил Андреас, используя t ('что-то'),: locale =>: xx вы можете выбрать и выбрать то, что вы хотите.

<p>
  <%= t('hello', :locale => :es) %>
  <br />
  <%= "#{t('hello', :locale => :es)}, #{t('world', :locale => :es)}.
</p>
0 голосов
/ 04 августа 2010

Вы можете переопределить локаль, в которой отображается перевод, используя параметр :locale для I18n.t:

I18n.locale = :de             # set default locale to German
I18n.t('key')                 # display German translation for 'key'
I18n.t('key', :locale => :en) # display English translation for 'key' even though
                              # the default locale is still set to :de

Зная это, должно быть легко настроить таблицу, подобную той, что в вашем примере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...