Ruby on rails 国际化最佳实践/Rails应用程序
我是ruby&rails新手,已经开始构建应用程序 我的目标是以一种我可以轻松翻译rails应用程序内容并以注册用户首选的语言环境显示网站内容的方式构建它 感谢您对一些最佳实践的任何投入或对任何文档的参考,以构建一个易于翻译的web应用程序 谢谢,Ruby on rails 国际化最佳实践/Rails应用程序,ruby-on-rails,internationalization,Ruby On Rails,Internationalization,我是ruby&rails新手,已经开始构建应用程序 我的目标是以一种我可以轻松翻译rails应用程序内容并以注册用户首选的语言环境显示网站内容的方式构建它 感谢您对一些最佳实践的任何投入或对任何文档的参考,以构建一个易于翻译的web应用程序 谢谢, Krish.请查看。它完成了您描述的所有功能。另外,它已成为模型翻译的标准。非常有用。您可以使用插件将erb转换为所需的格式。这节省了一些时间。这是我使用的迷你模式。您可以查看:您一定会看这个演讲:以下是我在处理Rails应用程序国际化过程中注意到的
Krish.请查看。它完成了您描述的所有功能。另外,它已成为模型翻译的标准。非常有用。您可以使用插件将erb转换为所需的格式。这节省了一些时间。这是我使用的迷你模式。您可以查看:您一定会看这个演讲:以下是我在处理Rails应用程序国际化过程中注意到的一些技巧或最佳实践。(可能其中一些已经过时了) 在我进入列表之前,这里有一些本地化和翻译之间的澄清,这对我很有帮助: 定义: 应用程序本地化和模型翻译是两个独立的问题。找出你需要的是哪一个(或两者) 我在这里使用它们的方式:
- 应用程序本地化:将应用程序本地化到区域设置
- 模型转换:将模型/数据转换为语言
引用并设置应用程序的区域设置。使用Globalize时,I18n.locale
引用并设置模型/数据转换的区域设置Globalize.locale
- 在每个请求上同时设置
和I18n.locale
。由于这些变量是在Globalize.locale
,因此可以避免一些难以复制的错误线程中设置的
- 在设置
之后立即将I18n.locale
设置为Globalize.locale
。这允许模型转换默认为应用程序的语言环境。(在我的西班牙语网站上,我希望数据默认为西班牙语)I18n.locale
- 更改
(而不是Globalize.locale
)以更改模型转换I18n.locale
- 每次测试后重置
和I18n.locale
。在rspec中Globalize.locale
RSpec.configure do |config| config.after(:each) do I18n.locale = :en Globalize.locale = :en end end
- 使用url中的子域或子文件夹引用应用程序的区域设置
- 使用语言参数指定数据的语言
- 在rails应用程序上工作时,您可能会使用
将default\u url\u options
用作路由/路径帮助程序的默认locale参数。但是,这在测试中不起作用。我从rspec rails上的github问题中获得了一个解决方案 I monkey patchI18n.locale
像这样: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
作为I18n.t方法的包装器t
module I18nHelper def t string, options = {} I18n.t string, options end end RSpec.configure do |config| config.include I18nHelper end