关于我:大厂摸鱼 + 业余独立开发,之后会输出深度技术文章 + 独立开发技巧
我的往期技术文章合集:RickeyBoy - Gitbub
我的独立开发 App:iColors - 设计灵感 配色助手
上一篇:
🤿 提取 App 内文本文案
我们前面花了大部分的篇幅,讲清楚了和 Core Data 相关的数据库文案的翻译。一般来讲,App 的国际化需要考虑两部分文案,我姑且称之为"数据库文案"和"文本文案"。数据库文案是指的 App 中的运营内容,每次上传新的运营数据其实都会需要准备多语言的版本,是一个长期的活;而文本文案通常本身就是写死的,只需要在国际化的时候一次性解决就行了。
下面用一张图来说明就很清楚了:
- 红色部分,就是文本文案
- 蓝色部分,就是数据库文案
因为我的 App 的特殊性,所以需要先处理数据库文案,实际上大部分 App 只需要处理文本文案就够了。这也是之前我说,大部分网上的国际化教程,都不能够直接使用的原因。
那么,从这一章开始,我们就准备开始处理文本文案了。
配置新语言
我们需要先新增目标语言,以我这里的例子而言就是本身支持中文,现在需要新增英文语言。这部分的教程其实很多,也并不难,所以这里我会尽量简洁地讲解。
首先需要根据 Project -> Info -> Localizations
在工程设置中添加所需本地化语言:
之后如果有一些稍微有所经验的开发者,可能知道我们该创建 Localizable.strings
文件了。没错,这其实就是我们最终想要获得的翻译文件,应该有多份 Localizable.strings
文件来承载不同的语言翻译。
不过相比于传统的,手动创建文件,并执行翻译,我们这次会尝试使用更具效率的方法,那就是通过 Xcode 的新功能来自动进行生成。
Xcode 自动提取文本文案
首先,我们需要确认 Xcode 中的一个配置是正确的,即 Use compiler to Extract Swift
这个选项配置为 YES。这里意味着我们允许 Xcode 自动提取我们 App 中的文本文案:
接下来,我们在 Xcode 的 Product 选中 Import Localizations,就可以自动创建了:
提取出来之后,大概页面会是这样:
这里有两列 English,第二列和第三列看起来一模一样。这里讲一下区别:
- 第二列:代表基础语言(base localization),如果你的 App 选择的 base language 是英文,那么这里就是英文,如果选择的是中文这里就是中文
- 第三列:当前语言的翻译,目前浏览的是英文翻译,所以这里就是英文;如果浏览的是中文翻译,那么第三列就是中文。
这样,我们就可以将 Xcode 自动生成的 Localizable.strings 导入,成功之后的样式应该是如下图所示:
这样,我们的架构实际上就已经成功搭建起来了,通过这样的文件架构,我们就能处理文本文案的多语言展示。比如我们分别在 Localizable.strings 文件中增加了对应的翻译:
swift
// Localizable (Chinese, Simplified)
"色彩主题" = "色彩主题";
// Localizable (English)
"色彩主题" = "Editor's Pick";
那么在代码中就自动被更新了,在英文版中也可以被直接正常显示了!
swift
Text("色彩主题")
成功!不过目前我们还有一个大问题没有解决:
当 App 中的文本不多时,用这样的方式可以非常方便的进行创建和提取。如果 App 比较复杂,里面涉及的文本非常多,用这种自动提取的方法,发现有很多文本没有办法被自动处理。
不过不用担心,遗漏的翻译我们是有办法检查出来的,现在我们只需要先进行下一步:翻译文案,以及修改代码,将其应用在 App 中。
国际化系列文章的第五篇,终于到了 App 中文本文案的部分,本期讲了如何将需要翻译的内容提取出来,以及一些原理。