COCOA国际化的小笔记

一般提到COCOA的国际化无非就是在所有需要显示文本的地方调用NSLocalizedString(key,comment)方法,由程序自动按照当前系统语言设置载入相应Localizable.strings,并获取key所对应的文本。比如NSLocalizedString(@”username”,nil),在中文系统下显示为用户名,而在英文系统下显示为username。(值得注意的是XCode中所有工程的默认语言设置都是英文,在找不到其他语言strings文件时都统一使用英文的Localizable.strings文件)。

而更复杂的应用场景是需要对xib文件做国际化—-不同语言环境下显示不同的界面(而不仅仅是文本不同而已)。处理的方法和上面基本一致:在XCode下右击相应的xib文件->Get Info,然后add localization即可。

而最后一个需要国际化的地方是App名。比如mac系统下的文本编辑app,在英文环境下显示为TextEdit,在中文环境下却是文本编辑。处理方法是:

  • 在info.plist中设置Application has localized display name为YES
  • 设置info.plist的CFBundleDisplayName和CFBundleName都为$(PROJECT_NAME)
  • 对infoPlist.strings文件做国际化处理,方法和处理字符文件和xib一样。
  • 编辑不同的infoPlist.strings文件,设置相应的显示名字:CFBundleDisplayName和CFBundleName。

对App名做如上国际化影响到的地方包括:Finder中查看到文件名,程序在Monitor中显示进程名,程序菜单第一项名称,程序在Dock上的显示名称等等,但是对程序在终端中显示的文件路径不影响(即真正的文件路径)。比如文本编辑app,在中文下显示为文本编辑,英文下为TextEdit,但不管在哪个语言环境下通过终端查看文件都显示为TextEdit.app。