Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS本地化随着iOS 9+;Xcode 7_Ios_Localization_Ios9_Xcode7 - Fatal编程技术网

iOS本地化随着iOS 9+;Xcode 7

iOS本地化随着iOS 9+;Xcode 7,ios,localization,ios9,xcode7,Ios,Localization,Ios9,Xcode7,我使用Localizable.strings文件和NSLocalizedString宏将我的应用程序本地化为意大利语和英语。我还启用了基本本地化。在模拟器和iOS 8设备上一切正常,但在iOS 9上,应用程序始终使用英语,即使在iPhone设置中默认使用意大利语的设备上也是如此。 iOS 9是否因本地化而有所改变 以下是Xcode本地化设置的屏幕截图 以及用于测试的设备的名称 由于提前解决了,该“问题”是info.plist文件中的关键“本地化本地开发区域”。它被设置为意大利,因此当应用程序

我使用
Localizable.strings
文件和
NSLocalizedString宏将我的应用程序本地化为意大利语和英语。我还启用了
基本本地化
。在模拟器和iOS 8设备上一切正常,但在iOS 9上,应用程序始终使用英语,即使在iPhone设置中默认使用意大利语的设备上也是如此。 iOS 9是否因本地化而有所改变

以下是Xcode本地化设置的屏幕截图

以及用于测试的设备的名称

由于提前解决了,该“问题”是info.plist文件中的关键“本地化本地开发区域”。它被设置为意大利,因此当应用程序在默认为意大利语的设备上运行时,它会显示字符串的基本本地化版本(英语版本)。 将值更改为美国解决了这个问题。

我找到了一个解决方法。 这个问题的根本原因是苹果在iOS 9中更改了“语言标识符”,请参阅

由于
NSLocalizedString()
(及其变体)访问
中的“AppleLanguages”
键以确定用户对首选语言的设置。当我发现他们的语言ID是新格式时,我强迫
NSLocalizedString
使用一种特定的语言,并将其作为旧iOS版本中的旧语言标识符。换句话说,我对
“AppleLanguages”
键值进行了映射

为此,请参阅:


我认为苹果在兼容性方面做得很差

我有另一个解决方案,只需删除info.plist中的键“Localizations”。
它适用于我的情况。

您的方案使用的是什么语言?在Xcode中的面包屑中选择应用程序标题(模拟器选择器旁边)->编辑方案…->运行->选项->应用程序语言?应用程序语言设置为系统语言。一切似乎都很好,事实上我不知道在哪里可以找到像英语有4个本地化文件,但意大利语只有2个-这可能是原因吗?在你的项目中哪些文件是本地化的?我删除了英文本地化,因为它是基础的副本,但应用程序仍然是英文的。我将在接下来的几天里调查这个奇怪的问题。它似乎忽略了设置中的默认语言并加载基本字符串。我遇到了相同的问题。但我将值改为“美国”并没有帮助。我的第二语言是中国传统语言。但是,如果我将iOS设备的“地区”设置更改为“美国”,那么我可以在我的应用程序上看到中文。为什么“区域”设置很重要?您的基本字符串文件是英文的还是中文的?我的基本字符串文件是英文的。很抱歉,这是一个非常奇怪的行为。请注意,我找不到添加代码为“zh TW”的本地化资源的方法,我只能添加“zh”、“zh Hant”或“zh Hant TW”。不确定这是不是苹果的虫子。这对我来说很有效。项目信息本地化和Info.plist-本地化在我的案例中是不同的。