ios - 首次运行IOS时设置默认语言

标签 ios cocoa-touch nsuserdefaults nslocale

我试图在我的应用程序首次运行时设置语言。

在看到这个问题后,我决定也这样做。

Setting default language for iPhone app on first run

我对代码进行了一些修改,然后做了这个:

int main(int argc, char * argv[]) {
    @autoreleasepool {
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        [defaults setObject:@[[ITConf getStringForKey:ITConfLocale]] forKey:@"AppleLanguages"];
        [defaults synchronize];
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([ITAppDelegate class]));
    }
}

但这段代码不起作用(第二次启动后进行更改)。 然而,下面的代码执行没有任何问题:

int main(int argc, char * argv[]) {
    @autoreleasepool {
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        [defaults setObject:@[@"fr"] forKey:@"AppleLanguages"];
        [defaults synchronize];
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([ITAppDelegate class]));
    }
}

我不明白为什么。 ITConf 从 .plist 文件返回一个字符串见:

NSString *fileP = [[NSBundle mainBundle] pathForResource:@"Conf" ofType:@"plist"];
dictionary = [[NSDictionary alloc] initWithContentsOfFile:fileP];
return dictionary[key];

我使用 LLDB 进行了验证,并使用正确的值正确返回了 NSString。

这对我来说就像黑魔法!

最佳答案

在我的案例中,Info.plist 中的下一个设置解决了本地化和 Storyboard RTL 的问题。

Set default language

关于ios - 首次运行IOS时设置默认语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22448407/

相关文章:

iphone - 在 3/4 行之后,scrollToRowAtIndexPath 未滚动到正确的行

iphone - 究竟是决定使用NSUserDefaults还是CoreData的“大量数据”是什么?

ios - MKPlacemark() 创建保留周期

ios - 如何在 iOS 中缓存 NSDATA json

iphone - UIView 大小不接受大于 17000 像素的大小

ios - 将 NSUserDefault 存储在钥匙串(keychain)中

ios - 替换 CloudKit 记录时遇到问题

ios - 标签文本不会改变,但 View 接收变量

iphone - UITableView 自定义单元格显示奇怪的结果?

ios - 访问属性的EXC_BAD_ACCESS异常