[ios開發]xcode4.5應用程式本地化

來源:互聯網
上載者:User

我們在開發一款APP的時候,總是會涉及應用程式國際化的事情,用ios裡專業術語叫做本地化,其實都是一個意思,簡而言之就是不同的系統語言,顯示不同的應用程式名稱、字串名稱、圖片名稱、等等,除了代碼,ios幾乎可以本地化所有類型的檔案。

 


那麼接下來我就記錄下來ios如何快速本地化項目,【記住千萬不要把解說文字直接以字元形式寫到各個.m檔案中,或是統一都編寫成靜態字串,這些都是不利於本地化的,等以後需要維護時,項目需求不同語言版本時,會很費事】。

 

 

 

一、本地化應用程式名稱

首先我建立了一個simple Application,應用程式預設語言是:english;APP名稱預設為建立項目的名稱。我們開啟應用程式-info.plist資訊清單檔:空白處右鍵,選擇Show Raw Keys/Values,就會看到應用程式名稱實際為CFBundleDisplayName,如所示,【注意:CFbundleName並不是APP名稱的屬性,而是CFbundleDisplayName】

 
 


接下來,開始給APP添加一個chinese語言支援,選中項目-Project-Localization-Add,如:

 


彈出的介面讓我們選擇需要本地化的檔案,infoPlist.strings是必不可少的,使用這個才能設定不同的APP名稱,ViewController我們暫且先夠選上,一會本地化xib的時候需要用到,如:

 



然後展開infoPlist.strings檔案(Engilsh),裡添加:CFBundleDisplayName="Localized",英文環境下會顯示這個名稱,chinese裡添加:CFBundleDisplayName="本地化",這是中文環境下顯示的名稱,如:

 
 


儲存一下,再次運行APP,然後切換一下系統語言,會發現APP顯示我們設定的名稱(如果發現沒有改變,是因為緩衝的緣故,嘗試-Project-clean一下,然後裝置中刪除我們的demo,再來build)

 


二、本地化xib檔案

選中要本地化的xib檔案,在右邊的屬性偵測器視圖中會發現多了一個localization選項,勾選我們要本地化的語言,會發現這個xib變成了和infoPlist.strings一樣的列表:xib(English)、xib(chinese),我們可以在各自的xib中建立不同語言所顯示的介面,等到APP需要顯示此xib時,系統會首先尋找當前語言下的xib檔案,如所示:

 

 

 
 

 


三、本地化字串

本地化字串需要一個Localize.settings檔案,在代碼中需要輸入字串的地方使用NSLocalizeString宏來定義字串。

原理:在代碼中將加入的字串加入NSLocalizeString宏中,啟動程式時,系統將根據語言載入相應的檔案得到其對應的字串檔案,這個字串可以通過系統將NSLocalizedString中的宏產生名為“Localizable.strings”的檔案,當然你可以自己去建立這個檔案,然後手動是添加對應的字串。

 


我們先手動建立這個檔案:選中項目-new file - Resource-Stringfile

 
 


命名一定要是:Localizable

然後選中建立的Localizable.strings檔案,在屬性偵測器的localization項點擊-Localizae,我們先添加English的本地化,再添加chinese的本地化。

 



現在發現這個檔案也變成了English和Chinese兩個,那麼我們在各自檔案中寫入:

 
 


繼續在代碼的viewdidload中,需要設定字串的地方:

 
 


NSlocalizeString第一個參數是內容,第二個參數是在系統產生Localize.strings檔案時,產生的注釋,不需要的話可以設定為nil

看一下效果:

 
 

 

 

 


四、圖片資源的本地化

我們可以向本地話字串一樣,把中英文圖片的名字分別存到中英文對應的strings檔案,然後通過NSLocalizedStringFromTable來擷取圖片名稱。


選中要本地化的圖片,在右邊的Inspector中 Localization下,點擊localize...

 
 


繼續上一次一樣的操作,添加English和chinese,我們發現這個圖片資源也分成了english和chinese的版本,如:

 
 


繼續要做的是給chinese的檔案設定(替換成)其語言下的圖片資源,如下:

 

 


儲存-clean後運行看一下:

 
 


同樣的avator.png圖片資源,在不同的語言環境下,顯示不一樣的圖片資源,很不錯吧?

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.