`
秦朝古月
  • 浏览: 227128 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Rails国际化(i18n)

    博客分类:
  • Ruby
阅读更多
很早就知道国际化,就知道i18n,却不知道是什么原因。原来internationalization(国际化),这个单词的长度是20,然后取其首尾字母,中间省略的字母刚好18个。

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

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

2、生成i18n的配置文件
# in config/initializer/locale.rb

# Tell the I18n library where to find your translations
I18n.load_path += Dir[ File.join(RAILS_ROOT, 'lib', 'locale', '*.{rb,yml}') ]

# Tell the supported locales. This is the one of additional setting by Ruby-Locale for Ruby on Rails.
# If supported_locales is not set, the locale information which is given by WWW browser is used.
# This setting is required if your application wants to restrict the locales.
I18n.supported_locales = Dir[ File.join(RAILS_ROOT, 'lib', 'locale', '*.{rb,yml}') ].collect{|v| File.basename(v, ".*")}.uniq

# Tell the default locale. If this value is not set, "en" is set.
# With this library, this value is used as the lowest priority locale
# (If other locale candidates are not found, this value is used).
I18n.default_locale = "en-US" 


3、gem的引用
# config/environment.rb
Rails::Initializer.run do |config|
 :
 :
 config.gem 'locale'
 config.gem 'locale_rails'
end

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

4、基本知识
I18n.translate "hello"
I18n.localize Time.now
# 简写
I18n.t "hello"
I18n.l Time.now

多国语文件默认的放在config/localese文件夹下,假设你要支持中文和英语,那么你需要在这个文件夹下放置en.yml和zh.yml。
# zh-CN.yml
"zh-CN":
  submit: '提交'
  create: '创建'
#en.yml
en:
  submit: 'Submit'
  create: 'Create'

试图中更加简单,你可以直接调用t方法:
<%= t 'submit' %>


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


6、传递变量
有些时候,我们的字符串中可能需要包含变量,只需要将其放在两个大括号内就可以了:
# zh-CN.yml
"zh-CN":
  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
分享到:
评论

相关推荐

    Ruby-i18nRuby的国际化和本地化的解决方案

    Ruby-i18n是Ruby语言中的一个核心库,专门用于实现国际化(Internationalization,简称i18n)和本地化(Localization,简称l10n)功能。在软件开发过程中,尤其是在面向全球用户的应用中,i18n和l10n是至关重要的,...

    i18n:Ruby的国际化(i18n)库

    Ruby国际化和本地化(i18n)解决方案。 目前由@radar维护。 用法 滑轨 您将最常在Rails应用程序中使用此库。 用法的示例, 。 Ruby(无Rails) 如果要在没有Rails的情况下使用此库,则只需将i18n添加到Gemfile ...

    Ruby的国际化(i18n)库-Ruby开发

    有关e Ruby I18n的Ruby国际化和本地化(i18n)解决方案,请参见《 Rails指南》。 目前由@radar维护。 使用Rails最常见的是在Rails应用程序中使用此库。 有关用法的示例,请参见《 Rails指南》。 Ruby(不带Rails)...

    i18n_linter:Rails i18n Linter宝石

    I18nLinter ...只需在Ruby on Rails项目的文件夹中输入i18n_linter ,然后观察可以国际化的字符串即可。 注意:仅报告ruby文件中的字符串。 $ cd my/ruby_on_rails/project $ i18n_linter [options]

    rails国际化

    10. **最佳实践**:保持翻译文件的整洁和模块化,避免硬编码文本,定期更新和维护翻译,这些都是Rails国际化开发中的良好实践。 通过上述步骤,你可以有效地在Rails应用中实现国际化,提供多语言支持。同时,利用...

    devise-i18n, 设计 gem的翻译.zip

    devise-i18n, 设计 gem的翻译 devise-i18n 设计"是一种基于warden的Rails 灵活... 国际化( aka i18n ) 是一个"计算机软件适应不同语言。区域差异和目标市场技术要求的方法"。在控制器。模型和其他领域中支持 i18n,但它

    sublime-text-i18n-rails:用于Rails国际化的Sublime Text 23软件包

    该软件包旨在帮助您创建Rails国际化密钥。 Sublime Text 2版本不再使用新功能进行更新; 您仍然可以从Package Control下载它,也可以在找到它。 可用命令 1.检查按键 如果要检查*.yml文件中存在哪些键,则可以打开...

    Ruby-MailForm直接从Rails的表单发送电子邮件支持I18n验证附件和请求信息

    MailForm库是专门为简化这一过程而设计的,它允许开发者直接从Rails的表单中发送邮件,并且提供了I18n(国际化)支持、验证功能以及添加附件和请求信息的能力。这个库由Plataformatec开发,其最新版本为bd43996。 ...

    i18n-bamboo:通过猴子修补 Rails I18n 模块来帮助开发,以始终返回所有可用语言环境中最长的翻译或本地化值

    I18n:Bamboo monkey 修补 Rails I18n 模块,并将强制所有对 I18n.translate (I18n.t) 和 I18n.localize (I18n.l) 的调用返回所有可用语言环境中最长的翻译或本地化值。 出于显而易见的原因(猴子补丁 :anxious_face...

    Struts2和Rails的国际化实现

    Rails是基于Ruby的Web框架,它提供了非常简洁的国际化(i18n)API。以下是如何在Rails中实现国际化: 1. **创建翻译文件**:在`config/locales`目录下,为每种语言创建一个对应的YAML文件,例如`en.yml`(英语)和`...

    Ruby-Localer自动检测丢失的I18n翻译工具

    Ruby-Localer是一款专为Ruby开发设计的自动化工具,用于检测和管理应用程序中的I18n(国际化)翻译。在软件开发中,I18n是确保应用能在不同语言环境中正常运行的关键步骤,它允许开发者将文本从源代码中分离出来,...

    Ruby-R18n是一个i18n工具用于将Ruby应用程序翻译成多种语言

    Ruby-R18n是Ruby开发领域的一个重要工具,专门用于实现国际化(i18n)功能,使得开发者能够轻松地将他们的应用程序翻译成不同语言,以满足全球用户的需求。i18n是一个广泛应用于软件行业的术语,代表...

    Ruby-ShowFor快速显示具有I18n特性的模型信息

    `ShowFor`是Ruby社区中一个实用的库,旨在简化在视图层展示模型信息的过程,尤其是对于拥有国际化(I18n)特性的应用,`ShowFor`提供了一种优雅的解决方案。 `ShowFor`的核心功能在于能够快速构建出模型信息的展示...

    Ruby-i18ntasks可以帮助您找到并管理缺失和未使用的翻译

    它利用了Ruby on Rails的I18n框架,通过自动化的方式来检测和解决国际化问题。以下是i18n-tasks的一些主要特性: 1. **缺失翻译检测**:i18n-tasks可以扫描代码库,找出尚未被翻译的字符串,这些通常是由于新添加的...

    devise-i18n-views:I18n对设计视图的支持

    devise-i18n-views确实增加了对视图国际化的支持,并提供了翻译。 先决条件 在没有情况下使用devise-i18n-views是没有意义的,因此请认为这是先决条件。 devise-i18n-views包含与Devise v2及更高版本兼容的视图。 ...

    friendly-locale:Xamarin和.NET的简单跨平台国际化。 本地化类似于Ruby On Rails-http:guides.rubyonrails.orgi18n.html(测试版)

    标题中的“friendly-locale”项目是一个专为Xamarin和.NET框架设计的轻量级、跨平台的国际化解决方案,它的设计灵感来源于Ruby on Rails的i18n(国际化)机制。这个项目的目的是简化移动应用和桌面应用的本地化过程...

    spree_i18n:Spree Commerce的I18n转换文件

    狂欢国际化 这是的国际化项目有关更多详细信息,请参见。 翻译愉快! 使用以下命令将此扩展名添加到您的Gemfile中:狂欢&gt; = 3.1 gem 'spree_i18n' , github : 'spree-contrib/spree_i18n'Spree 3.0和Spree 2.x gem '...

    Ruby-Globalize构建在I18nAPIinRubyonRails之上添加模型翻译至ActiveRecord模型

    在开发多语言网站时,Globalize是一个不可或缺的工具,它扩展了Rails的内置I18n(国际化)API,为ActiveRecord模型提供了数据翻译功能。这个教程将深入探讨如何使用Globalize在Ruby on Rails项目中实现模型的国际化...

Global site tag (gtag.js) - Google Analytics