我们在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.自动生成对应的动态数据的文件

打开终端,输入cd 然后将文件拖放在终端中,自动生成对应的路径,然后输入genstrings ./LocateDemo/*.m
会发现在项目中自动生成了一个Localizable.strings的文件,然后在对应的en.lproj和zh-Hans.lproj也就是两个对应的语言的文件包里面都复制一份这个文件,
然后导入到项目中,点击相应的文件会发现自动生成了相应的字段

/* No comment provided by engineer. */

"name" ="小明";

/* No comment provided by engineer. */

"sex" ="男";

将对应的中文和英文包中的文件都改成相应的语言

2.本地化应用程序名

    创建SingleView的项目之后会发现有一个LocateDemo-Info.plist文件,双击打开文件,右击->Show Row Keys/Values,拷贝CFBundleDisplayName,到InfoPlist.strings
中,也将这个文件本地化一下,生成两中语言的文件,然后

在各个语言对应的文件中修改CFBundleDisplayName = "English";还有“中文”,后面测试的话会发现如果模拟器设置的语言不一样,那么这个程序对应的应用名也不一样。

3.本地化图片

例如两种语言,我想根据英语和中文不同的环境导入不同的国旗,美国国旗和中国国旗,在界面中拖放一个ViewImage,然后就图片资源拖放近项目,也点击一下本地化,在生成一个 另外一种语言环境下的图片,然后在对应的文件中修改这个图片,但必须确保两个文件中的图片名字是一样的才行。

测试结果:

切换至英文模式:


在setting中设置,切换回中文的

对应的应用文件名也是:

项目下载

[IOS]本地化的更多相关文章

  1. iOS本地化

    本地化与相机中显示英文  工程PROJECT -> info ->Localizations 添加相应的国际化语言  一.当你发现相机中显示英文,可以通过它设置 添加一项“Localize ...

  2. IOS本地化应用

    BK项目已完成7788,在项目的后期需要被翻译成多国语言版.为了适应全球多个国家使用多个存储. 应用本地化是分别对字符串.图片和 xib 或 storyboard 文件本地化,而传统的做法是对 xib ...

  3. IOS本地化。

    1,项目名本地化 点击项目,蓝色图标->info 最下面+号,添加chinese本地化. Supporting Files->infoPlist.strings 下会有两个文件,有一个是设 ...

  4. iOS 本地化应用程序(NSLocalizedString)

    App本地化的需要不用讲大家也都明白,本文将介绍一种简单的方法来实现字符串的本地化. 在不考虑本地化的情况下,我们如果在代码中给一个Button定义title,一般会这样写: btn.titleLab ...

  5. iOS本地化应用程序

    因为使用的是xcode4,应用程序本地化的问题跟以前的版本还是有些不同,在网上找了些资料对于xcode4以上的版本资料还是相对较少,有些最后要通过手动创建文件,这样操作实在是太麻烦,所以经过一个下午的 ...

  6. ios本地化多语言支持

    右键 -> new file -> resources -> strings file 一定要命名为: Localizable.strings 点击这个文件 -> xocde ...

  7. Xcode5和6上新建工程如何本地化启动页面

    建议阅读本篇文章前先具备iOS本地化的基本知识,Google中搜索“iOS本地化”,有成片的教程~~ 最近有个app需要支持英语.简体中文.繁体中文,由于启动页面上有文字,所以也不得不做下本地化处理. ...

  8. Xcode4.5 本地化,多语言设置

    网上已有很多关于ios本地化的博客和资料,由于部分原作者使用的Xcode版本较早,4.5以后的版本已不再支持该方法,后来也没有更新,因此在此写一点学习资料分享出来.废话不多说.     ios本地化主 ...

  9. 最全的iOS数据存储方法

    目的 项目准备运用的Core Data进行本地数据存储,本来打算只写一下Core Data的,不过既然说到了数据存储,干脆来个数据存储基础大总结!本文将对以下几个模块进行叙述. 沙盒 Plist Pr ...

随机推荐

  1. VC添加背景图片 的一种方法

    .如果程序是新建的对话框,要给其添加背景图片的步骤: 1)加入消息函数:afx_msg void OnPaint(); 2)BEGIN_MESSAGE_MAP(QueryDlg, CDialog) O ...

  2. Delphi的TService的輸入桌面切換(服务程序)(windows登录界面如何截图)(使用了OpenDesktop和GetThreadDesktop等API)

    dfm: object CopyDeskService: TCopyDeskService  OldCreateOrder = False  OnCreate = ServiceCreate  OnD ...

  3. mysqldump --flush-logs

    <pre name="code" class="html"><pre name="code" class="ht ...

  4. Android和java平台 DES加密解密互通程序及其不能互通的原因

    网上的demo一搜一大堆,但是,基本上都是一知半解(包括我).为什么呢?我在尝试分别在两个平台加密的时候,竟然发现Android DES 加密和java DES加密的程序不能互通.就是加密的结果不一样 ...

  5. Swift - 自定义单元格实现微信聊天界面

    1,下面是一个放微信聊天界面的消息展示列表,实现的功能有: (1)消息可以是文本消息也可以是图片消息 (2)消息背景为气泡状图片,同时消息气泡可根据内容自适应大小 (3)每条消息旁边有头像,在左边表示 ...

  6. js中获取jsp中的参数

    碰到一个问题需要再js中根据jsp中request的参数判断执行那段代码 第一种写法: if('${method}'=="add"){js代码段1}else{js代码段2} 第二种 ...

  7. C++异常中的堆栈跟踪

    C++语言的运行时环境是基于栈的环境,堆栈跟踪(trace stack)就是程序运行时能够跟踪并打印所调用的函数.变量及返回地址等,C++异常中的堆栈跟踪就是当程序抛出异常时,能够把导致抛出异常的语句 ...

  8. RotateDisp – 一键旋转显示画面 - 小众软件

    RotateDisp – 一键旋转显示画面 - 小众软件 RotateDisp – 一键旋转显示画面

  9. 安装Apache Felix OSGI Framework小记

    Felix是apache的开源OSGI服务框架,到 http://felix.apache.org/downloads.cgi 可以下载到最新的版本. 解压后目录结构如下: felix-framewo ...

  10. POJ2112_Optimal Milking(网洛流最大流Dinic+最短路Flody+二分)

    解题报告 农场有k个挤奶机和c头牛,每头牛到每一台挤奶机距离不一样,每台挤奶机每天最多挤m头牛的奶. 寻找一个方案,安排每头牛到某一挤奶机挤奶,使得c头牛须要走的全部路程中的最大路程的最小值. 要使每 ...