【问题标题】:Localization: application crashes when language is changed in simulator本地化:在模拟器中更改语言时应用程序崩溃
【发布时间】:2011-10-01 09:07:27
【问题描述】:

为了本地化我的应用程序,我为三种语言创建了 Localizable.strings。我不需要本地化任何 nib 文件,因为我的项目中没有使用任何 nib 文件。没有图像被本地化,只有字符串。在代码中,我使用 NSLocalizedStrings(@"key", @"comment") 读取字符串。 Localized.strings 文件使用 UTF-16 格式。字符串如下所示:"Projects" = "Projekte";.

当我在模拟器中运行应用程序并更改语言时,我在后面运行的应用程序崩溃 (SIGKILL)。如果我重新运行应用程序,我可以看到语言已更改,因为编辑按钮的标签是德语,但我的所有字符串仍然是英语。

我阅读了很多关于本地化的主题,并且我家里有三本 iOS 书籍,但我仍然不知道我做错了什么。

我是否忘记设置其他内容? 有什么想法吗?

【问题讨论】:

    标签: iphone objective-c ipad localization ios-simulator


    【解决方案1】:

    这是因为当您更改设备的语言时,SpringBoard 会杀死所有应用程序,以便它们在下次启动时“加载”新语言。如果您的应用程序被杀死,您将无法更改系统语言。如果你想保存你的新语言,它必须被杀死。

    您的应用不会崩溃。它正在被 iOS 杀死 (SIGKILL)。

    【讨论】:

    • 知道了!无论如何,正如我之前写的那样,当我在它被杀死后重新运行我的应用程序时,即使将语言更改为德语,字符串仍然是英文的。
    • 您确定所有字符串都正确本地化了吗?
    • 正如我所写,我创建了 Localized.strings 以此为方向:rndm-snippets.blogspot.com/2010/11/…(#1 和 #2)但使用 xcode 4。当我在 Finder 中看到我的项目时,有每种语言的 lproj 文件夹。我还有什么需要考虑的吗?
    • 这很奇怪。我让它以一种非常奇怪的方式工作。我的 lproj 文件夹被称为 de、en、es。我创建了分别称为德语、英语、西班牙语的副本。重新运行应用程序,它工作。现在我可以删除新文件夹(德语、英语、西班牙语),它仍然可以工作。不知道发生了什么。
    • 也许清洁目标有所帮助;)
    猜你喜欢
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 2016-10-14
    • 2014-12-06
    • 1970-01-01
    • 2013-10-27
    相关资源
    最近更新 更多