关于我:大厂摸鱼 + 业余独立开发,之后会输出深度技术文章 + 独立开发技巧

我的往期技术文章合集:RickeyBoy – Gitbub

我的独立开发 App:iColors – 设计灵感 配色助手

上一篇:

独立开发之 App 国际化全过程(一):为什么要做国际化

独立开发之 App 国际化全过程(二):App 数据翻译

独立开发之 App 国际化全过程(三):Core Data 模型升级

独立开发之 App 国际化全过程(四):Core Data 模型解析

提取 App 内文本案牍

咱们前面花了大部分的篇幅,讲清楚了和 Core Data 相关的数据库案牍的翻译。一般来讲,App 的国际化需求考虑两部分案牍,我权且称之为“数据库案牍”和“文本案牍”。数据库案牍是指的 App 中的运营内容,每次上传新的运营数据其实都会需求预备多言语的版本,是一个长期的活;而文本案牍通常本身便是写死的,只需求在国际化的时候一次性解决就行了。

下面用一张图来阐明就很清楚了:

  • 赤色部分,便是文本案牍
  • 蓝色部分,便是数据库案牍

独立开发之 App 国际化全过程(五):提取 App 中文本案牍

因为我的 App 的特殊性,所以需求先处理数据库案牍,实际上大部分 App 只需求处理文本案牍就够了。这也是之前我说,大部分网上的国际化教程,都不可以直接使用的原因。

那么,从这一章开端,咱们就预备开端处理文本案牍了。

装备新言语

咱们需求先新增目标言语,以我这儿的例子而言便是本身支撑中文,现在需求新增英文言语。这部分的教程其实许多,也并不难,所以这儿我会尽量简练地讲解。

首要需求依据 Project -> Info -> Localizations 在工程设置中增加所需本地化言语:

独立开发之 App 国际化全过程(五):提取 App 中文本案牍

之后假如有一些略微有所经验的开发者,或许知道咱们该创立 Localizable.strings 文件了。没错,这其实便是咱们最终想要取得的翻译文件,应该有多份 Localizable.strings 文件来承载不同的言语翻译。

不过相比于传统的,手动创立文件,并执行翻译,咱们这次会尝试使用更具效率的方法,那便是通过 Xcode 的新功能来主动进行生成。

Xcode 主动提取文本案牍

首要,咱们需求承认 Xcode 中的一个装备是正确的,即 Use compiler to Extract Swift 这个选项装备为 YES。这儿意味着咱们允许 Xcode 主动提取咱们 App 中的文本案牍:

独立开发之 App 国际化全过程(五):提取 App 中文本案牍

接下来,咱们在 Xcode 的 Product 选中 Import Localizations,就可以主动创立了:

独立开发之 App 国际化全过程(五):提取 App 中文本案牍

提取出来之后,大约页面会是这样:

独立开发之 App 国际化全过程(五):提取 App 中文本案牍

这儿有两列 English,第二列和第三列看起来如出一辙。这儿讲一下区别:

  • 第二列:代表根底言语(base localization),假如你的 App 选择的 base language 是英文,那么这儿便是英文,假如选择的是中文这儿便是中文
  • 第三列:当前言语的翻译,现在浏览的是英文翻译,所以这儿便是英文;假如浏览的是中文翻译,那么第三列便是中文。

这样,咱们就可以将 Xcode 主动生成的 Localizable.strings 导入,成功之后的样式应该是如下图所示:

独立开发之 App 国际化全过程(五):提取 App 中文本案牍

这样,咱们的架构实际上就现已成功建立起来了,通过这样的文件架构,咱们就能处理文本案牍的多言语展现。比如咱们分别在 Localizable.strings 文件中增加了对应的翻译:

// Localizable (Chinese, Simplified)
"颜色主题" = "颜色主题";
// Localizable (English)
"颜色主题" = "Editor's Pick";

那么在代码中就主动被更新了,在英文版中也可以被直接正常显现了!

Text("颜色主题")

成功!不过现在咱们还有一个大问题没有解决:

当 App 中的文本不多时,用这样的方式可以十分便利的进行创立和提取。假如 App 比较复杂,里边涉及的文本十分多,用这种主动提取的方法,发现有许多文本没有方法被主动处理。

不过不用担心,遗漏的翻译咱们是有方法查看出来的,现在咱们只需求先进行下一步:翻译案牍,以及修改代码,将其应用在 App 中。


国际化系列文章的第五篇,终于到了 App 中文本案牍的部分,本期讲了如何将需求翻译的内容提取出来,以及一些原理。