數數看,Internationalizing (國際化),是否是i + 18個字母 + n ………………javascript
顯而易見…多語言的支持可讓你的應用支持多語言……,好吧,這裏其實不單單是應用上多語言,在Chrome Store裏也會將你的應用名字、介紹等多語言化。
效果:
中文商店: https://chrome.google.com/webstore/detail/rgb%E8%BD%AChex/pbbmhedhahomalkbcigoejgllbbopofi?hl=zh-CN
英文商店:
https://chrome.google.com/webstore/detail/rgb%E8%BD%AChex/pbbmhedhahomalkbcigoejgllbbopofi?hl=en
會顯示不一樣的應用名稱,應用介紹,和應用介紹(一大段),甚至截圖,宣傳海報等……並且不會影響你在搜索結果的排名。java
Chrome Store在上傳應用時要求提供源碼打包的.zip格式,所以Chrome Store會讀取你的源碼文件,有一些固定的目錄格式,和清單列表。支持多語言化就是其中一個。
這是一個固定的文件夾,在你的應用中建立_locales文件夾,並在下面建立對應你語言代碼的文件夾,經常使用的幾個:web
一樣還有一個固定的文件格式就是messages.json,存放你的語言內容,在每一個語言代碼文件夾裏面。
而後你的文件結構看起來像這樣:
chrome
多語言的支持方法跟「定義一個變量而後調用它」有類似之處,在你須要的地方,用:json
__MSG_somethingYouNeed__
這種結構來替換掉,就是以兩個下劃線__包裹,用大寫的MSG作標識符後跟變量名。而後在對應的每一個語言代碼文件夾下聲明它的內容。segmentfault
如個人應用名在中文是「RGB轉Hex」,英文是「RGB to Hex」,那麼我在manifest.json中的"name"(定義應用名的鍵),的值寫MSG_appName,如:app
{ "name" : "__MSG_appName__" }
而後在/_locales/en/messages.json中對應,如:google
{ "appName": "RGB to Hex" }
,同理,在/_locales/zh_CN/messages.json中:spa
{ "appName": "RGB轉Hex" }
這樣,在中文Chrome Store和英文的Chrome Store會顯示不一樣的應用名稱。
建議使用駝峯方式命名。code
那麼如何讓你的應用支持「原生的」i18n呢,Chrome給了這樣一個API
chrome.i18n.getMessage( key );
也就是說,在你須要的地方chrome.i18n.getMessage('appName');就會根據系統語言顯示不一樣的應用名(固然不能用在manifest.json裏)
若是在一個方式、效果(交互)或是方法上糾結如何處理才能更「優雅」,Stay Native。
最後在的清單文件manifest.json中定義默認語言:
{ "default_locale": "zh_CN" }
若是有相似的疑問或開發中遇到的問題很是歡迎能與您一塊兒研究,@我或任何一種方式均可以。
最後把關於介紹如何i18n的文檔:Internationalizing Your App