iOS国际化---跟随系统语言
来源:互联网 发布:网络大电影众筹平台 编辑:程序博客网 时间:2024/05/22 07:04
跟随系统语言
- 程序名称国际化
- UI(内容)国际化
- 如何在运行的时候判断现在运行环境是哪个语言?
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
- iOS国际化---跟随系统语言
- iOS国际化---不跟随系统语言
- iOS 应用程序内部国际化,不跟随系统语言
- iOS 应用程序内部国际化,不跟随系统语言
- iOS 应用程序内部国际化,不跟随系统语言
- iOS 应用程序内部国际化,不跟随系统语言
- iOS 应用程序内部国际化,不跟随系统语言
- iOS 应用程序内部国际化,不跟随系统语言 .
- iOS 应用程序内部国际化,不跟随系统语言
- iOS 应用程序内部国际化,不跟随系统语言
- iOS 应用程序内部国际化,不跟随系统语言
- iOS 应用程序内部国际化,不跟随系统语言
- iOS 应用程序内部国际化,不跟随系统语言
- iOS应用程序实现内部多语言国际化,不跟随系统语言改变的步骤
- iOS多语言(国际化)开发(跟随系统 + APP内手动设置)
- iOS -- 国际化,不跟随系统语言--(不能使用storyboard、xib等)可网络上搜索 storyboard国际化
- iOS -- 国际化,不跟随系统语言--(不能使用storyboard、xib等)可网络上搜索 storyboard国际化
- Android, IOS 史上最强多语言国际化,不仅第一次会跟随系统,而且会保存用户的语言设置
- poj1321
- hdu5128The E-pang Palace dfs暴力
- SINGLE NUMBER I & II & III
- C++面试题
- 看《暗杀》全智贤 去杀人都能美成神
- iOS国际化---跟随系统语言
- hdu5444 Elven Postman 二叉树建树
- CodeVS1394 数字串
- java__io__序列流(合并MP3)和对象序列化
- Android 绘图基础:Bitmap(位图)与Matrix(矩阵)实现图片5种操作(平移、旋转、错切、缩放、对称)
- ubuntu kylin上部署hadoop源码环境
- 自定义View3 仿联系人A-Z选择效果
- 0916_vbs加密与远程登录融合
- Android自定义控件打包,方便项目上使用