cocoa应程序本地化之infoPlsit.strings文件

本文介绍了如何在iOS应用中实现本地化,重点讲解了使用infoPlist.strings文件进行本地化设置的方法。包括手动创建和通过genstrings工具创建strings文件的步骤,以及在代码中如何使用这些文件进行本地化操作。同时提到了CFBundleDisplayName键在程序名称本地化中的作用。

在我们做项目中,有时候需要用到本地化语言设置。比如我们要做一个项目除了默认支持英文,我们还想让它支持中文,日语等其它国家语言。这个时候就需要用到infoPlist.strings文件了。当然也可以在项目中自己创建.strings文件。标准的.strings文件它包含了一个或多个键值对(key-value pairs)作为组成部分,key和vlaue在strings文件中,分别是用双引号括起来,并用等号连接的,比如 "welcome"="welcome to use this app..."; 左边welcome就是一个key,这个key也可以不用双引号。右侧就是key对应的value,这个value一定要用双引号。

对于本地化一个典型的应用程序至少有一个.strings文件。那个strings文件在你工程文件夹下的xx.lproj文件夹下面。如下图所示:


en代表:English。zh-Hans代表:中文汉语。

strings文件的创建有两种方式,一种可以手动创建,另一种可以通过代码创建,通过代码创建需要借助命令行工具genstrings。下面分别介绍创建两种方式的步骤

第一种:

手动创建strings文件方式

在xcode软件打开工程界面选中File->New->File...或者command+N,选中Resource中的Strings File


下一步,命名为Localizable这个是默认的名字,当然你也可以命名为其他的。这样就会在工程目录下,生成一个Localizable.strings文件。在工程的info设置里。找到Localizations,点击+添加其他本地化语言,如下图:


同样的方法可以添加其他strings文件。点击某一个strings文件,在最右侧区域找到如下位置:


点击Make Localized按钮,可以添加前面我们添加的语言,成功之后,在Localizable.strings文件下就会有两个strings文件。



创建和设置完成之后,就可以在代码中使用了。

第二种方式,使用genstrings工具在代码中创建。

使用genstrings命令行创建,至少需要两个参数,其余相关参数可以打开终端man genstrings

1)一系列的.m原文件。如果你不知道那个.m文件会用到strings文件,那么就使用*.m。就是工程下所有的.m文件

2)输出目录。

命令如下所示

 genstrings -o en.lproj   *.m


用命令行的优势在于,可以创建strings,比较新旧版本,再决定把哪个版本加入到工程中。还可以更新已经存在的strings文件,


在代码中.strings的使用的使用:

系统提供了几个宏函数,如下图所示。加载的本质其实就是NSBundle加载xxx.strings,根据key值,得到value,然后返回给我们使用。


如果你使用的示第一个,那么tableName必须是Localizable.也就是默认的。如果你使用的是test.strings文件去本地化,那么可以调用第二个宏函数。tableName就是test.

第三个宏函数表示在指定bundle中去加载strings文件,并获取key所对应的value值。比如你有时候不需要用应用程序的主bundle去加载,仅仅只是需要在一个Framework或者plgu-in去加载strings文件。

strings文件里一个比较重要的key值就是CFBundleDisplayName.这个是在Dock上,显示程序名的,可以把这个key值放在 infoPlist.strings文件里。在程序的xx.plist文件里添加一个键值对,Key值添加Application  has localized display name  它的Type设置为Boolean ,Value设置为YES。这样就可以本地化应用程序名在dock中显示相应的语言了。

如下图所示:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值