手机
当前位置:查字典教程网 >脚本专栏 >ruby专题 >浅谈Ruby on Rails的国际化
浅谈Ruby on Rails的国际化
摘要:视图、模型与控制器里不应使用语言相关设置与字串。这些文字应搬到在config/locales下的语言文件里。当ActiveRecord模型的...

视图、模型与控制器里不应使用语言相关设置与字串。这些文字应搬到在 config/locales 下的语言文件里。

当 ActiveRecord 模型的标签需要被翻译时,使用activerecord 作用域:

en: activerecord: models: user: Member attributes: user: name: "Full name"

然后 User.model_name.human 会返回 "Member" ,而 User.human_attribute_name("name") 会返回 "Full name"。这些属性的翻译会被视图作为标签使用。

把在视图使用的文字与 ActiveRecord 的属性翻译分开。 把给模型使用的语言文件放在名为 models 的文件夹,给视图使用的文字放在名为 views 的文件夹。

当使用额外目录的语言文件组织完成时,为了要载入这些目录,要在 application.rb 文件里描述这些目录。

# config/application.rb config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]

把共享的本土化选项,像是日期或货币格式,放在 locales 的根目录下。

使用精简形式的 I18n 方法: I18n.t 来取代 I18n.translate 以及使用 I18n.l 取代 I18n.localize。

使用 "懒惰" 查询视图中使用的文字。假设我们有以下结构:

en: users: show: title: "User details page"

users.show.title 的数值能这样被 app/views/users/show.html.haml 查询:

= t '.title'

在控制器与模型使用点分隔的键,来取代指定 :scope 选项。点分隔的调用更容易阅读及追踪层级。

# 这样子调用 I18n.t 'activerecord.errors.messages.record_invalid' # 而不是这样 I18n.t :record_invalid, :scope => [:activerecord, :errors, :messages]

【浅谈Ruby on Rails的国际化】相关文章:

对Ruby on Rails进行高效的单元测试的教程

关于Ruby on Rails路由配置的一些建议

快速安装Ruby on Rails的简明指南

提升Ruby on Rails性能的几个解决方案

在Docker中自动化部署Ruby on Rails的教程

举例理解Ruby on Rails的页面缓存机制

Ruby on Rails网站项目构建简单指南

Ruby on Rails迁移时的一些注意事项

在Ruby on Rails上使用Redis Store的方法

浅析Ruby中的DATA对象

精品推荐
分类导航