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

Swift Localizable.stringsdict波兰语本地化返回错误键问题

解决iOS波兰语本地化中Localizable.stringsdict复数规则错误问题

搞定iOS波兰语复数本地化的坑我熟,给你列几个必查的点,大概率能解决你的问题:

  • 先核对波兰语的复数规则配置
    波兰语的复数规则比英语复杂得多,不是简单的zero/one/other,它的规则是:

    • 0 → zero形式
    • 1 → one形式
    • 2-4 → few形式
    • 5及以上 → many形式
      你现在的配置里只提到了zero,大概率是缺了few和many这两个关键键。正确的配置示例应该是这样的:
    <key>general_people_number</key>
    <dict>
        <key>NSStringLocalizedFormatKey</key>
        <string>%#@value@</string>
        <key>value</key>
        <dict>
            <key>NSStringFormatSpecTypeKey</key>
            <string>NSStringPluralRuleType</string>
            <key>NSStringFormatValueTypeKey</key>
            <string>d</string>
            <key>zero</key>
            <string>Brak osób</string>
            <key>one</key>
            <string>1 osoba</string>
            <key>few</key>
            <string>%d osoby</string>
            <key>many</key>
            <string>%d osób</string>
        </dict>
    </dict>
    
  • 检查文件的格式与编码

    • 确保你的Localizable.stringsdict是UTF-16编码,这是iOS本地化文件的标准要求,用UTF-8可能会导致解析失败。
    • 仔细检查XML结构,有没有遗漏闭合标签?你代码里zero后面的...如果是实际未完成的标签,那肯定会让整个键解析出错,返回错误值。
  • 确认本地化文件的存放位置
    要把波兰语的Localizable.stringsdict放在pl.lproj文件夹里,而不是Base.lproj或者其他语言的文件夹。同时去项目设置的Project -> Info -> Localizations里确认波兰语已经被添加为支持的语言。

  • 验证代码调用是否正确
    调用复数本地化的方式不能错,比如Swift里应该这么写:

    let peopleCount = 4
    let localizedText = String.localizedStringWithFormat(NSLocalizedString("general_people_number", comment: "Number of people"), peopleCount)
    

    如果直接用NSLocalizedString不带参数,会返回原始的格式字符串%#@value@,而不是解析后的复数文本。

  • 清理缓存再重新编译
    iOS有时候会缓存旧的本地化文件,试试这几步:

    • 用Cmd+Shift+K清理项目缓存
    • 删除模拟器/真机上的App,重新安装
    • 如果用模拟器,直接重置内容和设置
  • 排查键名冲突
    检查项目里的Localizable.strings文件有没有定义同名的general_people_number键,虽然stringsdict优先级更高,但冲突可能会导致解析异常。

内容的提问来源于stack exchange,提问作者Marcin Szymański

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:59:27