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

Ruby on rails 国际化最佳实践/Rails应用程序,ruby-on-rails,internationalization,Ruby On Rails,Internationalization,我是ruby&rails新手,已经开始构建应用程序 我的目标是以一种我可以轻松翻译rails应用程序内容并以注册用户首选的语言环境显示网站内容的方式构建它 感谢您对一些最佳实践的任何投入或对任何文档的参考,以构建一个易于翻译的web应用程序 谢谢, Krish.请查看。它完成了您描述的所有功能。另外,它已成为模型翻译的标准。非常有用。您可以使用插件将erb转换为所需的格式。这节省了一些时间。这是我使用的迷你模式。您可以查看:您一定会看这个演讲:以下是我在处理Rails应用程序国际化过程中注意到的

我是ruby&rails新手,已经开始构建应用程序

我的目标是以一种我可以轻松翻译rails应用程序内容并以注册用户首选的语言环境显示网站内容的方式构建它

感谢您对一些最佳实践的任何投入或对任何文档的参考,以构建一个易于翻译的web应用程序

谢谢,
Krish.

请查看。它完成了您描述的所有功能。

另外,它已成为模型翻译的标准。非常有用。

您可以使用插件将erb转换为所需的格式。这节省了一些时间。

这是我使用的迷你模式。您可以查看:

您一定会看这个演讲:

以下是我在处理Rails应用程序国际化过程中注意到的一些技巧或最佳实践。(可能其中一些已经过时了)

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

定义:

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

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

  • 应用程序本地化:将应用程序本地化到区域设置

  • 模型转换:将模型/数据转换为语言

示例:给我西班牙语站点中资源的法语翻译(模型翻译)(应用程序本地化)

我用它来翻译模型

有用的提示/最佳实践:

在Rails+Globalize环境下工作时,以下一些显然只是有用的提示,其中一些可能不止这些。。。可能是最佳做法

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

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

  • 在设置
    I18n.locale
    之后立即将
    Globalize.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\u url\u options
    I18n.locale
    用作路由/路径帮助程序的默认locale参数。但是,这在测试中不起作用。我从rspec rails上的github问题中获得了一个解决方案

    I monkey patch
    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
    
  • 设置translate helper
    t
    作为I18n.t方法的包装器

    module I18nHelper
      def t string, options = {}
        I18n.t string, options
      end
    end
    
    RSpec.configure do |config|
      config.include I18nHelper
    end
    

谢谢各位朋友。这很有帮助。你有没有关于特定语言的翻译建议/注意事项/链接,比如汉语/越南语/日语等?这只是一个你好世界。当您使用完全不同的语言(比如英语、俄语、阿拉伯语、汉语)时,没有任何实践描述如何组织文件/后端/语言环境数据-我想这是一个相当复杂的问题(英语很简单,不像其他语言那么有特色)。一定会尝试一下。这看起来很有趣。谢谢我去看看米尔科。谢谢虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能会无效。您提供了错误的链接(fighter Thinks),请使用正确的链接: