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

如何自动排除SwiftUI PreviewProvider中的字符串被Xcode本地化导出?

解决SwiftUI预览字符串被本地化导出的问题

方法1:自定义预览专用Text视图

创建仅在Debug环境下生效的PreviewText,内部直接使用Text(verbatim:)规避本地化扫描:

#if DEBUG
struct PreviewText: View {
    let content: String
    
    init(_ content: String) {
        self.content = content
    }
    
    var body: some View {
        Text(verbatim: content)
    }
}
#endif

使用时直接替换预览里的Text:

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        PreviewText("仅预览用的文本")
    }
}

方法2:全局预览字符串包装函数

定义全局函数,仅在Debug环境下返回原始字符串,避免被本地化工具捕获:

#if DEBUG
func previewStr(_ str: String) -> String {
    str
}
#endif

在预览中调用:

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        Text(previewStr("预览专属文本"))
    }
}

方法3:排除预览文件的本地化

将所有预览代码(含预览用字符串)单独放在一个文件中,然后在Xcode中设置该文件不参与本地化:

  1. 选中目标文件,打开右侧File Inspector
  2. 在Localization区域,取消勾选所有本地化语言,或点击Localize...后选择"Remove Localization"

Xcode导出本地化时会自动忽略该文件内的所有字符串。

为什么#if DEBUG包裹PreviewProvider无效?

Xcode的Export Localizations工具默认会扫描所有编译目标的代码(包括Debug配置),单纯包裹PreviewProvider结构体无法阻止工具扫描内部的字符串字面量。

内容的提问来源于stack exchange,提问作者alexkaessner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 20:57:05