22

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

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

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

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

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

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

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

4

6 回答 6

15

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

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

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

于 2012-10-09T04:27:22.463 回答
10

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

于 2016-06-30T14:42:53.217 回答
1

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

于 2012-10-08T13:30:38.857 回答
1

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

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

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

未选中英文本地化

于 2015-08-27T20:28:43.010 回答
0

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

于 2021-11-03T00:07:52.533 回答
0

在此处输入图像描述 我面临的只是错字错误

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

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

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

提示:如果是拼写错误,它在特定的本地化中将不起作用。

于 2020-01-29T06:19:43.887 回答