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

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

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

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

上一篇:

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

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

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

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

🤿 提取 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 中文本文案的部分,本期讲了如何将需要翻译的内容提取出来,以及一些原理。

相关推荐
奇客软件9 小时前
如何从相机的记忆棒(存储卡)中恢复丢失照片
深度学习·数码相机·ios·智能手机·电脑·笔记本电脑·iphone
GEEKVIP11 小时前
如何修复变砖的手机并恢复丢失的数据
macos·ios·智能手机·word·手机·笔记本电脑·iphone
一丝晨光13 小时前
继承、Lambda、Objective-C和Swift
开发语言·macos·ios·objective-c·swift·继承·lambda
GEEKVIP1 天前
iPhone/iPad技巧:如何解锁锁定的 iPhone 或 iPad
windows·macos·ios·智能手机·笔记本电脑·iphone·ipad
KWMax1 天前
RxSwift系列(二)操作符
ios·swift·rxswift
Mamong1 天前
Swift并发笔记
开发语言·ios·swift
小溪彼岸1 天前
【iOS小组件】小组件尺寸及类型适配
swiftui·swift
GEEKVIP2 天前
手机使用指南:如何在没有备份的情况下从 Android 设备恢复已删除的联系人
android·macos·ios·智能手机·手机·笔记本电脑·iphone
奇客软件2 天前
如何使用工具删除 iPhone 上的图片背景
windows·ios·智能手机·excel·音视频·cocoa·iphone
安和昂2 天前
【iOS】计算器的仿写
ios