iOS学习笔记18—iOS应用本地化

iOS学习笔记18—iOS应用本地化


一、概述

本地化iOS应用一般包括如下几个方面的本地化工作:

1、本地化xib文件;

2、本地化图像;

3、本地化应用程序显示名称;

4、本地化字符串。


二、具体实现

用一个实际的例子来说明具体实现方式吧,先新建一个名为LocalizedDemoiOS工程,初始化情况下,只有默认为English的本地化信息。


1、本地化xib文件

XCode中点击LocalizedDemo项目文件—PROJECT—LocalizedDemo—Info,可以看到Localization部分下面Language只有English一项。

点击Localization下面的加号(+)按钮,会弹出一个本地化语言列表,选择需要增加的本地化语言,比如我选Chinese(zh-Hans),这个是简体中文,然后会弹出一个对话框,里面包括需要本地化为简体中文的资源,本工程中有ViewController.xibInfoPlist.strings,点击Finish

工程中的ViewController.xibInfoPlist.strings文件旁就有一个可以展开的三角形了,展开可以看到他们有两个子项:EnglishChineseEnglish资源位于工程目录的en.lproj文件夹中,Chinese资源位于工程目录的zh-Hans.lproj文件夹中。

这样就完成了xib的本地化。

iOS设备当前语言是English时,会调用ViewController.xib(English)

iOS设备当前语言是中文简体时,会调用ViewController.xib(Chinese)

其他语言xib的本地化类似。

这种方式在于能够迅速的处理多语言本地化,可以根据不同语言的文本长度直接在xib中调整控件大小,但如果需要本地化的语言种类非常多,项目中xib文件也很多,那么项目中就充斥着太多太多的xib资源文件,感觉非常不好。


2、本地化图像

在步骤1中不同的本地化xib文件中的UIImageView选用不同的图片就能完成图片的本地化。


3、本地化应用程序显示名称

在步骤1中的不同本地化InfoPlist.strings文件中设置:

CFBundleDisplayName = "APPNAME";

"APPNAME"改成想要显示的本地化名字即可完成应用程序名称的本地化。


4、本地化字符串

假设在ViewController.xib有一个UILabel,将其文本赋值如下:

label.text = NSLocalizedString(@”Hello World”, @”The test label”);


启动/Application/Utilities/Terminal.appcdLocalizedDemo目录,执行如下指令:

genstrings ./LocalizedDemo/*.m

命令执行完后将在项目工程目录下生成一个名为Localizable.strings的新文件,将其导入到工程中。

Xcode中选中Localizable.strings,选择XCode菜单—View—Utilities—Show Utilities,选择Localization,选择需要本地化的语言,即可完成。

这样,在Localizable.strings可以看到一个能展开的三角形,展开后能看到所有已经本地化的语言。

需要注意的是,还要对Localizable.strings对应的本地化语言做修改,因为它默认是会以某一个语言为模板复制的。比如,中文本地化默认如果以English为模板,英文本地化字符内容为:

/* The test label */

"Hello, World" = "Hello, World";

那么中文本地化初始化值也是:

/* The test label */

"Hello, World" = "Hello, World";

需要将中文等号后面的修改:

/* The test label */

"Hello, World" = "你好,世界";

注意等号前面的字符串是本地化字符的key,不能随意修改,若修改了它,需要重新生成本地化字符串文件。


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值