2011-08-22 48 views
0

我需要在iOS应用程序变为活动状态时更改本地化。在变为活动状态时更改本地化

所以..

我有过settings.bundlemain.m文件进行设置一个语言选择。我正在阅读像这样的设置

int main(int argc, char *argv[]) { 
    NSAutoreleasePool *pool = [NSAutoreleasePool new]; 
    // -- 
    NSString *appLang = [[NSUserDefaults standardUserDefaults] stringForKey:@"appLang"]; 

    if (appLang == nil) 
     [[NSUserDefaults standardUserDefaults] setValue:[[NSLocale preferredLanguages] objectAtIndex:0] forKey:@"appLang"]; 

     [[NSUserDefaults standardUserDefaults] 
     setObject:[NSArray arrayWithObjects:[[NSUserDefaults standardUserDefaults] stringForKey:@"appLang"], nil] 
     forKey:@"AppleLanguages"]; 

     [[NSUserDefaults standardUserDefaults] synchronize]; 
     [appLang release]; 
     // -- 
     int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate"); 
     [pool release]; 
     return retVal; 
    } 

因此,应用程序使用设置中的数据更改不同语言的图像。

现在,我使用的条件来定义这样一个语言:

if ([[[NSLocale preferredLanguages] objectAtIndex:0] isEqual:@"en"]) 

一切工作正常,但问题是:我可以改变应用程序的本地化(使用我的方法)时,应用程序变为活动状态(applicationWillEnterForeground或类似的东西)?我该怎么做?

回答

0

您可以在您的视图控制器中收听UIApplicationWillEnterForegroundNotification。你可以这样做是这样的:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myFunc) name:UIApplicationWillEnterForegroundNotification object:nil]; 

当应用程序将进入前台myFunc将被调用,在那里,你将能够建立的一切 - 设置适当的定位,切换图像等


我不“知道,如果这是你需要什么,但假设你有一个的UIImageView叫myImage,你要加载到这个容器的新形象,你只需设置它的图像属性,你可以设置你的myFunc这样的:

- (void) myFunc { 
    /* 
    set localization parameters 
    */ 
    // set image 
    myImage.image = [UIImage imageNamed:[NSString stringWithFormat:@"img_%@.jpg", appLang]]; 
} 
+0

我知道这一点。其实我的问题是“我有什么改变”​​。即时改变UserDefaults中的AppleLanguages,但图像仍然没有改变。 – timfreeman

+0

在我的文章中我追加了一些代码,但我不确定这是你想要的... – Bartek

+0

没有。它也不是我想要的=)我在约55个viewControllers约1500 +图像。我想我需要一种方式来重新加载应用程序,以便让我的所有资源自动进行本地化 – timfreeman

相关问题