这个问题已经过去了2天让我疯了。
我正在尝试本地化我的iOS应用程序,但对于我的生活,我无法让它工作。当我尝试一个空白项目而不是我当前的项目时,它很容易。
我已经使用“+”在本地化中添加了语言,我已经对故事板进行了本地化,但是当我检查模拟器或设备时,我仍然看到英文版。事实上,它甚至不是英文版,因为如果我更改Maintsoryboard(英文),我看不到设备的变化......我仍然看到初始文本。
我已经尝试重置模拟器,删除应用程序等等。没有运气。
我已经恢复了备份尝试再次添加所有内容。没有运气。
有人可以帮忙吗?我知道继续下去并不多,但我不知道该解释什么来帮助你。如果我错过了一些信息,请告诉我。
仅供参考,当我查看开发者中的应用程序文件夹时,我最初没有en.lproj,看起来我应该默认拥有一个?
答案 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
解决了问题。
答案 4 :(得分:0)