更改iOS语言而无需仅使用图像重新启动应用程序(大约300个)

时间:2014-05-27 17:37:44

标签: ios localization

我正在开发一个包含300张图片(没有文字)的应用,并试图通过点击按钮更改语言而无需重新启动。

- (IBAction)changeArab:(id)sender {

NSArray* languages = [NSArray arrayWithObjects:@"en", @"fr", nil];
[[NSUserDefaults standardUserDefaults] setObject:languages forKey:@"AppleLanguages"];
}

当我使用上面的代码重新启动应用程序时,我能够更改语言。

我使用所需的语言对所有图像进行了本地化,无论如何,一旦语言发生变化我可以重新加载视图,或者快速更改应用程序。

1 个答案:

答案 0 :(得分:0)

是的,您可以在不重新启动应用的情况下进行更改。

您必须使用NSNotificationCenter。

- (void)viewDidLoad
{
    [super viewDidLoad];
    [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(localeChanged:)
                                                     name:NSCurrentLocaleDidChangeNotification
                                                   object:nil];

}

- (void)localeChanged:(NSNotification *)notif
{
    // the user changed the locale 

  //code to update views or data set.
}

如果您没有以这种方式本地化您的应用。然后将自定义观察者添加到通知中心,当用户在自定义设置视图中更改语言时,它将生成本地通知,应用程序会收到通知,然后您可以再次加载所有视图。