#import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (retain, nonatomic) IBOutlet UILabel *languageee; @property (retain, nonatomic) IBOutlet UILabel *label1; @property (retain, nonatomic) IBOutlet UILabel *label2; @end
3.ViewController.m:
#import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; NSLocale * locale = [NSLocale currentLocale]; NSString * str = [locale displayNameForKey:NSLocaleIdentifier value:[locale localeIdentifier]]; self.languageee.text = str; self.label1.text = NSLocalizedString(@"name",nil); self.label2.text = NSLocalizedString(@"sex", nil); } - (void)dealloc { [_languageee release]; [_label1 release]; [_label2 release]; [super dealloc]; }
@end 4.創建xib的其他語言的版本,具體操作: 1.點擊項目(藍色的圖標),然後點擊打開PROJECT的項目圖標,打開Localizations,勾選上Use Base Internationalizatino,會自動創建一個Basexib文件,然後點擊+,添加其他的語言版本,本來默認的是english的,那麼我們在創建一個Chinese,第一個選項卡。 2.然後點擊xib,鼠標移動到最右邊選擇屬性那一欄最左邊的選項卡,打開Localization,勾選上相應的選項,支持的多語言文件。 3.點擊修改相應的ViewController.strings(Chinese)中的數據: 例如: /* Class = "IBUILabel"; text = "Label"; ObjectID = "8"; */ "8.text" = "Label"; /* Class = "IBUILabel"; text = "Label"; ObjectID = "11"; */ "11.text" = "Label"; /* Class = "IBUILabel"; text = "Label"; ObjectID = "14"; */ "14.text" = "Label"; /* Class = "IBUILabel"; text = "name"; ObjectID = "20"; */ "20.text" = "姓名"; /* Class = "IBUILabel"; text = "sex"; ObjectID = "24"; */ "24.text" = "性別"; /* Class = "IBUIButton"; highlightedTitle = "HaHa"; ObjectID = "28"; */ "28.highlightedTitle" ="HaHa"; /* Class = "IBUIButton"; normalTitle = "Button"; ObjectID = "28"; */ "28.normalTitle" ="Button"; /* Class = "IBUISegmentedControl"; 32.segmentTitles[0] = "First"; ObjectID = "32"; */ "32.segmentTitles[0]" ="First"; /* Class = "IBUISegmentedControl"; 32.segmentTitles[1] = "Second"; ObjectID = "32"; */ "32.segmentTitles[1]" ="Second"; 對應的English的文件也修改成英文版的 以上是本地化的view中靜態的label控件中的數據,如果是動態的,就是如果在.h文件相關聯的數據控件,那麼就要現在.m文件中先寫上例如:
self.label1.text = NSLocalizedString(@"name",nil); self.label2.text = NSLocalizedString(@"sex", nil);
這樣才方便在後面自動創建的配置文件中自動生成相應的注冊的對象。 4.自動生成對應的動態數據的文件 打開終端,輸入cd 然後將文件拖放在終端中,自動生成對應的路徑,然後輸入genstrings ./LocateDemo/*.m 會發現在項目中自動生成了一個Localizable.strings的文件,然後在對應的en.lproj和zh-Hans.lproj也就是兩個對應的語言的文件包裡面都復制一份這個文件, 然後導入到項目中,點擊相應的文件會發現自動生成了相應的字段 /* No comment provided by engineer. */ "name" ="小明"; /* No comment provided by engineer. */ "sex" ="男"; 將對應的中文和英文包中的文件都改成相應的語言 2.本地化應用程序名 創建SingleView的項目之後會發現有一個LocateDemo-Info.plist文件,雙擊打開文件,右擊->Show Row Keys/Values,拷貝CFBundleDisplayName,到InfoPlist.strings 中,也將這個文件本地化一下,生成兩中語言的文件,然後 在各個語言對應的文件中修改CFBundleDisplayName = "English";還有“中文”,後面測試的話會發現如果模擬器設置的語言不一樣,那麼這個程序對應的應用名也不一樣。 3.本地化圖片 例如兩種語言,我想根據英語和中文不同的環境導入不同的國旗,美國國旗和中國國旗,在界面中拖放一個ViewImage,然後就圖片資源拖放近項目,也點擊一下本地化,在生成一個 另外一種語言環境下的圖片,然後在對應的文件中修改這個圖片,但必須確保兩個文件中的圖片名字是一樣的才行。