我是ruby &的新手,并已开始构建应用程序。国际化最佳实践/ Rails应用程序
我的目标是通过一种方式来构建此应用程序,我可以轻松地翻译rails应用程序的内容,并在注册用户首选的区域显示网站内容。
欣赏任何关于某些最佳实践或对任何文档的引用来阅读的建议,以构建一个易于翻译的Web应用程序?
谢谢, 克里希。
我是ruby &的新手,并已开始构建应用程序。国际化最佳实践/ Rails应用程序
我的目标是通过一种方式来构建此应用程序,我可以轻松地翻译rails应用程序的内容,并在注册用户首选的区域显示网站内容。
欣赏任何关于某些最佳实践或对任何文档的引用来阅读的建议,以构建一个易于翻译的Web应用程序?
谢谢, 克里希。
查看Rails Internationalization (I18n) API。它完成你所描述的一切。
您可以使用ready_for_i18n插件将您的erb转换为所需的形式。它可以节省一些时间。
肯定会试试艾玛。这看起来很有趣。谢谢! – happyfeet 2011-01-20 13:13:32
这是我使用的迷你图案。你可以检查出来:http://developers-note.blogspot.com/2012/01/rails-i18n-good-practice.html
你会definetely观看这次谈话:http://www.youtube.com/watch?v=CTu4iHWGDyE
下面是我通过Rails应用程序的国际化工作,同时注意一些小技巧或最佳实践。 (有些可能现在已经过时)。
在我进入名单这里的本地化和翻译之间的一些澄清,这是对我很有帮助:
定义:
应用本地化和翻译模型是分开的担忧。找出你需要的是哪一个(或两者)。
我在这里用他们的方式:
应用本地化:本地化您的应用程序的语言环境。
模型翻译:将您的模型/数据翻译成语言。
例子:给我资源的法语翻译(模型转换)在我的西班牙语网站(应用本地化)
我用Globalize为模型的翻译。
温馨提示/最佳实践:
以下一些显然只是有用的技巧在Rails的全球化时代+的环境中工作的同时,他们中的一些可能比...可能是最佳做法的详细。
I18n.locale
引用并设置应用的区域设置。使用全球化时,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
要么使用子域名,或在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
感谢idlefingers。这有帮助。你有任何建议/监督/链接转载的特定语言,如中文/越南/日本等,? – happyfeet 2011-01-20 10:57:02
这只是某种你好的世界。 当你有完全不同的语言(比如说:英语,俄语,阿拉伯语,中文)时,没有描述如何组织文件/后端/ locale_data的实践 - 这是一个非常复杂的问题,我猜(英文很简单,不像其他语言那些)。 – DeTeam 2013-04-26 09:34:49