iOS 讀書筆記-國際化

來源:互聯網
上載者:User

標籤: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 讀書筆記-國際化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.