Rails国际化(i18n)

转载 2015年07月09日 20:21:39
很早就知道国际化,就知道i18n,却不知道是什么原因。原来internationalization(国际化),这个单词的长度是20,然后取其首尾字母,中间省略的字母刚好18个。 

选用了Locale作为国际化的解决方案。 
1、首先是安装 
Shell代码  收藏代码
  1. gem install locale_rails  

会自动的安装locale和locale_rails两个gem。 

2、生成i18n的配置文件 
Ruby代码  收藏代码
  1. # in config/initializer/locale.rb  
  2.   
  3. # Tell the I18n library where to find your translations  
  4. I18n.load_path += DirFile.join(RAILS_ROOT, 'lib''locale''*.{rb,yml}') ]  
  5.   
  6. # Tell the supported locales. This is the one of additional setting by Ruby-Locale for Ruby on Rails.  
  7. # If supported_locales is not set, the locale information which is given by WWW browser is used.  
  8. # This setting is required if your application wants to restrict the locales.  
  9. I18n.supported_locales = DirFile.join(RAILS_ROOT, 'lib''locale''*.{rb,yml}') ].collect{|v| File.basename(v, ".*")}.uniq  
  10.   
  11. # Tell the default locale. If this value is not set, "en" is set.  
  12. # With this library, this value is used as the lowest priority locale  
  13. # (If other locale candidates are not found, this value is used).  
  14. I18n.default_locale = "en-US"   


3、gem的引用 
Ruby代码  收藏代码
  1. # config/environment.rb  
  2. Rails::Initializer.run do |config|  
  3.  :  
  4.  :  
  5.  config.gem 'locale'  
  6.  config.gem 'locale_rails'  
  7. end  

app/controllers/application.rb中不需要定义set_locale。 

4、基本知识 
Ruby代码  收藏代码
  1. I18n.translate "hello"  
  2. I18n.localize Time.now  
  3. # 简写  
  4. I18n.t "hello"  
  5. I18n.l Time.now  

多国语文件默认的放在config/localese文件夹下,假设你要支持中文和英语,那么你需要在这个文件夹下放置en.yml和zh.yml。 
Yml代码  收藏代码
  1. # zh-CN.yml  
  2. "zh-CN":  
  3.   submit: '提交'  
  4.   create: '创建'  
  5. #en.yml  
  6. en:  
  7.   submit: 'Submit'  
  8.   create: 'Create'  

试图中更加简单,你可以直接调用t方法: 
Ruby代码  收藏代码
  1. <%= t 'submit' %>  


5、使用 
你可以进入Console进行测试: 
引用
> I18n.t 'submit' 
=> "Submit" 
> I18n.locale = 'zh' 
=> "zh" 
> I18n.t('submit') 
=> "提交"


6、传递变量 
有些时候,我们的字符串中可能需要包含变量,只需要将其放在两个大括号内就可以了: 
Yml代码  收藏代码
  1. # zh-CN.yml  
  2. "zh-CN":  
  3.   hello: "你好, {{name}}"  

打开console: 
引用
> I18n.t 'hello', :name => 'Rails' 
=> "你好,Rails!"


还可以进行单复数处理、时间和日期本地化、货币处理、ActiveRecord和route处理。 

解决问题 
1、undefined method set_app_language_tags错误 
引用
c:/ruby/lib/ruby/gems/1.8/gems/locale_rails-2.0.5/lib/locale_rails/i18n.rb:28:in `supported_locales=': undefined method `set_app_language_tags' for I18n::Locale:Module (NoMethodError)

方法:http://github.com/mutoh/locale_rails/issues/#issue/2 

2、translation_missing错误 
千万要记住日文是ja,简体中文是zh-CN,为了这个郁闷了好久 

参考: 
http://guides.rubyonrails.org/i18n.html 
http://github.com/svenfuchs/rails-i18n (多国语文件) 
http://www.yotabanana.com/hiki/ruby-locale-rails-howto.html 
http://www.letrails.cn/archives/rails-2-2-i18n-tutorials/ 

http://d.hatena.ne.jp/willnet/20100430/1272618929

转载地址:http://ilgnep.iteye.com/blog/686353

Struts国际化,i18n

  • 2010年01月09日 08:23
  • 446KB
  • 下载

SpringMVC国际化(i18n)(五)

国际化我们通常用缩写来简单,那就是i18n。它就是让我们的系统可以转换成不同的语言。为了转换成不同的言语,我们需要定义不同的文件,如:messages_en.properties,messages_e...

应用国际化(i18n)

一、国际化开发概述   软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的、符合来访者阅读习惯的页面或数据。   国际化(internati...

Yii i18n国际化,消息翻译

实现国际化有两种方式,基于文件实现和基于数据库实现。基于文件实现的方式很简单,网上有很多,请自行查询使用。这里主要说一下基于数据库实现的方式。前提 待翻译的消息使用Yii::t()方法显示,方法参数...

Struts(14)本地化/国际化(i18n)

国际化(i18n)是规划和实施的产品和服务,使他们能很容易地适应特定的本地语言和文化的过程中,这个过程被称为本地化。国际化的过程有时也被称为翻译或本地化启用。国际化是缩写i18n,因为我和两端用n字打...

QT国际化(i18n)

六、QT国际化(i18n) 要使得应用程序支持多种 语言,并且能够灵活切换,就需要添加QT的国际化支持。 打开QTDemo.pro,添加如下语句: TRANSLATIONS += en.ts z...

Struts2 i18n国际化(允许用户自行选择语言)

最近在学习struts2,学习资料是李刚著的《struts2权威指南》,这本书写得非常好,非常有学习价值。我在学习过程中,自己跟着做了些例子。下面就是关于在struts2中允许用户自行选择程序语言的原...

Java Struts2 本地化/国际化(i18n)浅析

国际化(i18n)是规划和实施的产品和服务,使他们能很容易地适应特定的本地语言和文化的过程中,这个过程被称为本地化。国际化的过程有时也被称为翻译或本地化启用。国际化是缩写i18n,因为我和两端用n字打...

Python 国际化(i18n) 支持

python使用gettext来实现i18n支持。具体参数信息请看gettext module帮助。 python中对于国际化的字符串,只需要外加_()即可。 如: print(_('hell...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Rails国际化(i18n)
举报原因:
原因补充:

(最多只允许输入30个字)