У меня есть простое приложение для рельсов (даже не с базой данных). И в основном я хочу, чтобы он поддерживал два языка. Мой подход к этому должен иметь два маленьких флагов в сноске, один из ГБ (для английского) и один из Германии (для немецкого). Когда пользователь нажимает на один, язык сайта изменяется на соответствующий язык флага страны.Локализуя мое приложение для рельсов
У меня есть [en.yml] и [de.yml] все настройки, и я использовал свои ключи во всех моих взглядах, и я даже испытания, что они работают, поменяв местами [конф. i18n.default_locale] между [en] и [de] в [config/application.rb]. Все хорошо работает в этом отношении.
Я застрял, однако, от того, как я могу достичь механизма изменения языка. Я создал контроллер под названием [Язык] и в ней я определил метод, называемый [Set], но кроме этого, это довольно много пустой, вот что я думаю, что должно произойти:
class LanguageController < ApplicationController
def set
I18n.locale = params[:lang]
redirect_to(:controller => 'home', :action => 'index')
end
end
Вышеизложенные Безразлично Кажется, он работает. Когда я вызываю [/язык/набор? Lang = "de"], локализованные строки меняются на ключи - это не текст, переведенный на немецкий язык!
Еще одна вещь, за которую я застрял (которой я не мог найти в документах для i18n), - это то, как я могу загружать разные изображения для каждого языка!
Любая помощь будет принята с благодарностью.
Спасибо.
Спасибо Мише. Я тоже об этом думал, но в документах не делал этого, советуя не использовать сеансы для этой цели. В любом случае, я сделал то, что вы предлагали, но переведенный текст все еще не отображается, только клавиши, показывают не переведенное значение! – Ciwan
@Ciwan - Я думаю, вы должны называть '.to_sym' на' params [: lang] ', чтобы сделать его символом вместо строки. Кроме того, вы вызываете '/ language/set? Lang =" de "или'/language/set? Lang = de'? Это должно быть последнее. – Mischa
Я видел замечание о том, чтобы не использовать сеансы в руководстве. Думаю, это имеет смысл. Если вы хотите избежать сеансов, вы должны постоянно держать '? Lang = de' в URL-адресе. Существует (платный) [Railscast] (http://railscasts.com/episodes/138-i18n-revised), который объясняет, как это сделать. Несмотря на предупреждение, использование сеансов - самое легкое решение. – Mischa