Интернационализация Best Practices / Rails App - PullRequest
3 голосов
/ 20 января 2011

Я новичок в ruby ​​& rails и начал создавать приложение.

Моя цель - создать его таким образом, чтобы я мог легко перевести содержимое приложения rails и отобразить содержимое веб-сайта в локалиПредпочитаемый зарегистрированным пользователем.

Цените любые отзывы о лучших практиках или ссылки на любую документацию для чтения, чтобы создать веб-приложение, которое можно легко перевести?

Спасибо, Криш.

Ответы [ 6 ]

4 голосов
/ 20 января 2011

Ознакомьтесь с API интернационализации Rails (I18n) .Он делает все, что вы описали.

3 голосов
/ 20 января 2011

Вы можете использовать плагин ready_for_i18n , который преобразует ваш erb в желаемую форму. Это экономит время.

3 голосов
/ 20 января 2011

Также посмотрите Globalize3 , он стал стандартом для переводов моделей. Очень полезно.

1 голос
/ 20 января 2014

Вот несколько советов или рекомендаций, которые я отметил, работая над интернационализацией Rails-приложения . (Возможно, что некоторые из них уже устарели).

Прежде чем я попаду в список, вот несколько пояснений между локализацией и переводом, которые были мне полезны:

Определения:

Локализация приложений и перевод моделей - это отдельная задача. Выясните, какой из них (или оба) вам нужен.

Как я их здесь использую:

  • Локализация приложения: локализация приложения в локали.

  • Перевод модели: Перевод вашей модели / данных на язык.

Пример. Дайте мне французский перевод (модельный перевод) ресурса на моем испанском сайте (локализация приложения)

Я использую Глобализация для переводов моделей.

Полезные советы / рекомендации:

Некоторые из перечисленных ниже являются просто полезными советами при работе в контексте Rails + Globalize, некоторые из них могут быть чем-то большим ... возможно, лучшими практиками.

  • I18n.locale указывает и устанавливает язык приложения. При использовании Globalize Globalize.locale относится и устанавливает языковой стандарт для переводов модели / данных.

  • Установите оба значения I18n.locale и Globalize.locale для каждого запроса. Поскольку эти переменные установлены в Thread, это позволит избежать некоторых трудных для копирования ошибок.

  • Установите Globalize.locale на I18n.locale сразу после установки I18n.locale. Это позволяет переводить модель по умолчанию в локаль приложения. (На моем испанском сайте я ожидаю, что данные будут на испанском языке, по умолчанию).

  • Измените Globalize.locale (а не I18n.locale), чтобы изменить перевод модели.

  • Сброс I18n.locale и Globalize.locale после каждого теста. В rspec

    RSpec.configure do |config|
      config.after(:each) do 
        I18n.locale = :en
        Globalize.locale = :en
      end
    end
    
  • Либо используйте поддомен, либо подпапку в URL, чтобы ссылаться на локаль приложения.

  • Используйте языковой параметр, чтобы указать язык данных.

  • Когда вы работаете в приложении rails, вы, вероятно, будете использовать default_url_options, чтобы использовать I18n.locale в качестве параметра локали по умолчанию для помощников маршрута / пути. Однако это не работает в тестах. Я выбрал решение из этой проблемы с github на rspec-rails.

    У меня обезьяна патч ActionDispatch::Routing::RouteSet вот так:

    class ActionDispatch::Routing::RouteSet
      def url_for_with_locale_fix(options={})
        url_for_without_locale_fix(options.merge(:locale => I18n.locale))
      end
    
      alias_method_chain :url_for, :locale_fix
    end
    
  • Настройка помощника по переводу t в качестве оболочки для метода I18n.t

    module I18nHelper
      def t string, options = {}
        I18n.t string, options
      end
    end
    
    RSpec.configure do |config|
      config.include I18nHelper
    end
    
1 голос
/ 26 апреля 2013

Вы бы наверняка посмотрели этот разговор: http://www.youtube.com/watch?v=CTu4iHWGDyE

0 голосов
/ 05 января 2012

Это мини-шаблон, который я использую. Вы можете проверить это: http://developers -note.blogspot.com / 2012/01 / rails-i18n-good-practice.html

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