我是ruby&的新手rails并已开始构建应用程序。
我的目标是以一种方式构建它,我可以轻松地翻译rails应用程序的内容,并在注册用户首选的区域设置中显示网站内容。
感谢对某些最佳实践或对任何文档的引用的任何输入,以构建可轻松翻译的Web应用程序?
谢谢, Krish。
答案 0 :(得分:4)
查看Rails Internationalization (I18n) API。它完成了你所描述的一切。
答案 1 :(得分:3)
同时查看Globalize3,它成为模型翻译的标准。非常有用。
答案 2 :(得分:3)
您可以使用ready_for_i18n插件将您的erb转换为所需的形式。它可以节省一些时间。
答案 3 :(得分:1)
答案 4 :(得分:1)
以下是我在处理 Rails应用的国际化时注意到的一些提示或最佳做法。 (有些可能现在已经过时了)。
在我进入列表之前,本地化和翻译之间的一些澄清对我有帮助:
<强>解释强>
应用程序本地化和模型翻译是另外一个问题。找出你需要的那些(或两者)中的哪一个。
我在这里使用它们的方式:
应用本地化:将您的应用本地化为区域设置。
模型翻译:将您的模型/数据翻译成一种语言。
示例:在我的西班牙语网站(应用程序本地化)中为我提供资源的法语翻译(模型翻译)
我使用Globalize进行模型翻译。
有用的提示/最佳做法:
在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
使用网址中的子域或子文件夹来引用应用的区域设置。
使用语言参数指定数据的语言。
当您使用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
答案 5 :(得分:0)