最近因为有做多语言版本的需要,多了解了一些 rails 与 i18n 的内容。
rails 项目要实现多语言版本,也就是我们常说的 i18n,有好多种实现方式。不过最普遍使用的,就是 gettext 。虽然网上有许多利用 gettext 实现国际化的例子与示例代码,但是照抄那些代码并不能给自己带来实质性的提高,还是需要总结一下的。
gettext 的工作原理,是将所有需要国际化的字符串,以类似于 Java 的资源的形式引用,例如 _('COMPANY_NAME') 实际上就是把 COMPANY_NAME 作为资源键,通过方法 _() 就能得到所需语言的字符串。
建立这个字符串资源需要使用到 poedit 。这是一个基于 GNU 的开源项目,与 gettext 配合可以达到非常好的效果。
具体的操作流程,随便搜索就有很多,大致的概括如下:
- 将原项目中需要国际化的内容,替换成对应的键
- 建立 po 目录,使用 rake updatepo 命令,将项目中所有的键取出,得到一个 .pot 文件
- 在 po 目录中建立相应的语言目录,比如 en_US,zh_CN 等
- 使用 poedit,从 .pot 文件导入目录,保存得到一个 .po 文件
- 将 .po 文件复制到所有语言版本目录下,并使用 poedit 翻译成相应的语言
- 使用 rake makemo 命令,自动在 locale 下创建对应的语言版本以及 .mo 文件,翻译工作完成
- 在项目中,使用 set_locale 方法设置需要的语言版本
整个过程并不复杂,需要注意一点就是各国语言文字的表现可能不尽相同,需要多考虑一下页面的布局与美观,不能因为字符问题就把原有的设计破坏掉
分享到:
相关推荐
rails-i18n, 用于收集 Ruby on Rails i18n 环境数据以及其他有趣的Rails 相关 i18n 内容的存储库 Rails 语言环境数据存储库 中心收集区域设置数据,以便在 ruby 上使用。 gem-安装添加到你的Gemfile:gem 'rails-i18n...
适用于JavaScript的Ruby on Rails i18n 该gem通过Rack中间件公开您的JSON序列化翻译,以便将它们与JavaScript结合使用。 安装 此宝石正在开发中,这些步骤可能会更改 # Gemfile gem 'rails-i18n-js', :git => '...
i18n...# You *must* choose GetText or Rails-i18n style checking# If you want GetText-style checkingI18n/GetText: Enabled: trueI18n/RailsI18n: Enabled: false# If you want rails-i18n
react-i18n 该模块与 gem集成在一起,并作为的包装器构建。 基本设定 安装模块 $ npm install --save i18n-js react-i18n 设置i18n-js 在Gemfile中 gem 'i18n-js' 您认为* .haml :javascript I18n.default...
模仿Rails的i18n界面。用法const I18n = require ( '@fiverr/i18n' ) ;const translations = require ( './translations.json' ) ;const i18n = new I18n ( { translations } ) ; 选项类型描述translations 目的...
mail_form, 在 Rails 中使用 i18n 验证附件和请求信息,直接从表单发送电子邮件 MailForm Rails 3这个 gem 构建在 ActiveModel 之上,展示如何从 Rails 中提取验证。命名和 i18n,而不需要自己实现。本自述文件指的...
I18nRouting I18n_routing是Ruby on Rails的插件,可让您轻松地通过版本2.2以后的Rails中包含的I18n api转换路线。 所有必需的信息都可以在Wiki上找到: 如有疑问,请使用i18_routing谷歌论坛: 适用于Rails 2.3、...
该gem易于与需要i18n时区转换的其他gem结合使用,因此我们可以使用通用的i18n时区转换gem。 如果您要对时区和翻译做任何事情,则无需重新发明轮子并添加自己的翻译。 只需使用此gem的时区转换,就不必为每个...
百济I18n 这是一个小库,可以在JavaScript上提供Rails I18n的翻译。 从借来的特征: 多元化日期/时间本地化号码本地化语言环境回退资产管道支持还有更多! :)用法安装通过NPM npm install baiji-i18n 运行npm ...
I18nLinter ...只需在Ruby on Rails项目的文件夹中输入i18n_linter ,然后观察可以国际化的字符串即可。 注意:仅报告ruby文件中的字符串。 $ cd my/ruby_on_rails/project $ i18n_linter [options]
您可以使用Gitter与我们聊天:Globalize建立在Ruby on Rails的I18n API上,以将模型转换添加到ActiveRecord模型。 换句话说,一种翻译实际用户生成内容的方法;例如, 您可以使用Gitter与我们聊天:Globalize建立在...
i18n_tools 使用I18n库在 Rails 和 Ruby 应用程序中查找丢失和未使用的翻译的非常简单的 rake 任务。安装 gem install i18n_tools用法如果您在 Rails 中使用 bundler,请将以下内容添加到您的Gemfile : group :...
与竹子不同,Rails 应用程序的 i18n 翻译将继续增长。 就像一根坚韧的竹杆冲破一块人行道一样,长时间的翻译也会破坏用户界面。 I18n:Bamboo monkey 修补 Rails I18n 模块,并将强制所有对 I18n.translate (I18n.t)...
Ruby-i18n社区还提供了许多扩展和工具,如`i18n-tasks`用于管理翻译任务,`i18n-spec`用于测试翻译的正确性,以及`gettext_i18n_rails`等工具,它们提供了类似Gettext的翻译工作流程。 通过理解和掌握Ruby-i18n库...
devise-i18n, 设计 gem的翻译 devise-i18n 设计"是一种基于warden的Rails 灵活认证方案"。 国际化( aka i18n ) 是一个"计算机软件适应不同语言。区域差异和目标市场技术要求的方法"。在控制器。模型和其他领域中支持...
MailForm库是专门为简化这一过程而设计的,它允许开发者直接从Rails的表单中发送邮件,并且提供了I18n(国际化)支持、验证功能以及添加附件和请求信息的能力。这个库由Plataformatec开发,其最新版本为bd43996。 ...
vim-localorie Localorie是一个Vim插件,可以更轻松地使用Rails i18n语言环境文件。查找翻译将光标放在Rails视图或控制器中的i18n键上,调用localorie#translate()用该键的所有翻译内容填充localorie#translate()或...
如果要在没有Rails的情况下使用此库,则只需将i18n添加到Gemfile : gem 'i18n' 然后使用一些翻译和默认语言环境配置I18n: I18n . load_path << Dir [ File . expand_path ( "config/locales" ) + "/*....
i18n-tasks可以与使用ruby 任何项目一起使用(Rails中的默认设置)。 将i18n任务添加到Gemfile中: gem 'i18n-tasks' , '~> 0.9.33' 复制默认: $ cp $( i18n-tasks gem-path ) /templates/config/i18n-tasks....
rails g i18n:active_record:install 它创建一个迁移: class CreateTranslations < ActiveRecord::Migration def self.up create_table :translations do |t| t.string :locale t.string :key