1、簡介 java
* 使用本地化功能,能夠輕鬆地將應用程序翻譯成多種語言,甚至能夠翻譯成同一語言的多種方言 app
* 若是要添加本地化功能,須要爲每種支持的語言建立一個子目錄,稱爲」本地化文件夾」,一般使用.lproj做爲拓展名 spa
* 當本地化的應用程序須要載入某一資源時,如圖像、屬性列表、nib文件,應用程序會檢查用戶的語言和地區,並查找相匹配的本地化文件夾。若是找到了相應的文件夾,就會載入這個文件夾中的資源 .net
2、默認的效果圖 翻譯
工程目錄結構 blog
運行效果圖(由於沒有使用本地化功能,因此無論用戶選擇什麼語言環境,運行的效果都是同樣的) 圖片
如今想在中文語言環境下,換另外一套實現,其中包括: ip
* 更改nib文件中的文字(nib本地化) 資源
* 更改登陸按鈕下面的圖片(圖片本地化) 字符串
* 更改對話框中的文字(Tip和Ok)(字符串本地化)
* 更改應用名稱(應用名稱本地化,即本地化Info.plist文件)
3、本地化前的準備
其實就是先建立好中文的本地化文件夾(zh-Hans.lproj),讓應用程序支持中文語言環境
選擇當前須要本地化的資源
選擇Finish後,會發現硬盤上多了一箇中文的本地化文件夾zh-Hans.lproj,至於en.lproj文件夾是英文的本地化文件夾,建立項目時默認就有的
項目中的MJViewController.xib、InfoPlist.strings文件左邊也多了個能夠展開的三角形,展開能夠發現分別都有2個版本的文件
MJViewController.xib(English)對應en.lproj文件夾中的MJViewController.xib文件
InfoPlist.strings(English)對應en.lproj文件夾中的InfoPlist.strings文件
MJViewController.xib(Chinese)對應zh-Hans.lproj文件夾中的MJViewController.xib文件
InfoPlist.strings(Chinese)對應zh-Hans.lproj文件夾中的InfoPlist.strings文件
準備工做作完後,就能夠開始展開本地化工做了
4、nib文件的本地化
打開MJViewController.xib(Chinese)文件,修改裏面的文字信息(這裏不修改圖片)
5、應用程序名稱本地化(Info.plist本地化)
知識背景:Info.plist中有個叫CFBundleDisplayName的key決定了應用程序的名稱
1.爲Info.plist添加一個key-value,讓應用程序支持名稱本地化,Info.plist就會去InfoPlist.strings加載CFBundleDisplayName對應的字符串
2.在InfoPlist.strings(English)文件中加入:
3.在InfoPlist.strings(Chinese)文件中加入:
6、圖片本地化
(這裏演示本地化home.png,nib文件中登陸按鈕下面的房子圖片)
1.單擊選中home.png,而後查看右上角的視圖
2.選了Localize表明會將home.png加入到英語的本地化文件夾en.lproj中去
3.添加圖片支持中文語言
4.查看下硬盤中home.png的狀況
5.並且項目中的home.png左邊也多了個能夠展開的三角形,展開能夠發現有2個版本的文件
home.png(English)對應en.lproj文件夾中的home.png文件
home.png(Chinese)對應zh-Hans.lproj文件夾中的home.png文件
6.用預先準備好的另一張圖片替換zh-Hans.lproj文件夾中的home.png
7.替換後查看項目中home.png的狀況
8.在代碼中照常使用圖片便可
7、字符串的本地化
1.建立一個字符串資源文件
2.文件名最好是Localizable.strings,若是使用其餘文件名,使用字符串時的調用會有些區別
3.爲Localizable.strings添加多語言支持(跟上面圖片本地化相似),選中Localizable.strings文件,查看右上角的視圖
4.選了Localize表明會將Localizable.strings加入到英語的本地化文件夾en.lproj中去
5.添加支持中文語言
6.查看下硬盤中Localizable.strings的狀況
7.並且項目中的Localizable.strings左邊也多了個能夠展開的三角形,展開能夠發現有2個版本的文件
Localizable.strings(English)對應en.lproj文件夾中的Localizable.strings文件
Localizable.strings(Chinese)對應zh-Hans.lproj文件夾中的Localizable.strings文件
8.在Localizable.strings(English)文件加入:
9.在Localizable.strings(Chinese)文件加入:
10.在代碼中使用NSLocalizedString(key, comment)來讀取本地化字符串,key是Localizable.strings文件中等號左邊的字符串,comment純粹是註釋
注意:若是你的字符串資源文件名不是Localizable.strings,如mj.strings,那麼你就得使用NSLocalizedStringFromTable()來讀取本地化字符串:
補充:生成字符串資源文件的另外一種方式(經過終端命令)
1.首先添加獲取字符串的代碼,好比在MJViewController.m
3.打開文件夾,已經生成了字符串資源文件
若是使用NSLocalizedStringFromTable(key, tbl, comment)來獲取字符串,資源文件會以tbl參數做爲文件名,好比
4.將資源文件導入項目便可,而後打開資源文件,能夠發現已經生成了key和comment
8、其餘文件的本地化
跟六中圖片本地化的原理是同樣的,重複六中的每一個步驟便可
9、最終效果演示
1.英文環境下
2.中文環境下