为了账号安全,请及时绑定邮箱和手机立即绑定

Swift本地化入门:从零到英雄

精通 Swift 中的本地化:从基本设置到动态语言切换功能,打造真正的全球 iOS 应用体验 前言

本地化是创建全球可访问应用的重要环节。它确保用户可以用他们的母语和文化背景与您的应用进行互动。在本指南中,我们将从头开始指导您如何本地化您的 Swift 应用,涵盖从基础到高级的各种技术。

1. 为什么本地化很重要?

在我们深入了解技术细节之前,了解为什么本地化非常重要。

  • 扩展你的应用到全球市场,可以增加应用的覆盖范围。
  • 使用支持本地语言和文化偏好的功能,可以提升用户的体验。
  • 支持多种地区设置能够提高你的应用在应用商店中的可见度。

照片由 Daniel Romero 拍摄,来自 Unsplash

2. 准备您的 Xcode 项目的本地化
2.1 实现本地化支持

从在 Xcode 项目中启用本地化功能开始

  • 在 Xcode 导航器中选择您的项目。
  • 在项目设置中,点击 Info 标签。
  • 在“本地化”部分,点击“+”按钮并选择您要支持的语言,比如西班牙语和法语。

这将使Xcode能够管理每种语言的.strings文件。

2.2 本地化界面布局和XIB (X Interface Builder)

要将您的 UI 进行本地化,您需要使 .storyboard.xib 文件可本地化。

  • 选择 .storyboard.xib 文件,然后打开文件检查器。
  • 勾选“本地化”框。
  • 选择默认语言,并生成 .strings 文件以添加其他语言的翻译。

Xcode 会创建特定语言的文件夹(如 en.lprojfr.lproj),并在每个包含可本地化内容的 UI 元素上生成相应的 .strings 文件。

3. 静态文本本地化
3.1 使用 Localizable.strings(本地化字符串文件)

Localizable.strings 文件是进行本地化的核心。下面是如何使用它:

  1. 在 Xcode 中新建一个文件,选择“Strings 文件”类型,并命名为 Localizable.strings
  2. 为每个要本地化的文本添加键值对。

例子:

    // Localizable.strings (中文)  
    "welcome_message" = "欢迎来到我们的应用!";

    // Localizable.strings (西班牙语)  
    "welcome_message" = "¡Bienvenido a nuestra aplicación!";

在 Swift 里,用下面的代码加载这些本地化的字符串:

    let welcomeMessage = NSLocalizedString("欢迎信息", comment: "首页欢迎标语的描述")
3.2 要点:
  • 始终使用描述性的键名。这会让未来的翻译管理更加容易。
  • 避免直接在Swift代码中硬编码文本内容。相反,请使用NSLocalizedString
4. 处理动态文本内容
4.1 程序生成的字符串的本地化.

如果你有动态生成的文本内容(比如数字或日期),请使用 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

这段代码将视图的内容属性强制设置为从右到左。

  • 自动布局在这里非常重要;它应该正确地调整视图以支持从右到左的文字方向。
5.2 本地化应用名称和 Info.plist

应用的名字和 Info.plist 中的设置也可以进行本地化。要本地化应用的名字:

  1. 打开 Info.plist 文件,并为 'CFBundleDisplayName' 添加一个新键。
  2. 为每个本地化版本创建 InfoPlist.strings 文件。

例如(InfoPlist.strings 文件中的法文示例):

    "CFBundleDisplayName" = "我的APP";
第5.3节 处理数字、日期和货币内容

使用 NumberFormatterDateFormatter 来确保日期、时间和货币的格式按照用户的地区设置。

例子:

    // 定义一个日期格式器,并设置其样式为长格式,地区为当前地区,然后获取当前日期的格式化字符串。
    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 还提供了一种快速查看本地化设置的功能。

  • 打开助手编辑器,然后选择预览
  • 选择不同的本地化,看看界面如何根据不同本地化进行调整。
7.2 模拟不同地区

您可以在模拟器或测试设备上更改语言和区域设置:

  • 进入 设置 > 通用 > 语言和地区 切换语言测试本地化设置。
8. 常见问题和最佳做法
8.1 尽量不要硬编码文字

避免在代码或界面文件中直接嵌入用户能看到的文字。最好使用本地化文件来方便管理。

8.2 试试不同字符的长度

像德语和俄语这样的语言通常比英语单词更长。确保您的UI组件(如标签)可以适应不同长度的文字。

8.3 与翻译人员的合作

与翻译人员合作时,提供上下文,并确保关键名称清晰并具有描述性。这样可以避免误解。

最后说一下

就这样

本地化是创建面向全球受众的应用程序的重要环节,通过提供用户偏好的语言内容来提升用户体验。在这篇文章里,我们介绍了如何在 Swift 中实现本地化的过程,从如何设置 Localizable.strings 文件开始,直到在应用中动态切换语言。

我们尝试在 String 类中增加一个 .localized 属性,以扩展其功能,使代码更加整洁和易于阅读,解决复数问题和从右到左文字的方向性。这些方法不仅简化了本地化流程,还确保应用在多个地区使用时更加适应、扩展性强且用户体验良好。

通过这些本地化最佳实践,有经验的 iOS 开发者现在可以自信地在他们的应用中添加多语言支持,为服务多元用户群体创造更加包容的用户体验。记住,能够用用户语言交流的应用更能吸引用户参与,并打开新的市场大门。

祝你在编程愉快,下一个应用本地化顺利。

感谢你读到这儿,在你离开之前,

栈学 (Stackademic) 🎓

感谢你读到最后啦。在你离开之前,有几句话想对你说

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消