1.下载本地化文件
下载地址:
https://github.com/svenfuchs/rails-i18n
将en-US.yml,zh-CN.yml文件拷到config/locals目录下,同时创建en.yml,zh.yml文件(项目本地化数据文件)
2.设置加载路径和默认语言
a.设置加载路径
默认情况下rails会加载lcoals目录下的所有.rb,.yml文件,你也可以设置自己的加载路径,rails默认不会load层级目录中的文件
config.i18n.load_path += Dir[Rails.root.join('my', 'locales','*.{rb,yml}')]
I18n.load_path << locale_path
b.默认语言
config.i18n.default_locale = :en
3.基本的使用方法
配置:
zh:
controller:
defaults: # 所有页面公用的值
success: 成功
warn: 警告
i18n:
text:
tip: %{num} 你想制作一本自己写的Java书籍
输出:
<%= t(:tip, :scope => "controller.i18n.text",:num => '1') %></li>
<%= t(:tip, :scope => "controller.#{controller_name}.text",:num => '2')%>
<%= t("controller.i18n.text.tip",:num => '3') %>
<%= t(:text,:default => '默认值',:num => '4') %>
# 1 你想制作一本自己写的Java书籍
# 2 你想制作一本自己写的Java书籍
# 3 你想制作一本自己写的Java书籍
# I am default value
更多参看:http://guides.rubyonrails.org/i18n.html
4.切换多语言
before_filter :set_locale
def set_locale
session[:locale] = params[:locale] if params[:locale]
I18n.locale = session[:locale] || I18n.default_locale
....
end
5.i18n特性
a.传入的keys即可以是符号也可以是字符串
I18n.t :message
I18n.t 'message'
b. scope
I18n.t :record_invalid, :scope => [:activerecord, :errors, :messages]
I18n.translate "activerecord.errors.messages.record_invalid"
I18n.t 'activerecord.errors.messages.record_invalid'
I18n.t 'errors.messages.record_invalid', :scope => :active_record
I18n.t :record_invalid, :scope => 'activerecord.errors.messages'
I18n.t :record_invalid, :scope => [:activerecord, :errors, :messages]
3.defaults
I18n.t :missing, :default => 'Not here'# => 'Not here'
更多参考:http://www.cnblogs.com/orez88/articles/1537780.html
http://ihower.tw/rails2/rails-i18n.html