如标题所示,当我构建项目时,只有部分字符串位于可本地化的文件中。
我在官方文档上读到了这一点:
启用后,将在本地化导出期间提取 SwiftUI 中的文字字符串。这只会提取 Text() 初始值设定项中的字符串文字,除非还启用了 SWIFT_EMIT_LOC_STRINGS。
我将值设置为 true,但没有任何改变。
例如我有一个观点:
IntroView(
title: "titleTest",
subtitle: "subtitleTest",
actionTitle: "ActionTest") {
print("testAction")
}
在可本地化中,我没有这些字符串,只有 Text() 初始值设定项中的字符串。
LocalizedStringKey
)的位置时,字符串才会添加到字符串目录中。 Text
有 这样的初始化程序,所以它适用于 Text
。
您应该编写视图的初始化程序以采用
LocalizedStringKey
而不是 String
。
init(title: LocalizedStringKey, subtitle: LocalizedStringKey, actionTitle: LocalizedStringKey, action: @escaping () -> Void) {
// assuming you are going to assign these to properties in IntroView,
// you should change the types of those properties to LocalizedStringKey too
}
大多数 SwiftUI 视图都有带有
LocalizedStringKey
的初始化程序,因此此更改很可能不会影响代码的其他部分。如果您确实有一些代码由于某种原因需要对本地化键执行字符串操作,您可以使用 LocalizedStringResource
来代替,从中您可以访问其 key
。