Text("hello") //-> implicitly treats string literal as a key; looks up and displays "Hello World!"
let cap1:String = "hello"
Text(cap1) //-> no lookup for explicit String variable; just displays "hello"
let cap2:LocalizedStringKey = "hello"
Text(cap2) //-> looks up explicit LocalizedStringKey value; displays "Hello World!"
//MARK: - File where you enum your keys to your Localized file
enum ButtonName: LocalizedStringKey {
case submit
case cancel
}
//MARK: - Your Localized file where are your translation
"submit" = "Submit is pressed";
"cancel" = "Cancel";
//MARK: - In your code
let submitButtonName = ButtonName.submit.rawValue
let cancelButtonName = ButtonName.cancel.rawValue
VStack {
Text(submitButtonName)
Text(cancelButtonName)
}
8条答案
按热度按时间wb1gzix01#
当你查看
Text
的documentation时,你可以看到它将LocalizedStringKey
而不是String
带入其初始化器:这使得本地化非常简单。您所要做的就是:
Localizable.strings
当您选择
Localizable.strings
时,您将看到它包含原始语言和您刚刚添加的语言的文件。这就是你把你的翻译,即。键本地化文本对。如果你有一个像这样的文本是你的应用程序:
您现在必须将您的翻译添加到
Localizable.strings
:对于您的基本语言:
第二语言(德语):
要查看本地化的预览,您可以像这样定义它们:
5us2dqdw2#
有一件事你可以做错了,这是不是很清楚,在任何解释我见过。事实证明,Text(“hello”)只有在您传递给它一个literal时才被解释为本地化键。如果你传递一个String类型的变量,这不会发生。答案是将变量声明为LocalizedStringKey类型。
j7dteeu83#
在将字符串交给Text()之前,您可以简单地将其 Package 在LocalizedStringKey中。
可本地化的.strings文件:
SwiftUI视图文件:
p5cysglq4#
对于swift UI文件,您只需要从localization.strings文件中插入字符串键即可
这是一个.strings文件的例子
结果在这里:
ykejflvf5#
要本地化您的应用,您需要:
1.使用SwiftUI元素,如:Text(“Nice”). Nice成为Localizable. strings中的键。
1.如果SwiftUI元素中没有text,则需要使用NSLocalizedString。
1.选择您的应用程序目标。
1.出口本地化:编辑->导出本地化...
1.将导出的文件给予翻译人员。
1.导入翻译:编辑->导入本地化...
vktxenjb6#
要在SwiftUI中使用Localazable,可以这样执行:
导入SwiftUI以在文件中使用LocalizedStringKey
ttcibm8c7#
我创建了这个自定义SwiftUI文本
使用方法:
kq0g1dla8#
来自WWDC 2023的新消息:String Catalog