如果我只需要更改文本字符串,那么它很简单,但是 如何更改图片或xib文件(用于每个本地化)?
设置本地化的代码:
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"Ukrainian", @"English", nil] forKey:@"AppleLanguages"];
或
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects: @"English", @"Ukrainian", nil] forKey:@"AppleLanguages"];
(如果我已完成此代码,应用程序已关闭,以便下次应用启动时使用为所选语言设置的所有资源)
如何在不重新启动应用的情况下执行相同操作?
我找到了很多例子,但这些例子显示了如何处理文本,但是如何使用其他资源,以及如何更新(对于当前选择的语言)?
答案 0 :(得分:1)
你不能这样做(没有越狱)。您应该以某种方式编写应用程序代码,以便在某些重要信息发生更改时重新开始,而无需重新启动应用程序。例如,您可以弹出所有视图控制器并取消分配它们,然后让用户使用正确的语言重新加载它们。
但请注意,通常你不应该这样做。在iOS上以非常优雅的方式解决了本地化问题。您只需本地化.strings(以及可选的.nib和图像文件),系统会为您完成剩下的工作。当用户更改“设置”应用中的语言时,系统将终止您的应用。下次用户启动应用程序时,它将加载正确的语言。
答案 1 :(得分:0)
为什么要重新启动应用程序?我认为这是不可能的。但是你可以在applicationDidBecomeActive
或applicationWillEnterForeground
方法
- (void)applicationWillEnterForeground:(UIApplication *)application
{
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
}
答案 2 :(得分:0)
这是不可能的,
虽然有一招
1>从您的应用程序使用自定义URL打开safari浏览器(例如com.yourcompany.yourApp)
2 - ;在您的应用程序中注册自定义URL(来自plist文件,您可以这样做),当Safari中的自定义URL打开时,将从safari打开您的应用程序。
3>从.plist文件中关闭“应用程序应在后台运行”。 (您可以通过将UIApplicationExitsOnSuspend键添加到应用程序的Info.plist文件并将其值设置为YES来实现此目的。)