2013-04-03 86 views
0

如果我只需要更改文本字符串,它会很简单,但是 如何更改图像或xib文件(每个本地化)?如何以编程方式更改应用程序语言无需重新启动我的应用程序?

代码设置本地化:

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"Ukrainian", @"English", nil] forKey:@"AppleLanguages"]; 

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects: @"English", @"Ukrainian", nil] forKey:@"AppleLanguages"]; 

(如果我做了这个代码,并应用程序是这样下一次关闭时,应用程序启动它使用的为所有资源选定的语言)

我该怎么做,但没有重新启动应用程序?

我发现了很多例子,但是这些例子显示了如何处理文本,但是如何处理另一个资源,以及我如何更新它们(对于当前选择的语言)?

例子: Change iOS app's language on the fly

language change only after restart on iphone

+2

此问题已被单独提出10次以上,明显没有任何研究。其中之一:http://stackoverflow.com/questions/4238979/how-programatically-restart-iphone-app – Rob

+1

有办法改变动态语言... – lifetimes

回答

1

你不能这样做(没有越狱)。您应该以某种方式编写应用程序,以便在重新启动应用程序时重新启动某些重要信息时重新开始。例如,您可以弹出所有视图控制器并释放它们,然后让用户使用正确的语言重新加载它们。

但是,请注意,通常你不应该这样做。本地化在iOS上以相当优雅的方式解决。您只需将.strings本地化(也可选择.nib和图像文件),系统会为您保留其余部分。当用户在设置应用程序中更改语言时,系统会终止您的应用程序。用户下次启动应用时,会加载正确的语言。

0

为什么重新启动应用程序,我想是不是possible.But你可以做任何在applicationDidBecomeActiveapplicationWillEnterForeground方法变更

- (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. 
} 
0

这是不可能的,

虽然有一招

1>从您的应用程序打开Safari浏览器自定义URL(如com.yourcompany.yourApp)

2>注册一个定制URL与您的应用程序(从plist文件,你可以做到这一点),这将打开Safari浏览器中打开你的应用程序时,该自定义网址在Safari中打开。

3>关闭你的“应用程序应该在后台运行”从你的.plist文件。 (可以通过将UIApplicationExitsOnSuspend键添加到应用程序的Info.plist文件并将其值设置为YES来实现此目的。)

相关问题