簡介i18n

文章推薦指數: 80 %
投票人數:10人

... 與可選的區域編碼(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]%>



請為這篇文章評分?