Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.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 4中更改iPhone应用程序的首选语言_Iphone_Objective C_Internationalization_Ios4 - Fatal编程技术网

如何在iOS 4中更改iPhone应用程序的首选语言

如何在iOS 4中更改iPhone应用程序的首选语言,iphone,objective-c,internationalization,ios4,Iphone,Objective C,Internationalization,Ios4,改变iPhone应用程序的语言已经被讨论过了,但我坚持这一点:提供的解决方案要求重新启动应用程序以使更改生效。但在iPhone4上如何实现这一点呢?按“主页”将应用程序发送到后台,单击应用程序图标将其返回。用户体验到了应用程序重启的感觉,并想知道为什么语言没有改变。谢谢你的帮助。看看苹果的示例代码项目。它显示了如何在将应用程序带回前台时处理设置应用程序中所做的更改。示例代码处理特定于应用程序的设置,但也可用于“系统范围”的设置更改。希望这能有所帮助。您可以编写自己的NSLocalizedStri

改变iPhone应用程序的语言已经被讨论过了,但我坚持这一点:提供的解决方案要求重新启动应用程序以使更改生效。但在iPhone4上如何实现这一点呢?按“主页”将应用程序发送到后台,单击应用程序图标将其返回。用户体验到了应用程序重启的感觉,并想知道为什么语言没有改变。谢谢你的帮助。

看看苹果的示例代码项目。它显示了如何在将应用程序带回前台时处理设置应用程序中所做的更改。示例代码处理特定于应用程序的设置,但也可用于“系统范围”的设置更改。希望这能有所帮助。

您可以编写自己的NSLocalizedString替代品。在头文件中,执行以下操作

#undef NSLocalizedString
#define NSLocalizedString(key, comment) MyLocalizedStringFunction(key)
在函数中,使用NSBundle加载正确的.lproj包,然后调用

[bundle localizedStringForKey:key value:nil table:nil];
在上面得到你想要的线


我不知道这是否是最好的方法:我们不得不使用它,因为我们想支持iPhone上不存在的语言,所以您的问题可能有一个更简单的解决方案。

谢谢您的建议。不幸的是,这对我来说不起作用:听NSUserDefaultsIDChangeNotification可以工作,但我不知道如何让NSLocalizedString使用新语言。更改我的应用程序中的语言会导致重新生成AppleLanguages数组:[[NSUserDefaults standardUserDefaults]setObject:[NSArray arrayWithObject:[language isoCode]]forKey:@“AppleLanguages”];但我只有在重启应用程序后才能看到这些变化,而不是当它回到前台时。