其实文本/字符串的本地化在Xcode12用SwiftUI非常非常简单,不需要东扯西扯的。这里讲的详细一些,希望可以帮到和我一样苦苦寻找简单方法的人。
如果只需要步骤,只要看粗体就可以了。

事先说明一下,开发环境使用的是英文(en),所以开发的语言是英语(后面会提到哦)。如果不是从头添加本地化文件,而是添加,请看最后列出的的问题和解决方案。

如图所示是我们需要本地化的内容。就是这个文本test

swift 语音识别实现待办功能 swift 多语言_swift 语音识别实现待办功能

第一步,在Info里添加上简体中文(zh-Hans)和日语(ja)。其实这个步骤可以省略,直接下一个步骤开始也可以,第三步的之后会自动添加的。。这样告诉Xcode我们支持哪些语言。日语在这里是为了展示多种语言场景,毕竟有时候我们不止需要翻译一种语言。

swift 语音识别实现待办功能 swift 多语言_简体中文_02

swift 语音识别实现待办功能 swift 多语言_swift 语音识别实现待办功能_03

第二步,新建三个Group/文件夹,en.lprojzh-Hans.lprojja.lproj表示简体中文、英语和日语本地化文件夹。 这里需要添加“开发语言(Development Language)”——英语,不然界面上会一直显示时间顺序上最早建立的本地化文件里的文本,不会显示英语本身。

swift 语音识别实现待办功能 swift 多语言_简体中文_04


swift 语音识别实现待办功能 swift 多语言_Group_05


swift 语音识别实现待办功能 swift 多语言_Group_06

第三步,在三个Group下面都新建一个名为Localizable.strings的字符串文件。右击->“New File…”或者command键+N键新建就可以啦。

swift 语音识别实现待办功能 swift 多语言_字符串_07


swift 语音识别实现待办功能 swift 多语言_swift_08


第四步,在每个文件里输入以下内容(注意最后有个分号):

//英文的字符串本地化文件里输入
"test" = "test";
//简体中文的字符串本地化文件里输入
"test" = "测试";
//日文的字符串本地化文件里输入
"test" = "テスト";

接下来回到最开始的界面,来看看我们的工作结果。把预览的代码改成如下样式:

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
            .environment(\.locale, .init(identifier: "en"))
    }
}

这里的"en"就表示当前使用的系统语言。将其改成"zh-Hans"来看看吧

swift 语音识别实现待办功能 swift 多语言_swift 语音识别实现待办功能_09

成功啦,改成"ja"再看看:

swift 语音识别实现待办功能 swift 多语言_swift_10


日文也没问题。

这里有一个问题需要注意,如果按照这个步骤来,比如说想添加一个新的本地化文件,发现按照这个步骤来第一步就不行,添加的时候就卡住了。这时候只要直接从第二步开始就好了。。。

希望能帮到有需要的人。