Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.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
Iphone iOS-LocalizedStringForKey:值:表:返回错误的本地化_Iphone_Ios_Xcode_Localization_Localizable.strings - Fatal编程技术网

Iphone iOS-LocalizedStringForKey:值:表:返回错误的本地化

Iphone iOS-LocalizedStringForKey:值:表:返回错误的本地化,iphone,ios,xcode,localization,localizable.strings,Iphone,Ios,Xcode,Localization,Localizable.strings,我使用以下代码返回本地化字符串: [self.languageBundle localizedStringForKey:key value:key table:nil]; 就英语而言,没有问题。然而,对于荷兰语,它默认为英语。为了清楚起见,self.languageBundle是一个空包,在第一次发布时复制。然后创建两个本地化目录en.lproj和nl.lproj,并在这两个目录中创建Localizable.strings文件,并用我检查过的正确本地化字符串填充 我使用以下方法更改语言: [[

我使用以下代码返回本地化字符串:

[self.languageBundle localizedStringForKey:key value:key table:nil];
就英语而言,没有问题。然而,对于荷兰语,它默认为英语。为了清楚起见,self.languageBundle是一个空包,在第一次发布时复制。然后创建两个本地化目录en.lproj和nl.lproj,并在这两个目录中创建Localizable.strings文件,并用我检查过的正确本地化字符串填充

我使用以下方法更改语言:

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"nl"]
                                                  forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];

但是,,它仍然会在en.lproj而不是nl.lproj中加载本地化,如果您在项目中添加了本地化的.string文件,则会删除项目中自动创建的所有其他本地化文件。尝试一下这个

,看起来您正试图在运行时更改语言,而苹果并不正式支持。更改AppleLanguages的键仅在关闭并重新启动应用程序后生效

但是,可以在运行时更改应用程序的本地化,请参阅

在中,您保留自己的语言代码变量,并在示例源AMLocalizedString中创建自定义LocalizedString函数,而不是使用NSLocalizedString。这是一个很好的解决方案,我曾在我的一个项目中使用过它,该应用程序被苹果公司批准,没有任何问题


此外,通过这种方式,您可以像平常一样使用默认的Localizable.strings文件,因此无需在第一次应用启动时创建目录和复制Localizable.strings。

只需将语言从设置更改为nl,直到加载英语本地化即可!我也有同样的问题——你找到解决这个问题的方法了吗?没有。捆绑包中没有可用的本地化.strings文件。只有在运行时创建的字符串,我需要在运行时添加本地化字符串。我使用一个web服务将JSON解析成NSDictionary并写入一个Localizable.strings文件,得到了它们。因此,第二部分是不可行的。关于第一部分,它甚至在重新启动后也不工作。当我从设置更改语言时,它也不起作用。总是默认使用英语。