Xcode本地化让我疯狂!没有加载Storyboard

时间:2012-10-08 13:18:27

标签: iphone ios xcode localization uistoryboard

这个问题已经过去了2天让我疯了。

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

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

我已经尝试重置模拟器,删除应用程序等等。没有运气。

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

有人可以帮忙吗?我知道继续下去并不多,但我不知道该解释什么来帮助你。如果我错过了一些信息,请告诉我。

仅供参考,当我查看开发者中的应用程序文件夹时,我最初没有en.lproj,看起来我应该默认拥有一个?

5 个答案:

答案 0 :(得分:15)

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

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

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

答案 1 :(得分:8)

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

尝试选择所有本地化的.strings.xib.storyboard个文件。

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

添加本地化后,在几个文件中取消选中English。因此,一些观点本地化为非预期的语言。检查English解决了问题。

English localization unchecked

答案 4 :(得分:0)

enter image description here 我遇到的只是像

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

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

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

提示:如果是拼写错误,它将不适用于特定的本地化。