You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 03:15:04