国际化最佳实践/ Rails应用程序

时间:2011-01-20 10:23:35

标签: ruby-on-rails internationalization

我是ruby&的新手rails并已开始构建应用程序。

我的目标是以一种方式构建它,我可以轻松地翻译rails应用程序的内容,并在注册用户首选的区域设置中显示网站内容。

感谢对某些最佳实践或对任何文档的引用的任何输入,以构建可轻松翻译的Web应用程序?

谢谢, Krish。

6 个答案:

答案 0 :(得分:4)

查看Rails Internationalization (I18n) API。它完成了你所描述的一切。

答案 1 :(得分:3)

同时查看Globalize3,它成为模型翻译的标准。非常有用。

答案 2 :(得分:3)

您可以使用ready_for_i18n插件将您的erb转换为所需的形式。它可以节省一些时间。

答案 3 :(得分:1)

你定制观看这个演讲:http://www.youtube.com/watch?v=CTu4iHWGDyE

答案 4 :(得分:1)

以下是我在处理 Rails应用的国际化时注意到的一些提示或最佳做法。 (有些可能现在已经过时了)。

在我进入列表之前,本地化和翻译之间的一些澄清对我有帮助:

<强>解释

应用程序本地化和模型翻译是另外一个问题。找出你需要的那些(或两者)中的哪一个。

我在这里使用它们的方式:

  • 应用本地化:将您的应用本地化为区域设置。

  • 模型翻译:将您的模型/数据翻译成一种语言。

示例:在我的西班牙语网站(应用程序本地化)中为我提供资源的法语翻译(模型翻译)

我使用Globalize进行模型翻译。

有用的提示/最佳做法:

在Rails + Globalize的上下文中工作时,以下某些内容显然只是有用的提示,其中一些可能不仅仅是......可能是最佳实践。

  • I18n.locale引用并设置应用的区域设置。使用Globalize时,Globalize.locale引用并设置模型/数据转换的语言环境。

  • 在每个请求中设置I18n.localeGlobalize.locale。由于这些变量是在Thread中设置的,因此可以避免一些难以复制的错误。

  • 设置Globalize.locale后立即将I18n.locale设置为I18n.locale。这允许模型转换默认为应用程序的区域设置。 (在我的西班牙语网站上,我预计默认情况下数据为西班牙语)。

  • 更改Globalize.locale(而不是I18n.locale)以更改模型翻译。

  • 每次测试后重置I18n.localeGlobalize.locale。在rspec中

    RSpec.configure do |config|
      config.after(:each) do 
        I18n.locale = :en
        Globalize.locale = :en
      end
    end
    
  • 使用网址中的子域或子文件夹来引用应用的区域设置。

  • 使用语言参数指定数据的语言。

  • 当您使用rails应用程序时,您可能会使用default_url_optionsI18n.locale作为路径/路径助手的默认语言环境参数。但是这在测试中不起作用。我在rspec-rails上从this github问题中找到了解决方案。

    我像这样的猴子补丁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
    

答案 5 :(得分:0)

这是我使用的迷你图案。你可以看一下:http://developers-note.blogspot.com/2012/01/rails-i18n-good-practice.html