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

Swift 4.1中NSLocalizedString显示键而非对应字符串问题求助

解决NSLocalizedString显示键而非本地化文本的问题

嘿,我来帮你搞定这个问题~你现在遇到的是NSLocalizedString没有正确加载对应本地化文本,反而显示键名的情况,结合你给出的代码,咱们一步步排查:

先确认核心问题

你的代码逻辑本身是没问题的:

class TestClass { 
    let name: String 
    init(myName: String) { 
        name = myName 
    } 
}

class TestString { 
    var list = [TestClass]() 
    init() { 
        list.append(TestClass(myName: NSLocalizedString("Don", comment: "Test 1"))) 
        list.append(TestClass(myName: NSLocalizedString("Amanda", comment: "Test 2"))) 
    }
}

问题出在本地化配置的环节,下面是最常见的几个排查点:


1. 检查Localizable.strings文件是否正确配置

  • 有没有创建对应文件? 首先要确保你在项目里创建了Localizable.strings文件(如果用了自定义文件名,要在NSLocalizedString的tableName参数里指定)。
  • 键值对格式是否正确? 文件里的每一行必须是"键" = "本地化文本";的格式,分号和引号都不能少,比如:
    "Don" = "唐";
    "Amanda" = "阿曼达";
    
    要是格式出错(比如漏了分号),系统会直接忽略这条配置,默认显示键名。
  • 是否添加到Target? 选中Localizable.strings文件,看右侧面板的「Target Membership」,确保勾选了你的应用Target,不然文件不会被打包进App。

2. 键名必须完全匹配

NSLocalizedString的键是大小写敏感的,比如你代码里用的是"Don",如果strings文件里写的是"don"(小写),系统就匹配不到,直接显示键名。一定要保证键的拼写、大小写、空格完全一致。

3. 设备/模拟器的语言设置要对应

  • 如果你只配置了某一种语言的本地化,但测试设备的语言是未配置的语言,系统找不到对应文本,就会 fallback 显示键名。
  • 可以在Xcode里强制指定测试语言:打开「Edit Scheme」→「Run」→「Options」→「Application Language」,选择你配置的语言,这样就能精准测试了。

4. 清理缓存重新构建

有时候Xcode的缓存会搞事情,试试这几步:

  • 按下Cmd+Shift+K清理Build Folder
  • 删除模拟器里的应用,重新安装运行
  • 要是还不行,重启Xcode试试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:33:14