iOS 应用程序本地化在模拟器上工作,但在手机上不工作

Posted

技术标签:

【中文标题】iOS 应用程序本地化在模拟器上工作,但在手机上不工作【英文标题】:iOS app localization working on simulator but not on phone 【发布时间】:2014-04-27 18:21:17 【问题描述】:

我正在尝试本地化我的应用程序,它似乎可以工作,但它只是在模拟器上工作。这很奇怪,因为我已经尝试过清理项目、重建等,但在模拟器上以西班牙语显示文本,但在我的 iPhone 中,带有开发人员配置文件并以西班牙语配置,它仍然以英语显示字符串。

我也尝试过删除应用程序,“强制”安装新版本的手机,但它似乎不起作用。

有什么想法吗?谢谢。

此处的图片:左侧手机是模拟手机,右侧手机是带有反射器的实体手机。

1 和 2

【问题讨论】:

安装开发者证书。 我已经这样做了。在其他情况下,我什至无法在手机上运行构建。还是谢谢。 清洗后,在模拟器中能用吗?听起来像是失踪了;在字符串文件中。另外,我会检查字符串文件是否存在于包中,是否有正确的名称和文件编码。 如果您的项目中有本地化的字符串文件,并且您的模拟器可以正常工作,那么我猜 iPhone 缓存了自上次构建以来未替换的可用本地化。从手机中删除您的应用程序,然后从头开始重新安装。 感谢您的回复,但是是的,在模拟器中就像一个魅力,但在我的手机中没有显示西班牙语字符串。我已经删除了我手机上的应用程序(我之前做过,但我在清洁和构建后再次尝试过)并且无法正常工作。由于它适用于模拟器,它应该适用于“每个设备”,但不适用于我的设备!正如您可能猜到的那样,我只是想确定这一点。不管怎么说,还是要谢谢你。这很奇怪。 【参考方案1】:

我遇到了同样的问题并找到了可靠的解决方案,尽管我无法确定为什么我的模拟器可以工作,而我的设备却不能。

检查所有本地化文件

只需检查您的所有本地化文件是否都针对设备的语言进行了本地化。他们在 ios11 上改变了 Locale 的工作方式,并且由于它们,只有在所有本地化文件都存在时,本地化语言才会设置为设备的语言,as commented here。否则,它将默认为基本语言。

我的情况

就我而言,我只使用.strings 文件来本地化我的框架,嵌入到我的应用程序中。但默认情况下,Main.storyboardLaunchScreen.storyboard本地化。 我将设备的语言添加到这个故事板本地化列表中,一切都开始在设备上正常工作。

调查

之后,为了进一步调查,我

将此文件的本地化恢复到以前的状态; 删除所有本地化with this method;

无论哪种方式,在解决方案之后,即使发生了这种变化,一切仍然按预期工作。我想第一个设置改变了 project.pbxproj 的东西。

TL'DR

无论如何,尽量让每个本地化文件本地化所有需要的语言,一切都应该没问题。然而,如今 Locale 设置的工作方式有点神秘。

【讨论】:

以上是关于iOS 应用程序本地化在模拟器上工作,但在手机上不工作的主要内容,如果未能解决你的问题,请参考以下文章

iOS 应用程序在手机上崩溃,但在模拟器上运行良好

android:在模拟器中工作但不在手机上的联系人提供程序

Firebase 推送通知无法在手机上使用,但可以在模拟器中使用

Midlet 在模拟器中工作,ClassNotFoundException 在手机上

Flutter App 发布更新后无法在手机上运行

AVAudioPlayer 在模拟器中播放录制的音频,但不在手机上