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

Swift Package(命令行应用)中String Catalog无法正常使用求助

String Catalog在Swift Package命令行应用中无法正常工作的解决思路

我无法让新的String Catalog在我的Swift Package(命令行应用)中正常工作。

以下是我的Package.swift代码:

// swift-tools-version:5.9

import PackageDescription

let package = Package(
    name: "MyPackageName",
    defaultLocalization: "en",
    platforms: [.macOS(.v13)],
    targets: [
        .executableTarget(
            name: "MyPackageName",
            dependencies: [],
            resources: [
                .process("_Resources/Localizable.xcstrings")
            ])
    ]
)

我在代码中的使用方式如下:

print(String(localized: "aaaa"))
// or
print(String(localized: "aaaa", table: "Localizable", bundle: .main, locale: Locale(identifier: "en"), comment: nil))
// or
print(String(localized: "aaaa", defaultValue: .init(stringLiteral: "b")))
// or
print(String(localized: "aaaa", table: "Localizable", bundle: .main, locale: Locale(identifier: "en"), comment: ""))
// or
// I've tried almost all combinations)

我确认文件已正确链接,因为能在Build文件夹的MyPackageName_MyPackageName.bundle中找到本地化文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>aaaa</key>
    <string>bbbb</string>
</dict>
</plist>

解决思路

  • 使用模块Bundle而非主Bundle:命令行应用的.main Bundle并非资源所在的Bundle,Swift Package的资源会被打包到模块专属Bundle中,应改用Bundle.module来获取资源。示例代码:
    print(String(localized: "aaaa", table: "Localizable", bundle: Bundle.module, locale: Locale(identifier: "en")))
    
  • 验证文件路径与命名:确认Localizable.xcstrings确实存放在_Resources文件夹下,且Package.swift中配置的资源路径与实际文件位置完全匹配。
  • 检查String Catalog配置:打开Localizable.xcstrings文件,确认键aaaa在英文本地化下的对应值bbbb设置正确,无语法或格式错误。
  • 清理构建缓存:执行rm -rf ~/Library/Developer/Xcode/DerivedData删除旧构建缓存,之后重新构建项目,避免缓存导致的资源加载异常。
  • 确认版本兼容性:确保项目使用Swift 5.9及以上版本,且目标平台为macOS 13+,String Catalog仅在这些版本中受支持。

内容的提问来源于stack exchange,提问作者narek.sv

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 21:55:16