[IOS]本地化
我们在IOS开发应用中,会碰到做好的一个应用,如何趋向国际化,也就是说支持多种语言?下面我就来简单演示一下,用一个Demo来实现中文和英文的实现。
实现步骤:
1.本地化项目中xib的view
1.在view中添加几个label,把对应的属性绑定好。
2.ViewController.h:
#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.自动生成对应的动态数据的文件
/* No comment provided by engineer. */
"name" ="小明";
/* No comment provided by engineer. */
"sex" ="男";
将对应的中文和英文包中的文件都改成相应的语言
2.本地化应用程序名
在各个语言对应的文件中修改CFBundleDisplayName = "English";还有“中文”,后面测试的话会发现如果模拟器设置的语言不一样,那么这个程序对应的应用名也不一样。
3.本地化图片
测试结果:
对应的应用文件名也是:
[IOS]本地化的更多相关文章
- iOS本地化
本地化与相机中显示英文 工程PROJECT -> info ->Localizations 添加相应的国际化语言 一.当你发现相机中显示英文,可以通过它设置 添加一项“Localize ...
- IOS本地化应用
BK项目已完成7788,在项目的后期需要被翻译成多国语言版.为了适应全球多个国家使用多个存储. 应用本地化是分别对字符串.图片和 xib 或 storyboard 文件本地化,而传统的做法是对 xib ...
- IOS本地化。
1,项目名本地化 点击项目,蓝色图标->info 最下面+号,添加chinese本地化. Supporting Files->infoPlist.strings 下会有两个文件,有一个是设 ...
- iOS 本地化应用程序(NSLocalizedString)
App本地化的需要不用讲大家也都明白,本文将介绍一种简单的方法来实现字符串的本地化. 在不考虑本地化的情况下,我们如果在代码中给一个Button定义title,一般会这样写: btn.titleLab ...
- iOS本地化应用程序
因为使用的是xcode4,应用程序本地化的问题跟以前的版本还是有些不同,在网上找了些资料对于xcode4以上的版本资料还是相对较少,有些最后要通过手动创建文件,这样操作实在是太麻烦,所以经过一个下午的 ...
- ios本地化多语言支持
右键 -> new file -> resources -> strings file 一定要命名为: Localizable.strings 点击这个文件 -> xocde ...
- Xcode5和6上新建工程如何本地化启动页面
建议阅读本篇文章前先具备iOS本地化的基本知识,Google中搜索“iOS本地化”,有成片的教程~~ 最近有个app需要支持英语.简体中文.繁体中文,由于启动页面上有文字,所以也不得不做下本地化处理. ...
- Xcode4.5 本地化,多语言设置
网上已有很多关于ios本地化的博客和资料,由于部分原作者使用的Xcode版本较早,4.5以后的版本已不再支持该方法,后来也没有更新,因此在此写一点学习资料分享出来.废话不多说. ios本地化主 ...
- 最全的iOS数据存储方法
目的 项目准备运用的Core Data进行本地数据存储,本来打算只写一下Core Data的,不过既然说到了数据存储,干脆来个数据存储基础大总结!本文将对以下几个模块进行叙述. 沙盒 Plist Pr ...
随机推荐
- ubuntu安装iscsi
ubuntu安装iscsi target端:apt-get install iscsitarget ubuntu安装iscsi initiator端:apt-get install open-iscs ...
- android onKeydown
package wyf.ytl; import android.app.Activity; import android.content.Context; import android.os.Bund ...
- "Invalid username/password or database/scan listener not up"
文档 ID … 11.2 RAC DBconsole Creation Fails With Error: "Invalid username/password or ...
- 14.2.5.6 Adaptive Hash Indexes 自适应Hash Indexes
14.2.5.6 Adaptive Hash Indexes 自适应Hash Indexes adaptive hash index(AHI) 让InnoDB 执行更加像在一个内存数据库里在, 在不牺 ...
- Android开发按返回键应用后台运行
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE ...
- [Usaco2008 Feb]Meteor Shower流星雨
去年偶们湖南遭受N年不遇到冰冻灾害,现在芙蓉哥哥则听说另一个骇人听闻的消息: 一场流星雨即将袭击整个霸中,由于流星体积过大,它们无法在撞击到地面前燃烧殆尽, 届时将会对它撞到的一切东西造成毁灭性的打击 ...
- CF 17B Hierarchy
Nick's company employed n people. Now Nick needs to build a tree hierarchy of «supervisor-surbodinat ...
- Ogre嵌入MFC傻瓜全然教程(三)
经过前两两篇博文的解说.我们已经完毕了渲染工作,但仅仅是渲染而没有交互性,本篇博文我们就来加上事件的处理方法. 首先我们须要为项目加入一个帧监听类:CMyFrameListener,为了直观,在这直接 ...
- Delphi事件的广播2
上篇文章写了将事件分离成类的方法来实现事件的广播,这次将参考观察者模式来实现事件的广播.模式中主要有这两个角色: 发布者:发布者保存着一张观察者的列表,以便在必要的时候调用观察者的方法. 观察者:观察 ...
- IE缓存的BUG 和其他浏览器的缓存问题
原文:IE缓存的BUG 和其他浏览器的缓存问题 1 .IE浏览器在异步请求的时候 为了偷懒 第二次请求的时候不会给后台请求相应,这样我们就无法从后台拿值, 这样的话 ,我们可以画个妆,蒙骗IE我们 ...