Swift iOS : 本地化

本文介绍了一个简单的iOS应用本地化教程,通过创建不同语言环境下的字符串文件,并利用NSLocalizedString函数实现应用内文字随语言环境变化的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇文章大概是目前你可以看到的最简单的本地化教程。

广告

Swift iOS开发小书 ,帮你快速上手开发 epub.ituring.com.cn/946

目标

本地化的意义,在于iOS切换不同语言时,App可以随同改变,用指定的语言显示应用。iOS提供了一套用来国际化的工具。本文就来解析它。

希望是代码传入一个字符串,在不同语言情况下,显示不同内容。具体说:

print (NSLocalizedString("Welcome", comment: "Welcome"))复制代码

在语言为英语是,可以打印出:

Welcome english复制代码

在语言为汉语时,可以打印出:

欢迎 zh-Hans复制代码

准备工程和字符串文件

我们先干起来。第一步是创建一个Single View app的工程。然后首先进入工程目录,随即执行如下命令,创建用于不同语言的字符串文件:

mkdir Base.lproj
touch Base.lproj/Localizable.strings
echo '"Welcome" = "welcome base";' > Base.lproj/Localizable.strings
mkdir en.lproj
touch en.lproj/Localizable.strings
echo '"Welcome" = "Welcome english";' > en.lproj/Localizable.strings
mkdir zh-Hans.lproj
touch zh-Hans.lproj/Localizable.strings
echo '"Welcome" = "欢迎 zh-Hans";' > zh-Hans.lproj/Localizable.strings复制代码

这样,zh-Hans.lproj/Localizable.strings的内容,使用cat zh-Hans.lproj/Localizable.strings可以看出是:

"Welcome" = "欢迎 zh-Hans";复制代码

引号很重要,分号也很重要,写错了,就玩不出来了。.strings类的文件目的就是为了建立字符串和本地文字的关系,只是改变语言后可以变化的数据基础。

文件有了,下面是把它们加入工程,做法就是选择工程,点击鼠标右键,点击菜单add files to,多选文件目录清单为:

Base.lproj
en.lproj
zh-Hans.lproj复制代码

终于到代码

随即,粘贴代码到

import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        print (NSLocalizedString("Welcome", comment: "Welcome"))
        return true
    }
}复制代码

执行,如果你此时的模拟器使用的语言为中文的话,那么应该可以看到如下内容打印在控制台:

欢迎 zh-Hans复制代码

一个本地化,不外乎是字符串对应表,然后查表的操作,水果公司也能搞得这么复杂,我也是服了。你看看如下参考,就知道我的意思了:

目标

本地化的意义,在于iOS切换不同语言时,App可以随同改变,用指定的语言显示应用。iOS提供了一套用来国际化的工具。本文就来解析它。

希望是代码传入一个字符串,在不同语言情况下,显示不同内容。具体说:

print (NSLocalizedString("Welcome", comment: "Welcome"))复制代码

在语言为英语是,可以打印出:

Welcome english复制代码

在语言为汉语时,可以打印出:

欢迎 zh-Hans复制代码

准备工程和字符串文件

我们先干起来。第一步是创建一个Single View app的工程。然后首先进入工程目录,随即执行如下命令,创建用于不同语言的字符串文件:

mkdir Base.lproj
touch Base.lproj/Localizable.strings
echo '"Welcome" = "welcome base";' > Base.lproj/Localizable.strings
mkdir en.lproj
touch en.lproj/Localizable.strings
echo '"Welcome" = "Welcome english";' > en.lproj/Localizable.strings
mkdir zh-Hans.lproj
touch zh-Hans.lproj/Localizable.strings
echo '"Welcome" = "欢迎 zh-Hans";' > zh-Hans.lproj/Localizable.strings复制代码

这样,zh-Hans.lproj/Localizable.strings的内容,使用cat zh-Hans.lproj/Localizable.strings可以看出是:

"Welcome" = "欢迎 zh-Hans";复制代码

引号很重要,分号也很重要,写错了,就玩不出来了。.strings类的文件目的就是为了建立字符串和本地文字的关系,只是改变语言后可以变化的数据基础。

文件有了,下面是把它们加入工程,做法就是选择工程,点击鼠标右键,点击菜单add files to,多选文件目录清单为:

Base.lproj
en.lproj
zh-Hans.lproj复制代码

终于到代码

随即,粘贴代码到

import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        print (NSLocalizedString("Welcome", comment: "Welcome"))
        return true
    }
}复制代码

执行,如果你此时的模拟器使用的语言为中文的话,那么应该可以看到如下内容打印在控制台:

欢迎 zh-Hans复制代码

一个本地化,不外乎是字符串对应表,然后查表的操作,水果公司也能搞得这么复杂,我也是服了。

  1. locale.strings太容易出错并且代码容易乱七八糟,有人建议使用plist替代: medium.com/@dcordero/a…
  2. nshipster.com/nslocalized…
  3. www.jianshu.com/p/b13945381…
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值