目錄
- App名稱國際化
- 圖片摄狱、文字國際化
- 強制默認(rèn)顯示某種語言
一、App名稱國際化
按照圖示的步驟操作就行
1.添加要國際化的語言
2.添加以InfoPlist.strings為名稱的strings文件霍比。查到的資料都說需要名稱一模一樣才能使用,沒試過其他的名字暴备。
3.選中新建好的InfoPlist.strings悠瞬,點擊Localize按鈕,添加語言涯捻。
4.分別在對應(yīng)的strings文件中填寫App名稱就可以了浅妆。
5.設(shè)定開發(fā)語言
ps:如果系統(tǒng)為有對應(yīng)string文件的語言時,可以正常顯示障癌。
如果系統(tǒng)為無對應(yīng)string文件的語言時凌外,刪除App重裝后會跟隨設(shè)定的開發(fā)語言顯示;直接修改系統(tǒng)語言時會跟隨上一次有對應(yīng)string文件時的語言顯示涛浙。
二康辑、圖片摄欲、文字國際化
首先創(chuàng)建一個string文件,名稱為Localizable.strings疮薇。然后分別添加對應(yīng)的關(guān)鍵字胸墙。步驟同InfoPlist.strings 此處不再贅述。
代碼如下:
UILabel *title = [[UILabel alloc]init];
title.frame = CGRectMake(10, 70, SCREEN_W-20, 30);
title.text = NSLocalizedString(@"country_name", nil);//第二個參數(shù)可以注釋 也可傳nil
[self.view addSubview:title];
UIImageView *pic = [[UIImageView alloc]init];
pic.frame = CGRectMake(10, 120, SCREEN_W-20, 200);
pic.contentMode = UIViewContentModeScaleAspectFit;
pic.image = [UIImage imageNamed:NSLocalizedString(@"national_flag", nil)];
[self.view addSubview:pic];
對應(yīng)在不同系統(tǒng)語言下的顯示效果
ps:我的項目中只做了簡體中文按咒、英文和日文的語言設(shè)置迟隅,如果系統(tǒng)語言為韓文時安裝App,App中語言會根據(jù)我設(shè)置的開發(fā)語言顯示為英文励七。如果在App已安裝后更改系統(tǒng)語言為韓文智袭,則會跟隨App上一次的語言設(shè)置作相同的顯示。這樣并不符合我的項目需求掠抬,因此加入了下方的第三部分吼野。
三、強制默認(rèn)顯示某種語言
需求:在系統(tǒng)語言選定為中文時顯示為中文剿另,日文時顯示為日文,其他情況下全部作英文顯示贬蛙。
因此需要添加系統(tǒng)語言讀取雨女,經(jīng)過判斷后直接調(diào)用我需要的某種語言對應(yīng)的值來顯示。
//在AppDelegate.m中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
NSArray *languages = [NSLocale preferredLanguages];
NSString *language = [languages objectAtIndex:0];//第一個就是系統(tǒng)當(dāng)前的語言
if ([language hasPrefix:@"zh"]) {//檢測開頭匹配阳准,是否為中文
[[NSUserDefaults standardUserDefaults] setObject:@"zh-Hans" forKey:@"appLanguage"];//App語言設(shè)置為中文
}else if ([language hasPrefix:@"ja"]){
[[NSUserDefaults standardUserDefaults] setObject:@"ja" forKey:@"appLanguage"];//App語言設(shè)置為日文
}else{//其他語言
[[NSUserDefaults standardUserDefaults] setObject:@"en" forKey:@"appLanguage"];//App語言設(shè)置為英文
}
return YES;
}
//在ViewController.m中
#define SCREEN_W [[UIScreen mainScreen] bounds].size.width
#define SCREEN_H [[UIScreen mainScreen] bounds].size.height
//用來讀取語言文件和返回的value值
#define Localized(key) [[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"]] ofType:@"lproj"]] localizedStringForKey:(key) value:nil table:@"Localizable"]
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
UILabel *title = [[UILabel alloc]init];
title.frame = CGRectMake(10, 70, SCREEN_W-20, 30);
title.text = Localized(@"country_name");
[self.view addSubview:title];
UIImageView *pic = [[UIImageView alloc]init];
pic.frame = CGRectMake(10, 120, SCREEN_W-20, 200);
pic.contentMode = UIViewContentModeScaleAspectFit;
pic.image = [UIImage imageNamed:Localized(@"national_flag")];
[self.view addSubview:pic];
UILabel *forceTitle = [[UILabel alloc]init];
forceTitle.frame = CGRectMake(10, 340, SCREEN_W-20, 30);
forceTitle.text = Localized(@"force_language");
[self.view addSubview:forceTitle];
}
本篇demo:CYLocalization
更多內(nèi)容請參考:iOS國際化