iOS开发-Xcode6应用程序国际化本地化
2015-09-24 00:00
211 查看
[置顶] iOS开发-Xcode6应用程序国际化本地化
分类: iOS开发2014-10-11 19:44 3116人阅读 评论(0) 收藏 举报ios应用国际化本地化xcodeiOS国际化终极教程
应用程序国际化和本地化
本文来自:http://blog.csdn.net/yangbingbinga/article/details/39998673转载请注明出处
1.国际化.首先创建一个工程,在 Localizations里面添加你需要支持的语言
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/30/f36199432a978e762ddb62bacb6d448d.jpg)
2.然后对要国际化的东西 如,故事板 右侧的属性 /inpector ,选择本地化语言 Localization里面勾选上
那么故事板上的控件都能支持国际化了
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/30/8b1d5a2b8d8495b524e8dfec7f1c65e3.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/30/7d564ba4d540519fc08c1f5c36829e93.jpg)
3.设置不同的语言环境下的应用显示名称,首先给 infoPlist.strings本地化
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/30/2be85db4913364c6d5d8afae062a07b4.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/30/b4ecba401634e74a58ebfe30d3774218.jpg)
例如,在 infoPlist.strings (English)中设置 英语环境下显示的名称 :
CFBundleDisplayName = “EnglishAppName”;
在 infoPlist.strings (Simplified)中设置 中文环境下显示的名称 :
CFBundleDisplayName = “中文程序名”;
4. 获取本地设备的语言
NSUserDefaults * def = [NSUserDefaults standardUserDefaults];
NSArray * arr = [def objectForKey:@"AppleLanguages"];
NSString * l = [arr objectAtIndex:0];
NSLog(@"%@",l);
获取当前使用语言
NSArray *languages = [NSLocale preferredLanguages];
NSString *currentLanguage = [languages objectAtIndex:0];
NSLog ( @"%@" , currentLanguage);
5. 给控件本地化
首先创建 Localizable.strings文件注意名称不要乱改
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/30/5851d4f6641175d3e55f15096e12d207.jpg)
然后对其属性选择本地化 Localization
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/30/db8b07be22ad02fb55b37dae1c81c2db.jpg)
然后给 Localizable.strings
中的英文和中文的文件分别写上不同的 键值对
如下:
English -localizable.string写上如下:
/*
Localizable.strings
aa
Created by ibokan on 14-10-11.
Copyright (c) 2014年 xx. All rights reserved.
*/
"string" = “aaa";
"image" = "a.png”;
中文情况下写一样的键一样的,值不一样的串即可
"string" = "啊啊啊";
"image" = "b.png”;
读取本地化的字符串:
label.text = NSLocalizedString(@"string", nil);//nil是一个注释,可以不用写
//UIImage * img = [UIImage imageNamed:NSLocalizedString(@"image", nil)];
注意:如果你的strings文件名字不是Localizable而是自定义的话,如wang.strings,那么你就得使用NSLocalizedStringFromTable()来读取本地化字符串:
NSLocalizedStringFromTable(@"welcome",@"wang", nil)
6.直接给 资源文件本地化: 如图片,音频,视频等等
直接选择一个图片
这里又分两种方法,第一种和本地化字符串方法类似,把中英文图片的名字分别存到中英文对应的strings文件,然后通过NSLocalizedString)来获取图片名称,如:
Localizable.strings(english)文件中加入:
"BtnCancel"="BtnCancelEn.png";
Localizable.strings(chinese)文件中加入:
"BtnCancel"="BtnCancelCn.png";
然后在代码中使用NSLocalizedString)来获取图片名称:
UIImage *image=[UIImage imageNamed:NSLocalizedString(@"BtnCancel", nil)]];即可
CCSprite *btnCancel = [CCSprite spriteWithSpriteFrameName:NSLocalizedString(@"BtnCancel", nil)];
btnCancel.position=ccp(s.width/2,s.height/2-40);
[self addChild:btnCancel z:2 tag:104];
第二种就比较正规化了:点中你要本地化的图片,如“icon.png”,然后XCode-> View-> Utilities -> File Inspector(也就是最右边的属性栏),在Localization中点“+”添加chinese (zh-Hans);在图片左边就会出现一个倒三角,点开就会出现(english)和(chinese)的2张图,并且在项目文件夹中会出现en.lproj文件和zh-Hans.lproj文件;en.lproj文件存放的是英文版图片,zh-Hans.lproj存放的是中文版图片,中英文图片名字一样,我们在文件夹中直接替换图片就可以了,最后使用时直接使用正常名字就行了,如:“icon.png”。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/30/d978c70cd9386ec042659b9f5510d4a4.jpg)
点开工程,可以看到了 3个语言的 工程目录:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/30/93a772846ef7fc11af2a4e207502da3c.jpg)
然后在 en 和 zh-Hans目录中替换同名的 图片即可,重启应用
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/30/bc314b18e3de8085992e1c0d64291eb7.jpg)
7.本地化其他文件
本地化其他文件和本地化图片第二种方法类似,先在Localization中添加语言,然后把对应版本拷贝到en.lproj和zh-Hans.lproj文件夹中,最后引用就行了。
8.其他方法:
使用 Object ID给 他附上字符串,注意,如果在代码中对同一个 Label也设置了 text那么将会覆盖之前设置的文本
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/30/3d9dbe2ff8a9ae77c076f96e809f60ea.jpg)
复制 Object ID
![](https://oscdn.geek-share.com/Uploads/Images/Content/201910/30/b83bc921b763bb135f58b8ef0e03dad8.jpg)
在
在两个 Main.string分别写上:
"Qub-Cw-tR8.text" = “中文 文本显示在 label上”;
"Qub-Cw-tR8.text" = “English Text”;
然后运行可以看到,label的文本被自动的设置了 文本
原文地址http://blog.csdn.net/yangbingbinga
相关文章推荐
- IOS版应用商店应用源码
- iOS经典讲解之线程锁NSLock案例(卖火车票)
- 【iPhone/iPad】苹果iOS9正式版更新升级及固件刷机教程
- iOS学习 用代码实现界面 控件注解
- iOS 动画之CALayer动画
- ios激情详解之动画3D旋转晃动
- iOS本地化国际化多语言支持
- 【iOS】KVC 和 KVO 的使用场景
- iOS9 News 应用
- iOS 开发中实现打电话功能实用代码
- 《ios应用开发详解》1-3章
- 《ios应用开发详解》目录篇
- ios开发,一些注意项和常见错误
- ios开发记录
- iOS开发:navigationcontrol…
- iOS开发:navigationcontrol…
- iOS开发:使用ToolBar切换视图
- iOS开发:NavigationBar
- iOS大典之点击旋转, 点击停止
- ios激情详解之动画页面翻转