標籤:ios 國際化
吐槽一下:國際化-我想說學習的這個工程好痛苦。或許是百度的原因,總是不能找到自己想要東西。找到的內容不是不詳細就是時間有點久了。讓我這種小白很頭痛。
下面記錄一下整個過程。
國際化是什麼 ?
說白了就是在不同的語言上APP上顯示不同的文字,也就是說如果你是美國人系統語言是英語,那麼APP就顯示英語,如果你是中國人,那麼APP就顯示漢語。
我們首先來做國際化準備。
為了方便我們下面的示範,只添加一個簡體中文就行了。
跳出下面介面
點擊finish就行了,至於我們上面選對號的兩個檔案我們下面說。
我們可以選也可以不選,但是如果全不選剛才添加語言會沒有添加上。
好了 ,下面一類一類的說明如何來國際化。
1、APP名稱國際化
我們建立的工程讓其在中文環境下的名稱叫做”中文”,在英文環境下顯示”English”
在Supporting Files 檔案中建立(其他地方也行,無所謂)
這個檔案的命名一定要用InfoPlist。
點擊建立的InfoPlish.strings
選擇要需要相容的語言
選擇好後
在InfoPlist.strings(Chinese(Simplified))檔案中添加
CFBundleDisplayName = “中文”;
在InfoPlist.strings(English)檔案中添加
CFBundleDisplayName = “English”;
好了,完成了。
運行一下試試
2.文本資訊國際化
按照上面的方法再來添加一個Strings File檔案,這次我們叫做Localizable(必須叫這個名)。
按照上面的方法添加上語言。最後為這樣
我們我看看應該怎麼操作。
我們想在頁面上添加一個UILabel 在中文環境下text為“中文”,英文環境下為“英文”。
我們再ViewController.m 的viewDidLoad方法中添加下面代碼
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(100, 100, 100, 100)]; label.text = NSLocalizedString(@"Title", @"1"); [self.view addSubview:label];
代碼中出現了一個新的方法NSLocalizedString,這個方法就是關鍵,第一個方法是key,第二個方法是預設值。我們需要這個key。這個方法會去Localizable.strings 檔案中尋找對應的值。
現在這個key 是“Title”所以我們要向Localizable.strings 中添加值。
在Localizable.strings 下的中文檔案中添加:
"Title" = "中文";
在英文檔案中添加:
"Title" = "英文";
這裡的兩個key一定要對應,不然找不到。
跑一下試試。
3.xib和故事板檔案國際化
我們在國際化過程中會遇到這樣的情況,就是我們拖到xib 和故事板中的很多控制項,上面的文字都寫好了,我們怎麼辦。
還記得上面我們剛添加語言的時候選擇的兩個檔案嗎?我說下面再說。就是這
我們現在來說它。
如果你當初都選上了,現在會是這樣的。
我們拖一個UILabel控制項到頁面上,設定text。我們想再不同的語言環境下顯示不同的文字。
點擊控制項
看到Object ID了嗎?我們現在就用它。
在對應的xib或故事版的.strings(語言)檔案下添加相應的內容。
在中文檔案下添加
"aLA-Na-IKQ.text"="中文";
這樣控制項在中文下就會顯示“中文”。
在英文下添加
"aLA-Na-IKQ.text"="English";
英文環境下會顯示“English”
好了跑一下試試。
4.圖片的的國際化。
在不同的環境下,可能會顯示不同的圖片。
好下面我們拖一張圖片到工程,然後點擊
還是如上面一樣,選擇好語言。
完成後會是這樣。
如果想中文圖片不用這張,換一張,那麼我們點擊圖片的中文版右鍵,選擇Show in Finder 將檔案夾中對用的圖片刪除然後將要變的圖片添加進去,注意名稱要和原來的一樣。
好了 運行一下試試。
5聲音的國際化
和圖片的國際化一樣處理,我們來看下是如何取值的就行了。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. NSBundle *thisBundle = [NSBundle mainBundle]; NSString *path = [thisBundle pathForResource:@"藍蓮花" ofType:@".mp3"]; NSLog(@"path=%@",path); return YES;}
會取出對應語言檔案中的檔案。
path=/Users/darknesswz/Library/Developer/CoreSimulator/Devices/20C6C60B-35BC-4C3E-B7E9-6D931EBA2C0F/data/Containers/Bundle/Application/9E28AFA6-5B32-4C65-AA39-883DD3DFFD08/YY.app/zh-Hans.lproj/藍蓮花.mp3
雖然名字還是“藍蓮花”但是我在檔案內容已經替換成許巍的“故鄉”了。
好了 ,不容易啊。有用點個咱。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
iOS 讀書筆記-國際化