【问题标题】:Xcode Localization is driving me nuts! Not loading StoryboardXcode 本地化快把我逼疯了!不加载情节提要
【发布时间】:2012-09-28 18:07:43
【问题描述】:

这个问题让我抓狂已经 2 天了。

我正在尝试本地化我的 iOS 应用程序,但在我的一生中我无法让它工作。当我尝试一个空白项目而不是我当前的项目时,它很容易工作。

我已经使用“+”在本地化中添加了语言,我已经本地化了情节提要,但是当我检查模拟器或设备时,我仍然看到英文版本。事实上,它甚至不是英文的,因为如果我更改 Maintsoryboard(英文),我看不到设备的变化......我仍然看到最初的文本。

我尝试过重置模拟器、删除应用等。没有运气。

我已恢复为备份尝试再次添加所有内容。没有运气。

有人可以帮忙吗?我知道这没什么好说的,但我不知道该解释什么来帮助你帮助我。所以如果我遗漏了一些信息,请告诉我。

仅供参考,当我在 Developer 中查看应用程序的文件夹时,我最初没有 en.lproj,而我似乎应该默认拥有一个?

【问题讨论】:

  • 您在项目信息中看到了哪些本地化?你总是有一个默认的本地化,所以你的默认(最初)本地化可能不是英语。您可以在 info 属性列表中检查默认值。
  • 您好法比奥,感谢您的回答。如果从我的备份开始,我会看到 Base 和 English,其中 0 个文件已本地化。如果我选择 MainStoryBoard -> 本地化 -> 本地化,我会看到一个英文文件。但在那之后,我在 Storyboard 中所做的任何更改都不会影响我在模拟器或设备中看到的内容。我什至可以从xcode中删除它,运行,它仍然存在于模拟器+设备上。
  • 当然你的模拟器是英文的吧?添加本地化后,您是否清理过项目(shift+cmd+K)?
  • 好吧,我只是想通了......或多或少......我删除了对我的故事板的引用,重命名了文件,重命名了 infos .plist 中的主故事板基础文件 -> 添加重命名的 Storyboard 文件到项目中,瞧,本地化又开始工作了。 2天尝试一切。感谢您的帮助法比奥!

标签: iphone ios xcode localization uistoryboard


【解决方案1】:

看起来您已经想通了,但我认为可能发生的情况是您最初将“MainStoryboard.storyboard”作为非本地化资源。这意味着当你构建你的应用程序时,你会得到一个“MainStoryboard.storyboardc”作为非本地化资源。当您将故事板更改为本地化时,您会在捆绑资源中获得“Base.lproj/MainStoryboard.storyboardc”。

当您在 Xcode 中构建应用程序时,会有多个副本。您的设备或模拟器中有副本,Xcode 的派生数据文件夹中也有副本。当您对应用程序进行增量构建时,Xcode 中派生数据文件夹中的副本是新内容和旧内容的合并。因此,当您在 Xcode 中修改资源并重新构建时,您将获得最新的资源。但是,当您重命名或删除资源时,旧副本仍保留在构建目录中,直到您执行清理操作。

这意味着您的构建产品可能同时具有“MainStoryboard.storyboardc”和“Base.lproj/MainStoryboard.storyboardc”。当 NSBundle 加载资源时,它更喜欢未本地化的内容,并且会加载旧的“MainStoryboard.storyboardc”。

【讨论】:

  • 我遇到了这个问题,虽然我不想在删除应用程序后恢复有数据的设备。构建和安装应用程序的临时版本似乎使用与 App Store 相同的安装过程 - 因此这些讨厌的编译故事板可以被清除,而无需删除应用程序。在我的情况下,清洁和重建的组合没有摆脱设备上的旧故事板(并且它默认使用它并忽略新故事板),所以剩下的唯一选择是删除应用程序,或独立安装应用程序码。临时安装让我解决了这个问题。
【解决方案2】:

绝对确保您在 Main.strings 文件中没有拼写错误,例如双引号和分号。如果您有任何拼写错误,设备只会忽略本地化字符串并应用基本国际化。

【讨论】:

  • 这不会发生,因为 Xcode 会抛出编译错误。
【解决方案3】:

盲测:检查字符串文件是否为 UTF-16(如果我没记错的话是小端序)并且它没有语法错误(缺少 ; 或引号)。在更改字符串文件后构建之前,还要运行一个项目clean

【讨论】:

  • 我没有看到字符串文件。我只看到我的故事板的多个版本。
【解决方案4】:

尝试选择所有正在本地化的各种.strings.xib.storyboard 文件。

在文件检查器中,确保检查每个文件所需的所有本地化。

添加本地化后,English 在多个文件上未选中。因此,一些观点被本地化为非预期语言。检查English 解决了这个问题。

【讨论】:

    【解决方案5】:

    我面临的只是像

    这样的拼写错误
         "zu0-GQ-ymP.text" = "Meeting End Time;
    

    只需确保并检查 Main.strings 中的每个字符串必须如下所示

        "zu0-GQ-ymP.text" = "Meeting End Time";
    

    提示:如果是拼写错误,它将无法在特定的本地化中工作。

    【讨论】:

      【解决方案6】:

      这是真的 - AyAz,谢谢!需要注意的是,如果字符串文件中存在某些问题(尤其是本地化的 Storyboard),XCode 并不总是无法编译。您可以在 xcode 中快速检查文件的语法着色或在字符串文件上运行字符串 linter 以确保没有拼写错误——在我的情况下,由于双引号符号而失败,该符号用于目标本地化语言作为他们正常字母表的一部分。 XCode 继续运行,没有警告/错误,但屏幕一直显示英文...

      【讨论】:

      • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
      猜你喜欢
      • 2011-12-11
      • 1970-01-01
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-13
      • 2012-08-06
      相关资源
      最近更新 更多