Cocoa程序支持多国语言环境

Posted by Elton's Blog on November 1, 2009

当你的Cocoa程序面向多个不同语言国家的用户时候,通常需要配置你的应用的多国语言环境,而不是单独编译几个不同的语言版本。

1. nib/xib多国语言支持

nib或xib文件,支持多国语言很简单,只需在你的nib/xib文件右键点击,选择Get Info菜单。 点击最下面的Add Localization按钮 [caption id=”attachment_446” align=”alignnone” width=”300” caption=”xib添加多国语言支持”]xib添加多国语言支持[/caption]

在弹出的窗口中输入你要支持的语言编号, 如zh_CN(简体中文)、zh_TW 或者 zh_HK(繁体中文),其他几个常用的国家语言可以不是编号而是国家语言名称,如: 日语:Japanese 德语:German 西班牙语:Spanish 法语:French

之后编辑nib/xib文件中的文字,图片后保存就可以了。

2. 程序中引用多国语言

建立Localizable.strings文件

在项目中点右键,选择Add->New File 在列表中选择Strings File,也可以取别的名字,比如MyApp.strings

这个文件如果包含非拉丁字符的话,一定要保存为utf-8格式,如上图中的File Encoding中的设置。

.strings文件的内容可以是标准的plist格式,也可以是旧的列表格式:

<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">


    mykey
    myvalue
        ….


字符串如果要换行的话,直接按回车换行,不要写成n这种形式。

或者直接使用旧式的列表格式:

"mykey" = "myvalue";
…

注意每行后面加分号。

如果你使用的是Localizable.strings,那么你在程序中可以这样获取字符串:

NSLocalizedString(@"mykey", nil)
 

如果你使用的是自定义名字的.strings,比如MyApp.strings,那么你在程序中可以这样获取字符串:

NSLocalizedStringFromTable (@"mykey",@"MyApp", nil)
 

这样即可获取到”mykey”这个字符串,可以是任何语言。