本地化是创建全球可访问应用的重要环节。它确保用户可以用他们的母语和文化背景与您的应用进行互动。在本指南中,我们将从头开始指导您如何本地化您的 Swift 应用,涵盖从基础到高级的各种技术。
1. 为什么本地化很重要?在我们深入了解技术细节之前,了解为什么本地化非常重要。
- 扩展你的应用到全球市场,可以增加应用的覆盖范围。
- 使用支持本地语言和文化偏好的功能,可以提升用户的体验。
- 支持多种地区设置能够提高你的应用在应用商店中的可见度。
照片由 Daniel Romero 拍摄,来自 Unsplash
2. 准备您的 Xcode 项目的本地化 2.1 实现本地化支持从在 Xcode 项目中启用本地化功能开始
- 在 Xcode 导航器中选择您的项目。
- 在项目设置中,点击 Info 标签。
- 在“本地化”部分,点击“+”按钮并选择您要支持的语言,比如西班牙语和法语。
这将使Xcode能够管理每种语言的.strings
文件。
要将您的 UI 进行本地化,您需要使 .storyboard
或 .xib
文件可本地化。
- 选择
.storyboard
或.xib
文件,然后打开文件检查器。 - 勾选“本地化”框。
- 选择默认语言,并生成
.strings
文件以添加其他语言的翻译。
Xcode 会创建特定语言的文件夹(如 en.lproj
,fr.lproj
),并在每个包含可本地化内容的 UI 元素上生成相应的 .strings
文件。
Localizable.strings
文件是进行本地化的核心。下面是如何使用它:
- 在 Xcode 中新建一个文件,选择“Strings 文件”类型,并命名为
Localizable.strings
。 - 为每个要本地化的文本添加键值对。
例子:
// Localizable.strings (中文)
"welcome_message" = "欢迎来到我们的应用!";
// Localizable.strings (西班牙语)
"welcome_message" = "¡Bienvenido a nuestra aplicación!";
在 Swift 里,用下面的代码加载这些本地化的字符串:
let welcomeMessage = NSLocalizedString("欢迎信息", comment: "首页欢迎标语的描述")
3.2 要点:
- 始终使用描述性的键名。这会让未来的翻译管理更加容易。
- 避免直接在Swift代码中硬编码文本内容。相反,请使用
NSLocalizedString
。
如果你有动态生成的文本内容(比如数字或日期),请使用 String(format:)
方法来进行本地化处理。
例子:
let 苹果数 = 3
let 信息 = String(format: NSLocalizedString("你有\(苹果数)个苹果", comment: ""), 苹果数)
在 Localizable.strings
文件中:
"you_have_apples" = "你有%d个苹果哦。";
"you_have_apples" = "Tienes %d manzanas."; // Spanish
4.2 处理 .stringsdict 中的复数
使用 .stringsdict
文件来管理复数。
- 在你的项目里创建一个新的
.stringsdict
文件。 - 定义不同数量的复数规则(例如,一个,少数,很多)。
比如说:
<key>apples_count</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>%#@apples@</string>
<key>apples</key>
<dict>
<key>one</key>
<string>%d 个苹果</string>
<key>other</key>
<string>%d 个苹果</string>
</dict>
</dict>
Swift 的使用:
let count = 5
let applesCountMessage = 字符串本地化字符串格式化(NSLocalizedString("苹果数量", comment: ""), count)
5. 高级本地化技巧
5.1 RTL(从右到左)语言支持
支持像阿拉伯语或希伯来语这样的从右到左语言需要一些额外的处理步骤:
- 确保您的 UI 组件通过设置
semanticContentAttribute
属性来适应从右到左(RTL)布局。
view.semanticContentAttribute = .forceRightToLeft
这段代码将视图的内容属性强制设置为从右到左。
- 自动布局在这里非常重要;它应该正确地调整视图以支持从右到左的文字方向。
应用的名字和 Info.plist
中的设置也可以进行本地化。要本地化应用的名字:
- 打开
Info.plist
文件,并为 'CFBundleDisplayName' 添加一个新键。 - 为每个本地化版本创建
InfoPlist.strings
文件。
例如(InfoPlist.strings 文件中的法文示例):
"CFBundleDisplayName" = "我的APP";
第5.3节 处理数字、日期和货币内容
使用 NumberFormatter
和 DateFormatter
来确保日期、时间和货币的格式按照用户的地区设置。
例子:
// 定义一个日期格式器,并设置其样式为长格式,地区为当前地区,然后获取当前日期的格式化字符串。
let formatter = DateFormatter()
formatter.dateStyle = .long
formatter.locale = Locale.current
let formattedDate = formatter.string(from: Date())
6. 为方便本地化处理而创建字符串扩展功能
为了在项目中简化本地化,你可以创建一个 String
扩展功能,以简化获取本地化字符串。这样可以使代码更简洁、更易维护,因为你不需要一直使用 NSLocalizedString
。
localized
插件
你可以在 String
中加入一个计算属性来从 Localizable.strings
文件获取本地化值。
extension String {
// 定义一个属性localized,用于返回本地化的字符串
var localized: String {
// 将字符串本地化
return NSLocalizedString(self, comment: "")
}
}
有了这个扩展,你可以直接这样写代码,而不需要使用 NSLocalizedString("welcome_message", comment: "")
这样的写法。
let welcomeMessage = "欢迎信息".localized // 欢迎信息,用于显示欢迎文字
7. 测试本地化
7.1 使用 Xcode 的本地化预览功能:
Xcode 还提供了一种快速查看本地化设置的功能。
- 打开助手编辑器,然后选择预览。
- 选择不同的本地化,看看界面如何根据不同本地化进行调整。
您可以在模拟器或测试设备上更改语言和区域设置:
- 进入 设置 > 通用 > 语言和地区 切换语言测试本地化设置。
避免在代码或界面文件中直接嵌入用户能看到的文字。最好使用本地化文件来方便管理。
8.2 试试不同字符的长度像德语和俄语这样的语言通常比英语单词更长。确保您的UI组件(如标签)可以适应不同长度的文字。
8.3 与翻译人员的合作与翻译人员合作时,提供上下文,并确保关键名称清晰并具有描述性。这样可以避免误解。
最后说一下就这样
本地化是创建面向全球受众的应用程序的重要环节,通过提供用户偏好的语言内容来提升用户体验。在这篇文章里,我们介绍了如何在 Swift 中实现本地化的过程,从如何设置 Localizable.strings
文件开始,直到在应用中动态切换语言。
我们尝试在 String
类中增加一个 .localized
属性,以扩展其功能,使代码更加整洁和易于阅读,解决复数问题和从右到左文字的方向性。这些方法不仅简化了本地化流程,还确保应用在多个地区使用时更加适应、扩展性强且用户体验良好。
通过这些本地化最佳实践,有经验的 iOS 开发者现在可以自信地在他们的应用中添加多语言支持,为服务多元用户群体创造更加包容的用户体验。记住,能够用用户语言交流的应用更能吸引用户参与,并打开新的市场大门。
祝你在编程愉快,下一个应用本地化顺利。
感谢你读到这儿,在你离开之前,
- 请鼓掌并关注哦!👏
- 关注我LinkedIn,还有Instagram。
- 访问我的网站vikramkumar.in,看看我的作品。
感谢你读到最后啦。在你离开之前,有几句话想对你说
- 请为作者点赞和关注他!👏
- 关注我们 X | LinkedIn | YouTube | Discord | Newsletter | Podcast
- 在Differ上免费创建一个由AI驱动的个人博客。
- 更多内容请浏览 Stackademic.com
共同学习,写下你的评论
评论加载中...
作者其他优质文章