macOS 开发之 APP 名称本地化(让mac开发支持多语言,支持中文)
开发了一款好用的 macOS app 后,为了让更多人的尝到自己 “真香” 的作品,app 的国际化和本地化是有必要的,app 的国际化分三部曲讲解,本文是第一部:app 名称的本地化。
原文地址(已无法访问):立即访问
实现平台
- 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) 文件中添加以下代码:
1
CFBundleName = "International Demo";
InfoPlist.strings (Chinese(Simplified)) 文件中添加以下代码:
1
CFBundleName = "国际化演示";
InfoPlist.strings (Japanese) 文件中添加以下代码:
1
CFBundleName = "国際デモ";
更改系统语言设置,可以查看不同语言设置下的运行效果,在系统语言设置中更改了语言是大部分生效的,不要关闭设置窗口,否则关闭的话会提示重启,各类语言设置检查之后在改回原来的语言即可!
- 英文:
- 简体中文:
- 日文:
Dock 栏和 Finder 中 App 名称本地化
如上在三个文件中添加 CFBundleDisplayName 字符串。
InfoPlist.strings (English) 文件中添加以下代码:
1
CFBundleDisplayName = "International Demo";
InfoPlist.strings (Chinese(Simplified)) 文件中添加以下代码:
1
CFBundleDisplayName = "国际化演示";
InfoPlist.strings (Japanese) 文件中添加以下代码:
1
CFBundleDisplayName = "国際デモ";
还差一步,需要在工程的 Info 配置中添加 Bundle display name 项:
- 打开 Info.plist 文件
- 在 Bundle name 下添加 Bundle display name ,值设置为 $(PRODUCT_NAME)
如果要检验效果的话,更改系统语言设置后需要重启才能看到 Dock 栏和 Finder 中 App 名称的本地化适应。
至此 App 名称的本地化就实现了!
本实例可从这里下载:
- 感谢你赐予我前进的力量