无法从Localizable.strings文件中检索本地化字符串

10

我无法从Localizable.strings文件中获取正确的德语本地化字符串。我的应用程序设置如下:

  • Main.storyboard

    • Main.storyboard(基础)
    • Main.strings(德语)->这些字符串已被正确翻译
  • Localizable.strings

    • Localizable.strings(英语)
    • Localizable.strings(德语)->无法获取这些字符串

在应用程序内部,我尝试像这样获取字符串:

NSString *item = NSLocalizedString(@"Group expenses", @"Menu item");

本地化字符串(德语)文件看起来像这样

/* Menu item */
"Group expenses" = "Gruppenausgaben";

当我在item之后设置断点时,我总是收到英文字符串的返回,然而资源路径似乎是正确的:NSString *path = [[NSBundle mainBundle] pathForResource:[[NSLocale preferredLanguages] objectAtIndex:0] ofType:@"lproj"];给我的是:/data/Containers/Bundle/Application/5E3ED6BF-71E1-4C60-9EDA-610C9A32B8EF/MyApp.app/de.lproj

我也本地化了字符串文件。

enter image description here

enter image description here

它也包括在复制的资源束中。

enter image description here

我尝试了stackoverflow上不同问题的几个答案,比如删除应用程序并进行清理(shift+cmd+k),在Edit Scheme下设置应用程序语言等等...


你能否分享源代码?如果无法分享原始代码,您可否尝试创建一个包含相同本地化设置但同样无法正常工作的新虚拟应用程序?这么做的好处是除了其他用户能够测试您的代码外,您可能还能够找到它无法正常工作的原因。 - Andriy Gordiychuk
请查看我的回答。你的Localisable.strings文件名称有误。 - Andriy Gordiychuk
3个回答

11

好的,我认为我知道你的bug原因了。 解析有一个问题,就是像这里文档中所述添加Localizable.strings时出现了问题。 这在他们框架的1.8.1版本中得到了修复:

V1.8.1 — AUGUST 19, 2015

...

Fixed: Overwritten localizations when used via CocoaPods and integrating as static library.

...

您还可以查看问题。

因此,请确保使用最新版本的框架,所有问题都应该可以解决 :)


@user1463853 是的,我也认为这是可能的。但是,你应该更改示例项目,使其模拟与原始项目相同的条件,并仍然产生错误。当你这样做时,你要么自己找到错误,要么其他人将能够帮助你。目前听起来好像一切都应该正常工作,因此很难建议解决方案。 - Andriy Gordiychuk
@user1463853 我已经更新了我的答案,并提出了另一个建议。那就是 Localisable.string 可能没有包含在您的构建阶段中。 - Andriy Gordiychuk
@user1463853,这变得越来越有趣了。如果您更改英语的本地化,会怎样呢?例如,“Group expenses”=“Group expenses2”。这样行吗?另外,为什么您有3个文件是英语本地化,而只有2个是德语(这是从您的截图中看到的)? - Andriy Gordiychuk
@user1463853 让我们在聊天室里继续这个讨论 - Andriy Gordiychuk

0

我之前也遇到过同样的问题,下面是一些解决方法:

  • 确保你的iOS设备系统语言设置为德语。

  • 在Xcode中运行该应用程序,然后停止运行。手动从iOS设备启动该应用程序。(首次使用Xcode启动会使用基础语言,我不知道为什么)

  • 看看它是否可以正常工作


仍然是一样的,不幸的是。 - gpichler

0

刚遇到了类似的问题,一直在苦思冥想,后来搜索了一下 xx.strings 文件,发现是旧版本的文件搞乱了我的程序。

find ./ -name "xx.strings" -print

请仔细检查您的字符串文件是否正确

plutil -lint  xx.strings

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接