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

来源:互联网 发布:b超3个数据怎么看 编辑:程序博客网 时间:2024/06/05 16:03

在我们做项目中,有时候需要用到本地化语言设置。比如我们要做一个项目除了默认支持英文,我们还想让它支持中文,日语等其它国家语言。这个时候就需要用到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中显示相应的语言了。

如下图所示:



0 0
原创粉丝点击