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

相关推荐
恋猫de小郭12 小时前
Flutter Widget Preview 功能已合并到 master,提前在体验毛坯的预览支持
android·flutter·ios
点金石游戏出海17 小时前
每周资讯 | Krafton斥资750亿日元收购日本动画公司ADK;《崩坏:星穹铁道》新版本首日登顶iOS畅销榜
游戏·ios·业界资讯·apple·崩坏星穹铁道
旷世奇才李先生19 小时前
Swift 安装使用教程
开发语言·ios·swift
90后的晨仔19 小时前
Xcode16报错: SDK does not contain 'libarclite' at the path '/Applicati
ios
finger2448020 小时前
谈一谈iOS线程管理
ios·objective-c
Digitally20 小时前
如何将大型视频文件从 iPhone 传输到 PC
ios·iphone
梅名智21 小时前
IOS 蓝牙连接
macos·ios·cocoa
美狐美颜sdk1 天前
跨平台直播美颜SDK集成实录:Android/iOS如何适配贴纸功能
android·人工智能·ios·架构·音视频·美颜sdk·第三方美颜sdk
恋猫de小郭1 天前
Meta 宣布加入 Kotlin 基金会,将为 Kotlin 和 Android 生态提供全新支持
android·开发语言·ios·kotlin
泓博1 天前
Objective-c把字符解析成字典
开发语言·ios·objective-c