SwiftUI:使用LocalizedStringKey仍无法导出变量字符串用于本地化
你没有遗漏配置,这是Swift编译器本地化字符串提取机制的固有特性,和配置无关。
编译器自动提取Swift字符串的逻辑仅支持识别编译期可确定的字符串字面量。你代码中text是String类型的变量,哪怕是用字面量赋值的常量,编译器在提取阶段也不会追踪变量的赋值来源,自然无法将其对应的值提取到本地化导出文件中。官方文档提到的LocalizedStringKey初始化方案,仅保证运行时会按照本地化逻辑读取对应键的翻译,不代表编译器会自动提取动态传入的字符串。
解决办法
- 若使用的是固定不变的字符串,直接将常量类型声明为
LocalizedStringKey即可被编译器识别:
struct ContentView: View { // 明确指定类型为LocalizedStringKey,字面量会被自动提取 let text: LocalizedStringKey = "Some content 2" var body: some View { Text("Some content 1", comment: "该文本按预期正常导出用于本地化") .padding() Text(text, comment: "该文本现在可被正常导出") .padding() } }
- 若字符串是运行时才能确定的动态内容,编译器没有办法提前预知会出现的字符串值,你需要手动在对应的
Localizable.strings文件中添加所有可能出现的字符串键值对,运行时通过LocalizedStringKey包装即可正常加载翻译。
内容的提问来源于stack exchange,提问作者blu-Fox
相关产品推荐
相关产品推荐

