NSLocalizedString与来自app的切换语言

时间:2014-04-13 22:34:24

标签: ios objective-c localization

我需要使用Localization在按钮点击时切换语言。

我试过这个,这个元素没有刷新的错误。

- 他们这样设置:

self.lblSectionMyPictures.text=NSLocalizedString(@"lblSectionMyPictures", nil);

要切换的代码:

- (void)SwitchToFrench{
    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"fr", nil]
                                              forKey:@"AppleLanguages"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    [self.view setNeedsDisplay];
 }

- (void)SwitchToEnglish{
    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"en", nil]
                                              forKey:@"AppleLanguages"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    [self.view setNeedsDisplay];
 }

任何想法\最佳实践?

1 个答案:

答案 0 :(得分:1)

Apple的本地化解决方案不支持即时切换本地化。字符串加载一次,然后再也没有改变。

如果您坚持不懈地追求切换语言(根据我的经验,这是一种无法实现的理想选择),我认为您最好的选择是创建自己的KVO兼容本地化字符串提供程序并绑定每个GUI元素(按钮的标题) ,文本字段的值等)。启用AutoLayout后,甚至可以正常工作。