iOS国际化---跟随系统语言

来源:互联网 发布:网络大电影众筹平台 编辑:程序博客网 时间:2024/05/22 07:04

跟随系统语言

  1. 程序名称国际化
  2. UI(内容)国际化
  3. 如何在运行的时候判断现在运行环境是哪个语言?

1 程序名称国际化
1.1 新建一个Single View app模版项目,命名为Localization:
这里写图片描述

1.2 然后New一个File,在Resource中添加新的 Strings File 名字为InfoPlist.strings(这个是固定的):
这里写图片描述

这里写图片描述
新建完成之后会生成InfoPlist.strings文件,把它拖进Supporting Files里。

1.3 选中InfoPlist.strings文件, 点击圈中的Localized…(本地化)。
这里写图片描述这里写图片描述
选择English,点击Localize
这里写图片描述

1.4 网络上很多配置方法不靠谱,因为新版的Xcode位置“+”号的位置换了,这里教大家正确的方法,点击项目—>选择Project—>选择Info—>点击“+”号
这里写图片描述
点击“+”号后,添加中文,当然也可以添加其他的语言,弹出对话框,nib文件看需要配,不属于本文范围,这里选择不配。只勾选InfoPlist.strings,然后Finish
这里写图片描述

配置完成之后,再看InfoPlist.strings便分成了两个文件。
这里写图片描述

1.5 添加完成后选中对应语言文件,比如InfoPlist.strings(English)的添加
CFBundleDisplayName=”Internationalization”;//这个就是你对应系统是English语言下的应用名字
这里写图片描述
InfoPlist.strings(Simplified)的添加 : CFBundleDisplayName = “国际化”;
这里写图片描述
1.6 好了,我们看看效果
运行,如果此时你的模拟器是中文,你会看到你的程序名称变成了 国际化:
这里写图片描述
来到设置里把语言设置成 English。此时程序名称变成了:Internationalization
这里写图片描述

2 UI(内容)国际化
2.1 添加多语言文件,名字为Localizable.strings这个是系统的语言文件这里写图片描述这里写图片描述
2.2 然后重复上面的1.3 , 配置完后效果
这里写图片描述

2.3 添加语言内容
Localization.strings English文件添加 “lableText” = “english value”;
这里写图片描述
Localization.strings English文件添加 “lableText” = “中文内容”;
这里写图片描述
在ViewController.m 中添加UILabel实验一下:

- (void)viewDidLoad {    [super viewDidLoad];    UILabel *label = [[UILabel alloc] init];    label.frame = CGRectMake(20, 40, 250, 60);    label.text = NSLocalizedString(@"lableText", @"");    [self.view addSubview:label];}

注意:这里用到方法 :NSLocalizedString(@”lableText”, @”“);
第一个参数(键),第二个参数(提示性语句,可不填) NSLocalizedString 方法(需要固定使用Localizable.strings语言文件名字);

2.4 运行:
模拟器中文状态下:
这里写图片描述
设置系统语言-切换英文
这里写图片描述

2.5 (方法扩展)添加多语言文件
我们选择使用自己的语言文件,而不是系统的localizable.string,因为在项目开发使用svn时,多人操作同一文件可能会造成冲突。
在Resource中添加新的Strings File:名字为CustomLanguage.strings(这个和上面两不一样可以随便起的)
这里写图片描述
2.5.1 剩下的配置步骤和上面两个一样,效果图:
这里写图片描述
注意:右面的面板只勾选你需要的语言,不勾选Base这里写图片描述
2.5.2 分别在CustomLanguage.string(English)和CustomLanguage.string(Simplified)添加内容如图:
这里写图片描述这里写图片描述
在ViewController.m 中再添加一个label1实验一下:

- (void)viewDidLoad {    [super viewDidLoad];    UILabel *label = [[UILabel alloc] init];    label.frame = CGRectMake(20, 40, 250, 60);    label.text = NSLocalizedString(@"lableText", @"");    [self.view addSubview:label];   UILabel *label1 = [[UILabel alloc] init];    labe1.frame = CGRectMake(20, 100, 250, 60);    label1.text = NSLocalizedStringFromTable(@"lableText1", @"CustomLanguage", @"");    [self.view addSubview:label1];}

注意:这里用到方法 :NSLocalizedStringFromTable(@”lableText1”, @”CustomLanguage”, @”“);
第一个参数(键),第二个参数(该语言文件的名字,必填),第三个参数(提示语,可不填)
2.5.3 运行:
模拟器中文状态下:
这里写图片描述
设置系统语言-切换英文:
这里写图片描述

3 如何在运行的时候判断现在运行环境是哪个语言?
3.1 获得所支持的语言

UserDefaults *defaults = [ NSUserDefaults standardUserDefaults ];    // 取得 iPhone 支持的所有语言设置    NSArray *languages = [defaults objectForKey : @"AppleLanguages" ];    NSLog ( @"%@" , languages);

运行,打印结果:

(

en,"zh-Hant","zh-Hans",fr,de,ja,nl,it,es,pt,"pt-PT",da,fi,nb,sv,ko,ru,pltr,uk,ar,hr,cs,el,he,ro,sk,th,id,"en-GB",ca,hu,vi

)

"zh-Hant"   繁体中文"zh-Hans", 简体中文

这段代码获取当前系统支持的语言。 

3.2 获取当前使用语言

NSArray *languages = [NSLocale preferredLanguages];NSString *currentLanguage = [languages objectAtIndex:0];NSLog ( @"%@" , currentLanguage);

打印结果:

en

用获取到的当前语言,和支持的语言做字符串对比,就可以知道是那种语言了。

if([currentLanguage isEqualToString:@"en"]){    NSLog(@"current Language:en");} 

PS:如果有什么不懂或者文章里不足之处欢迎留言!
it.zhangbao 原创,转载请注明博主与博文链接,3Q
http://blog.csdn.net/zhangbao_csdn/article/details/48531089
—— by it.zhangbao

1 0
原创粉丝点击