在包含无效片段的插值字符串中传入了LocalizedStringResource

移动开发 2026-07-10

尝试使用Strings Catalog来本地化一个带插值的字符串。这里必须将字符串表示为LocalizedStringResource,没有其他选项。

// Error: 'LocalizedStringResource' is passed in an Interpolated String with an invalid segment.

static var title = LocalizedStringResource(
   "OpenIntent.Title",
    defaultValue: "Open \(LocalizedStringResource("AppName", table: "Shared"))",
    table: "Shared"
)

Shared.xcstrings:

{
  "sourceLanguage" : "en",
  "strings" : {
    "AppName" : {
      "extractionState" : "pasted",
      "localizations" : {
        "en" : {
          "stringUnit" : {
            "state" : "translated",
            "value" : "HeartBLE"
          }
        }
      }
    },
    "OpenIntent.Title" : {
      "extractionState" : "manual",
      "localizations" : {
        "en" : {
          "stringUnit" : {
            "state" : "translated",
            "value" : "Open %1$(appName)@ 🚀"
          }
        }
      }
    }
  },
  "version" : "1.2"
}

这里的 'invalid segment' 是什么意思?

解决方案

Check your .xcstrings file.
try replacing "value" : "Open %1$(appName)@ 🚀" with "value" : "Open %@ 🚀"

and pass the localized value 

Text(
    LocalizedStringResource("OpenIntent.Title", table: "Shared"),
    String(localized: "AppName", table: "Shared")
)
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章