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

相关推荐
Digitally18 分钟前
如何轻松地将数据从 iPhone传输到iPhone 16
ios·iphone
I烟雨云渊T2 小时前
iOS 电子书听书功能的实现
macos·ios·cocoa
二流小码农2 小时前
鸿蒙开发:UI界面分析利器ArkUI Inspector
android·ios·harmonyos
90后的晨仔3 小时前
RxSwift 开源学习项目汇总
ios
90后的晨仔3 小时前
SwiftUI 值得学习的一些项目汇总
ios
大熊猫侯佩6 小时前
SwiftUI 6.0(iOS 18)自定义容器值(Container Values)让容器布局渐入佳境(下)
swiftui·swift·apple
90后的晨仔6 小时前
从一个简单的登录示例开始解析Combine + MVVM
ios
我现在不喜欢coding8 小时前
swift中的self,Self,Class(struct).Type让你头大了嘛?
ios·swift
90后的晨仔8 小时前
swift 中 Combine框架技术点汇总表
ios