iOS应用的本地化

本文详细介绍了iOS应用本地化的过程,包括国际化与本地化的区别、本地化文件的创建与使用、如何添加不同语言本地化以及利用genstrings工具简化本地化工作流程。通过实践示例,读者可以轻松掌握iOS应用的多语言支持技巧。
摘要由CSDN通过智能技术生成

一、本地化

相信作为一个iOS开发者,大家都听说过app的国际化和本地化,首先来说明下什么是国际化,因为一开始我自己也没有分清楚这两个概念。

简单的说,国际化就是一个应用程序国际兼容性的设计过程,可以理解你的app可以在其他国家使用。比方有:

1.以用户的母语进行文本的输入和输出

2.处理不同的日期,时间和数据格式

3.利用适当的历法来处理数据

而本地化仅仅是应用的用户界面和资源翻译成为不同的语言,这个工作你可以自己完成,也可以交给被人完成。

二、本地化过程

在一般的编码过程中,我们的文本显示一般都是硬编码,但是在本地化的过程中,我们需要将这些文本单独的抽离出来,将他们放到一个单独的文件中。Xcode中使用带有".strings"扩展名的文件来存储和检索app中使用的字符串,以此来支持不同的语言。根据你ios设备的系统设置的语言,就可以通过一个简单的方法查找相应的字段返回本地化的字段。


你建立的本地文件里面的格式就是上图所展示的。你只要在编写的过程中遵循这样的格式就可以了。

注意:Localizable.strings是ios默认的文件名称,请不要随便的改变这个文件的名字。

然后在项目中,需要显示的代码换为


三、添加英语本地化

想要添加另外一种语音,首先点击你项目文件夹,在工程的右侧选中(project)不是target,你可以看见一个Localitions分区。点击下面的加号可以添加新的语言,我们添加中文。


这个时候,xcode已经为你做好了目录设置。使用finder你可以查看这个写目录


可以看到zh-Hans.lproj这个文件夹就是你用来本地化中文的。(注意xcode中应先建立Localizable.strings这个文件)

然后你点击这个文件在右侧你可以看到一个Location点击这个按钮可以添加要本地化的语言。


当然你想更改本地化的语言可以在上图的右侧进行更改。如果想要添加新的语言只要在project中点击locations选中你要添加的语言


然后会弹出来一个提示框,提示你想要本地化的文件,选择你想要本地话的文件即可


下面就是你在你的strings后缀的文件根据格式进行修改。选中中文的Localizable.strings(chinese(simplified))在里面修改将你需要用到的硬编码的地方的字段改为:

"OkButton"                                = "确定";

在你的代码中将使用

    label.text = NSLocalizedString(@"OkButton", @"确认键");

这样你就可以支持多重语言了。
当然在支持语言同时,你还可以进行图片,storeBored,程序名称的国际化。

四、在进行本地化的时候,你还可以使用ios sdk自带的一个工具genstrings进行处理,这个非常适合大型项目,好处是你可以在编码的时候不用管本地化的键值对,在编码完成之后你可以使用这个工具生成相应的键值对。

在我们项目一开始你就可以使用

btn.titleLable.text = NSLocalizedString(@"btn_title", nil);

这样的格式,

一开始我们还没有生成Localizable.strings文件。这是一个逆向的过程,也就是先写好调用过程,再生成strings资源文件。

当我们把所有的.m文件都修发好了,就该genstrings工具出场了。
  1. 启动终端,进入工程所在目录。
  2. 新建两个目录,推荐放在资源目录下。
    目录名会作用到Localizable.strings文件对应的语言,不能写错了。这里zh-Hans指简体中文,注意不能用zh.lproj表示。

mkdir zh-Hans.lproj
mkdir en.lproj

  3. 生成Localizable.strings文件

genstrings -o zh-Hans.lproj *.m
genstrings -o en.lproj *.m

  -o <文件夹>,指定生成的Localizable.strings文件放置的目录。
  *.m,扫描所有的.m文件。这里支持的文件还包括.h, .java等。

  4. 右键点击工程的Resources目录,选择“New Group”,添加两个目录zh-Hans.lproj和en.lproj。
  5. 在新建的group中添加刚刚生成的Localizable.strings文件。
  6. 最后在Localizable.strings文件中,修改每个key所对应的内容,就大功告成了。

说了一大堆,其实操作起来还是很简单的,总的来讲就是两条:

  1. 在代码里用NSLocalizedString获取要本地化的字符串
  2. 用genstrings扫描代码文件,生成Localizable.strings,然后加到工程中。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值