macOS 开发之 APP 名称本地化
开发了一款好用的 macOS app 后,为了让更多人的尝到自己 “真香” 的作品,app 的国际化和本地化是有必要的,app 的本地化分三部曲讲解,本文是第一部:app 名称的本地化。
第二部传送门:macOS 开发之 storyboard 或 xib 本地化
第三部传送门:macOS 开发之代码字符串的本地化
实现平台
- macOS 10.14.3
- swift 4.2.1
- xcode 10.1
新建一个空的工程
为了更好地讲述本地化 APP 名称,以一个 Cocoa App 新工程为例进行说明。
-
打开 Xcode,按下快捷键
Shift
+Command
+N
就会触发新建工程的导航窗口 -
选择 macOS -> Cocoa App,点击
Next
-
工程取名为 InternationalDemo,勾选
Use Storyboards
添加语言支持
工程的国际化和本地化依托于各国语言的支持,所以需要先为工程添加语言支持。
-
Xcode 左侧工程导航栏,点击工程,会看到右侧工程配置信息,点击 PROJECT 下的
InternationalDemo
-
在出现的配置项中有
Localizations
,可以看到默认是有一个English
的,点击+
号会出现选择语言的下拉菜单,如下: -
选择
Chinese(Simplified)(zh-Hans)
即可出现添加简体中文的窗口,点击Finish
即可完成添加: -
为了更好的演示,按照上面的操作再添加
Janpanese(ja)
的支持,最终Localizations
语言如下:
添加相关本地化文件
为了实现 macOS 系统下 Dock 栏、全局菜单栏和 Finder 中 app 的名称均可以跟随系统语言的设置显示对应语言的名称,需要在工程中添加一个名为 InfoPlist.strings
的文件,并进行本地化!
添加 InfoPlist.strings
-
按下组合键
Command
+n
调出新建文件的导航窗口,找到macOS
->Resources
->Strings File
: -
点击
Next
,更改名称为InfoPlist.strings
,Group
选择InternationalDemo
文件夹,其它默认,点击Create
完成文件的添加。
InfoPlist.strings
添加本地化支持
-
选中导航栏中的
InfoPlist.strings
,按下组合键Option
+Command
+1
就会显示InfoPlist.strings
的 Inspector -
会看到有一项是
Localizations
其中有个Localize...
按钮: -
点击这个按钮,会弹出一个窗口,其中有个下拉菜单控件,其中包含了上面添加的三个语言支持:
-
选择
English
选项,点击Localize
就会发现InfoPlist.strings
Inspector 中的Localizations
分组变成了三个勾选框,其中English
是勾选的,这里也把 Chinese 和 Japanese 勾选上,此时你会发现 Xcode 左侧工程导航栏InfoPlist.strings
左侧出现了一个小三角,点开就会发现其变成了与三种语言对应的三个 Strings 文件:
添加 App 名称配置
菜单栏 App 名称本地化
要实现菜单栏 App 名称本地化需要在上面添加的三个文件中添加 CFBundleName
字符串。
InfoPlist.strings (English)
文件中添加以下代码:
CFBundleName = "International Demo";
InfoPlist.strings (Chinese(Simplified))
文件中添加以下代码:
CFBundleName = "国际化演示";
InfoPlist.strings (Japanese)
文件中添加以下代码:
CFBundleName = "国際デモ";
更改系统语言设置,可以查看不同语言设置下的运行效果,在系统语言设置中更改了语言是大部分生效的,不要关闭设置窗口,否则关闭的话会提示重启,各类语言设置检查之后在改回原来的语言即可!
-
英文:
-
简体中文:
-
日文:
Dock 栏和 Finder 中 App 名称本地化
如上在三个文件中添加 CFBundleDisplayName
字符串。
InfoPlist.strings (English)
文件中添加以下代码:
CFBundleDisplayName = "International Demo";
InfoPlist.strings (Chinese(Simplified))
文件中添加以下代码:
CFBundleDisplayName = "国际化演示";
InfoPlist.strings (Japanese)
文件中添加以下代码:
CFBundleDisplayName = "国際デモ";
还差一步,需要在工程的 Info 配置中添加 Bundle display name
项:
-
打开
Info.plist
文件 -
在
Bundle name
下添加Bundle display name
,值设置为$(PRODUCT_NAME)
如果要检验效果的话,更改系统语言设置后需要重启才能看到 Dock 栏和 Finder 中 App 名称的本地化适应。
至此 App 名称的本地化就实现了!
本例程可从这里下载:InternationalDemo