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

打开终端,输入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中设置,切换回中文的

对应的应用文件名也是:

项目下载

时间: 2024-08-11 18:13:54

[IOS]本地化的相关文章

使用IconFont减小iOS应用体积

点点iOS项目本身功能较多,导致应用体积也比较大.但是手机淘宝集成时对插件包大小有要求.因此点点iOS团队使用了一些方法来缩小插件包体积,比如部分业务只放在独立版.图片压缩(PNG大图转成JPG,ImageAlpha与ImageOptim对PNG图片压缩).部分大图安装后从网络下载.近期小虎提出使用IconFont技术减小图片体积,让我在这这方面做了一些研究.最终将IconFont应用在iOS项目中,取得了不错的效果.如果你懒得看这么长的文,那么直接去看IconFont项目吧. 简介 IconF

如何做一款成功的应用

  绝大多数应用都失败了. 这个残酷的现实令很多幻想破灭的开发者开始认为,在Apple store中成功就像在淘金热潮中致富一样:你所需要的仅仅是运气. "运气论"这种想法是危险的,它就像是用来减轻失败痛楚的麻醉药.感到痛苦是件好事,这样才能看到问题所在.如果我的应用失败了,我会寻找失败 的原因.与其埋怨那些超出你控制之外的因素,为什么不看看像tap tap tap和Tapbots这些公司做了些什么,可以让他们一次次的成功. 尽管采用一套毫无缺陷的模式是几乎不可能的,但朝着这个方向工作

IOS开发:应用程序多语言本地化解决方案

  多语言在应用程序中一般有两种做法: 一.程序中提供给用户自己选择的机会; 二.根据当前用户当前移动设备的语言自动将我们的app切换对应语言. 第一种做法比较简单完全靠自己的发挥了,这里主要讲第二种做法,主要分一下几点: 1.本地化应用程序名称 2.本地化字符串 3.本地化图片 4.本地化其他文件 1.本地化应用程序名称 (1)点击"new file"然后在弹出窗口左侧选择IOS的resource项,在右侧就可以看到"String File"的图标.创建这个文件,

iOS开发中将文本信息本地化

文本信息本地化在本地化工作中占有很大的比例.包括了:应用名称本地化.系统按钮和信息本地化,以及静态文本信息本地化. 系统按钮和信息本地化 还记得天气预报应用背后的"完成"按钮吗,它在中文环境下是"完成",在英语环境下是"Done". 开发中将文本信息本地化-ios开发本地化"> 还有一些系统给我们的提示信息,连接蓝牙设备时的系统提示.它在中文环境下是中文提示,在英语环境下是英文提示. 系统按钮上的文本和系统提示信息的文字我们都是不

iOS开发中将资源文件本地化

资源文件包括:图片文件.音频文件以及前文提到的Localizable.strings等文件,它们的特点是都是随着应用一起打包发布.但就本地化而言无论是图片文件还是音频文件都必须实现的步骤都是类似的,因此我们重点介绍图片文件的本地化. 资源文件的本地化,也是需要准备好几个本地化版本的文件.图片需要本地化,就是要创建几个版本的本地化文件.例如,我们要实现一个游戏的控制画面,画面中有控制关闭或者打开背景音乐的按钮和音效按钮,它们是图片按钮,上面的文字是图片上的文字,因此需要图片的本地化的. 开发中将资

iOS开发:Web应用简单本地化

 目前大多数的企业级IOS应用还是以报表和公文审批为主,而且应用的发展趋势必将是朝Web方向发展的,虽然Native App有着无法比拟的灵活性. 如何将IOS上的一个Web页面本地化呢? 1.编写一个Native App,然后内嵌WebBroswer 2.直接用浏览器打开应用,然后将其"添加至到主屏",这样下次就不需要输入网址了 显而易见,方法2是最灵活,最简便的方法.通过这个方式我们可以扩展,将一个众多应用入口集成到一个页面里面,然后对这个页面统一创建一个桌面入口. 通过Web的方

ios多种语言的本地化思路

  ios程序实现多种语言的本地化办法,最近要对一款游戏进行多语言本地化,在网上找了一些方案,加上自己的一点点想法整理出一套方案和大家分享! 多语言在应用程序中一般有两种做法: 一.程序中提供给用户自己选择的机会; 二.根据当前用户当前移动设备的语言自动将我们的app切换对应语言. 第一种做法比较简单完全靠自己的发挥了,这里主要讲第二种做法,主要分一下几点: 1.本地化应用程序名称 2.本地化字符串 3.本地化图片 4.本地化其他文件 1.本地化应用程序名称 (1)点击"new file&quo

iOS开发那些事-iOS应用本地化-文本信息本地化

文本信息本地化在本地化工作中占有很大的比例.包括了:应用名称本地化.系统按钮和信息本地化,以及静态文本信息本地化. 系统按钮和信息本地化 还记得天气预报应用背后的"完成"按钮吗,它在中文环境下是"完成",在英语环境下是"Done". 还有一些系统给我们的提示信息,连接蓝牙设备时的系统提示.它在中文环境下是中文提示,在英语环境下是英文提示. 系统按钮上的文本和系统提示信息的文字我们都是不能修改的,但是如果我们不进行本地化的设置,即便是这些基本信息也

IOS 解决推送本地国际化 loc-key 本地化失败的问题_IOS

正文 一.准备 推送本地国际化官方文档: {"aps":{"alert":{"title":"Shou","loc-key":"notification_push_live","loc-args": ["over140","broadcast test"]},"badge":0,"sound&quo