2011-01-20 53 views
3

我是ruby &的新手,并已开始构建应用程序。国际化最佳实践/ Rails应用程序

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

欣赏任何关于某些最佳实践或对任何文档的引用来阅读的建议,以构建一个易于翻译的Web应用程序?

谢谢, 克里希。

回答

4

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

+0

感谢idlefingers。这有帮助。你有任何建议/监督/链接转载的特定语言,如中文/越南/日本等,? – happyfeet 2011-01-20 10:57:02

+0

这只是某种你好的世界。 当你有完全不同的语言(比如说:英语,俄语,阿拉伯语,中文)时,没有描述如何组织文件/后端/ locale_data的实践 - 这是一个非常复杂的问题,我猜(英文很简单,不像其他语言那些)。 – DeTeam 2013-04-26 09:34:49

3

也检查出Globalize3,它成为模型翻译的标准。很有用。

+0

将检查出Mirko。谢谢! – happyfeet 2011-01-20 13:14:01

3

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

+0

肯定会试试艾玛。这看起来很有趣。谢谢! – happyfeet 2011-01-20 13:13:32

0

下面是我通过Rails应用程序的国际化工作,同时注意一些小技巧或最佳实践。 (有些可能现在已经过时)。

在我进入名单这里的本地化和翻译之间的一些澄清,这是对我很有帮助:

定义:

应用本地化和翻译模型是分开的担忧。找出你需要的是哪一个(或两者)。

我在这里用他们的方式:

  • 应用本地化:本地化您的应用程序的语言环境。

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

例子:给我资源的法语翻译(模型转换)在我的西班牙语网站(应用本地化)

我用Globalize为模型的翻译。

温馨提示/最佳实践:

以下一些显然只是有用的技巧在Rails的全球化时代+的环境中工作的同时,他们中的一些可能比...可能是最佳做法的详细。

  • I18n.locale引用并设置应用的区域设置。使用全球化时,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 
    
  • 要么使用子域名,或在URL子文件夹指的是应用程序的语言环境。

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

  • 当您在Rails应用程序时,您可能会使用default_url_options使用I18n.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 
    
相关问题