== I18n 多國語系
* 下載翻譯的詞彙 http://github.com/svenfuchs/rails-i18n/tree/master/rails/locale/ 到 config/locale/ 下, 為了與Extjs的locale一致,將zh-TW和zh-CN改為zh_TW和zh_CN.
* 修改 /config/application.rb 的 config.i18n.default_locale = "zh_TW" 可以修改預設的語系.
* 在 app/views/layouts/application.html.erb 加入:
<%= javascript_include_tag "/extjs/src/locale/ext-lang-#{I18n.default_locale}" %>
== 使用方法
I18n.t('netzke.basepack.grid_panel.actions.add', :default => "Add")
可以直接使用 t 方法
t("text.login_successful")
翻譯關鍵字可以用字串或 Symbol,也可以加上 Scope,例如:
t("label.login")
t(:login, :scope => :label )
== 修改 yml 設定(冒號後面要有空格)
zh_TW
netzke:
basepack:
generic:
confirm: "确认"
are_you_sure: "你确认吗?"
grid_panel:
actions:
add: "新增"
edit: "修改"
del: "刪除"
apply: "保存"
add_in_form: "新增(form)"
edit_in_form: "修改(form)"
search: "搜索"
deleted_n_records: "已刪除 %{n} 記錄"
cannot_delete: "您没有权限删除数据"
label:
remember_me: "记注密码"
login: "用户"
password: "密码"
button:
register: "注册"
text:
welcome_login: "欢迎您登录"
login_successful: "登录成功!"
logout_successful: "登出成功!"
== 寻找未使用的翻译
* See all the missing I18n translations
http://github.com/balinterdi/missing_t
* finding missing and unused translations
https://github.com/tkadauke/i18n_tools
== I18n ActiveRecord backend
https://github.com/svenfuchs/i18n-active_record
load I18n::Backend::Simple (yaml) to I18n::Backend::ActiveRecord::Translation table
https://github.com/tb/i18n_sync_simple_to_active_record
== Magic i18n "columns" for Rails models
https://github.com/jjbuckley/translatable_attributes
== 讓使用者可以切換多語系
使用Phusion Passenger + nginx作web服務, 必須在 application_controller.rb 中加入:
# For nginx:
before_filter :set_locale
def set_locale
#if params[:locale] && ["en", "zh-TW", "zh-CN"].include?( params[:locale] )
session[:locale] = params[:locale] if params[:locale]
#end
I18n.locale = session[:locale] || I18n.default_locale
end
def self.default_url_options(options={})
{:locale => I18n.locale}
end
在 View 中可以這樣做:
link_to "英文版", :controller => controller.controller_name, :action => controller.action_name, :locale => "en"
config/routes.rb
scope "(:locale)", :locale => /en|cn/ do
resources :books
end
參考:
https://github.com/warrenli/kowloon
係一個網站應用程式,以香港嘅繁體中文為預設語言,可以轉換為英文或設定其他語言。
== Rails i18n for javascript
https://github.com/giniedp/j18n
== 時區 TimeZone
首先,資料庫裡面的時間一定都是儲存 UTC 時間。而 Rails 提供的機制是讓你從資料庫拿資料時,自動幫你轉換時區。例如,要設定台北 +8 時區:
首先設定 config/application.rb 中預設時區為 config.time_zone = “Taipei”,如此 ActiveRecord 便會幫你自動轉換時區,也就是拿出來時 +8,存回去時 -8
== 如何根據使用者切換時區?
首先,你必須找個地方儲存不同使用者的時區,例如 User model 有一個欄位叫做 time_zone:string。然後在編輯設定的地方,可以讓使用者自己選擇時區:
<%= time_zone_select 'user','time_zone' %>
接著在 application_controller.rb 中加入:
before_filter :set_timezone
def set_timezone
if logged_in? && current_user.time_zone
Time.zone = current_user.time_zone
end
end
== Unicode 處理
在 Ruby 1.8 的字串其實只是 byte 的集合,如果你需要對 UTF-8 字串做一些函式操作,例如計算字數或字串替換,Rails 提供了 mb_chars 來包裝以獲得正確的結果,例如:
"中文".size # 6
"中文".mb_chars.size # 2
詳細的 API 文件請參考 http://api.rubyonrails.org/classes/ActiveSupport/Multibyte/Chars.html
如果你使用 Ruby 1.9,就不需要使用 mb_chars 了。Ruby 1.9 支援各種不同的 Encoding。
== Iconv
如果你需要在不同語系中處理,例如 Big5,那個 Ruby 的內建函式庫 Iconv 可以幫你處理轉換。
請參考 API 文件 http://ruby-doc.org/stdlib/libdoc/iconv/rdoc/index.html
== i18n API
http://guides.rubyonrails.org/i18n.html
== I18n Backends
http://asciicasts.com/episodes/256-i18n-backends
http://railscasts.com/episodes/256-i18n-backends
MongoDB backend implementation for I18n gem.
https://github.com/aulizko/mongo-i18n
http://ulizko.com/posts/408/
分享到:
相关推荐
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...
mail_form, 在 Rails 中使用 i18n 验证附件和请求信息,直接从表单发送电子邮件 MailForm Rails 3这个 gem 构建在 ActiveModel 之上,展示如何从 Rails 中提取验证。命名和 i18n,而不需要自己实现。本自述文件指的...
模仿Rails的i18n界面。用法const I18n = require ( '@fiverr/i18n' ) ;const translations = require ( './translations.json' ) ;const i18n = new I18n ( { translations } ) ; 选项类型描述translations 目的...
如有疑问,请使用i18_routing谷歌论坛: 适用于Rails 2.3、3.0、3.1和3.2下一个版本的TODO(写于2010年6月9日) 处理同一资源名称的多个翻译(例如:嵌套和非嵌套资源) 处理名称空间转换(以及Rails3上的path_...
I18nTimezones I18n时区-此gem的目的是简单地提供时区转换。 该gem易于与需要i18n时区转换的其他gem结合使用,因此我们可以使用通用的i18n时区转换gem。 如果您要对时区和翻译做任何事情,则无需重新发明轮子并...
I18nLinter ...只需在Ruby on Rails项目的文件夹中输入i18n_linter ,然后观察可以国际化的字符串即可。 注意:仅报告ruby文件中的字符串。 $ cd my/ruby_on_rails/project $ i18n_linter [options]
百济I18n 这是一个小库,可以在JavaScript上提供Rails I18n的翻译。 从借来的特征: 多元化日期/时间本地化号码本地化语言环境回退资产管道支持还有更多! :)用法安装通过NPM npm install baiji-i18n 运行npm ...
MailForm库是专门为简化这一过程而设计的,它允许开发者直接从Rails的表单中发送邮件,并且提供了I18n(国际化)支持、验证功能以及添加附件和请求信息的能力。这个库由Plataformatec开发,其最新版本为bd43996。 ...
Ruby-i18n社区还提供了许多扩展和工具,如`i18n-tasks`用于管理翻译任务,`i18n-spec`用于测试翻译的正确性,以及`gettext_i18n_rails`等工具,它们提供了类似Gettext的翻译工作流程。 通过理解和掌握Ruby-i18n库...
i18n_tools 使用I18n库在 Rails 和 Ruby 应用程序中查找丢失和未使用的翻译的非常简单的 rake 任务。安装 gem install i18n_tools用法如果您在 Rails 中使用 bundler,请将以下内容添加到您的Gemfile : group :...
devise-i18n, 设计 gem的翻译 devise-i18n 设计"是一种基于warden的Rails 灵活认证方案"。 国际化( aka i18n ) 是一个"计算机软件适应不同语言。区域差异和目标市场技术要求的方法"。在控制器。模型和其他领域中支持...
您可以使用Gitter与我们聊天:Globalize建立在Ruby on Rails的I18n API上,以将模型转换添加到ActiveRecord模型。 换句话说,一种翻译实际用户生成内容的方法;例如, 您可以使用Gitter与我们聊天:Globalize建立在...
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:Bamboo monkey 修补 Rails I18n 模块,并将强制所有对 I18n.translate (I18n.t) 和 I18n.localize (I18n.l) 的调用返回所有可用语言环境中最长的翻译或本地化值。 出于显而易见的原因(猴子补丁 :anxious_face...
i18n-tasks可以与使用ruby 任何项目一起使用(Rails中的默认设置)。 将i18n任务添加到Gemfile中: gem 'i18n-tasks' , '~> 0.9.33' 复制默认: $ cp $( i18n-tasks gem-path ) /templates/config/i18n-tasks....
Ruby(不带Rails)如果要在不带Rails的情况下使用此库,则只需将i18n添加到Gemfile中:gem'i18n',然后使用一些翻译和默认语言环境配置I18n:I18n.load_path << Dir [File.expand_path (“配置/语言环境”)+...