簡介i18n
文章推薦指數: 80 %
... 與可選的區域編碼(Country code)來指定,其中語言編碼是 ISO-639 定義,由兩個小寫字母代表,例如"ca"表示嘉泰羅尼亞文(Catalan),"zh"表示中文(Chinese)。
回
Rails目錄
如果一個應用程式在設計時,可以在不修改應用程式的情況下,根據不同的使用者直接採用不同的語言、數字格式、日期格式等,這樣的設計考量稱為國
際化(internationalization),簡稱i18n(因為internationalization有18個字母)。
國際化的重要觀念之一是地區(Locale)資訊,地區資訊代表了特定的地理、政治或文化區,地區資訊可由一個語言編碥(Language
code)與可選的區域編碼(Countrycode)來指定,其中語言編碼是
ISO-639
定義,由兩個小寫字母代表,例如"ca"表示嘉泰羅尼亞文(Catalan),"zh"表示中文(Chinese)。
區域編碼則由兩個大寫字母表示,定義
在ISO-3166,
例如IT表示義大利(Italy)、TW表示台灣(Taiwan)。
Rails中地區(Locale)資訊可使用字串設定,若要同時指定語言與區域,慣例上使用-區
隔,例如"zh-TW",應用程式預設的地區設定可用I18n.default_locale取
得,如果沒有作任何設定,預設是"en",可設定
config/application.rb中的config.i18n.default_locale選
項來指定。
例如:
config.i18n.default_locale
="zh-TW"
應用程式採用的地區資訊由I18n.locale決定,預設值與I18n.default_locale相
同,也就是"en"。
地區資訊要搭配翻譯詞彙檔來使用,預設翻譯詞彙檔的載入路徑為config/locales,例如應用程式預設會有個en.yml如下:
en.yml
#SamplelocalizationfileforEnglish.Addmorefilesinthisdirectoryforotherlocales.
#Seehttps://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocaleforstartingpoints.
en:
hello:"Helloworld"
舉例來說,如果要在畫面上呈現多國語言,可以如下使用I18n.t方法指定字串或Symbol:
如果I18n.locale的值是"en",那麼就會尋找en.yml中hello:的對應伺彙,假設你有個zh-TW.yml:
zh-TW.yml
zh-TW:
hello:"哈囉!世界!"
如果你設定I18n.locale為"zh-TW",
那麼就會尋找zh-TW.yml中hello:對應詞彙。
其實yml主檔名無關緊要,主要是yml第一層要對應地區設定,才有辦法找到對應詞彙。
如果找不到對應詞彙,那就會直接使用指定的Symbol,例如:hello就
顯示Hello,如果是:hello_world就會顯示Hello
World,如果想指定沒有對應詞彙時的預設詞彙,可以使用:default:
"Hello!"%>
:default也可以設定尋找順序。
例如找不到:hello就尋找:hi,要不然就使用最後指
定的文字:
[:hi,"Hello!"]%>
I18n.t方法可以直接指定:locale選項。
例如:
"en"%>
"zh-TW"%>
"zh-GB"%>
如果也存在著"zh-GB"對應翻譯詞彙,這會顯示如下的結果:
如果你如下撰寫:
en.yml
en:
hello:"Hello%{name}"
那麼I18n.t方法可以直接如下指定%{name}的
文字:
params[:name]%>
延伸文章資訊
- 1模板:ISO 639 name lo - 中文乐谱库
模板:ISO 639 name lo. 出自中文乐谱库. 跳至導覽 跳至搜尋. 寮語Lua錯誤mw.title.lua的第206行:too many expensive function calls.
- 2i18n 国际化的语言代码标准 - Altair's Blog
ISO 3166. 中文可以分为简体中文和繁体中文,ISO 639 明显不够用了。 于是出现了用国家或地区的代码来 ...
- 3簡介i18n
... 與可選的區域編碼(Country code)來指定,其中語言編碼是 ISO-639 定義,由兩個小寫字母代表,例如"ca"表示嘉泰羅尼亞文(Catalan),"zh"表示中文(Chine...
- 4ISO 639-6中文維基百科殘存收集
本頁面每一個對應語言應當鏈入中文維基百科頁面,鏈入的連結格式應為 [[:w:从网址复制而来的条目名称|从网址复制而来的条目名称]] 。
- 5ISO 639:f - 其它語言- 維基百科,自由的百科全書
您現在使用的中文變體可能會影響一些詞語繁簡轉換的效果。建議您根據您的偏好切換到下列變體之一:大陆简体、香港繁體、澳門繁體、大马简体、新加坡简体、臺灣正體。