2010-08-03 4 views
2

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

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

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

ответ

0

Вы можете изменить локаль, в котором для отображения перевода с помощью опции :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 

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

+0

Должна ли она быть I18n.t ('ключ'),: локаль =>: собственная)? – Hugo

1

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

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

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

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

1

Для полноты

Вам необходимо файлы для каждого региона:

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

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

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

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

<p> 
    <%= t('hello', :locale => :es) %> 
    <br /> 
    <%= "#{t('hello', :locale => :es)}, #{t('world', :locale => :es)}. 
</p>