ios程序本地化---nib版本

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)文件中加入:

[java]  view plain copy
  1. CFBundleDisplayName="Localization";  

3.在InfoPlist.strings(Chinese)文件中加入:

[java]  view plain copy
  1. CFBundleDisplayName="本地化";  

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.在代碼中照常使用圖片便可

[java]  view plain copy
  1. [UIImage imageNamed:@"home.png"];  
注意 本地化完圖片文件,記得Clean一下項目,並且最好先刪除應用程序,再從新安裝


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)文件加入

[java]  view plain copy
  1. Tip="Tip";  
  2.   
  3. Ok="Ok";  

9.Localizable.strings(Chinese)文件加入:

[java]  view plain copy
  1. Tip="提示";  
  2.   
  3. Ok="好的";  


10.在代碼中使用NSLocalizedString(key, comment)來讀取本地化字符串,key是Localizable.strings文件中等號左邊的字符串,comment純粹是註釋

[java]  view plain copy
  1. NSString *tip = NSLocalizedString(@"Tip", nil);  
  2. NSString *ok = NSLocalizedString(@"Ok", nil);  
若是沒有對字符串進行本地化 或 者 找不到key對應的 值, NSLocalizedString將直接返回key這個字符串

注意:若是你的字符串資源文件名不是Localizable.strings,如mj.strings,那麼你就得使用NSLocalizedStringFromTable()來讀取本地化字符串:

[java]  view plain copy
  1. NSLocalizedStringFromTable(@"Tip", @"mj", nil);  

補充:生成字符串資源文件的另外一種方式(經過終端命令)

1.首先添加獲取字符串的代碼,好比在MJViewController.m

[java]  view plain copy
  1. NSString *tip = NSLocalizedString(@"Tip", @"dialog title");  
  2. NSString *ok = NSLocalizedString(@"Ok", @"dialog button");  

2.打開終端,定位到MJViewController.m所在的文件夾,輸入genstrings命令,生成字符串資源文件


3.打開文件夾,已經生成了字符串資源文件

若是使用NSLocalizedStringFromTable(key, tbl, comment)來獲取字符串,資源文件會以tbl參數做爲文件名,好比

[java]  view plain copy
  1. NSString *tip = NSLocalizedStringFromTable(@"Tip", @"mj", @"dialog title");  
  2. NSString *ok = NSLocalizedStringFromTable(@"Ok", @"mj", @"dialog button");  
生成的資源文件爲: mj.strings


4.將資源文件導入項目便可,而後打開資源文件,能夠發現已經生成了key和comment

[java]  view plain copy
  1. /* dialog button */  
  2. "Ok" = "Ok";  
  3.   
  4. /* dialog title */  
  5. "Tip" = "Tip";  


8、其餘文件的本地化

跟六中圖片本地化的原理是同樣的,重複六中的每一個步驟便可


9、最終效果演示

1.英文環境下

 

  


2.中文環境下

 

 

相關文章
相關標籤/搜索