【问题标题】:AppleLanguages value overrides the value of language set in IOS settings preferred languageAppleLanguages 值覆盖 IOS 设置首选语言中设置的语言值
【发布时间】:2013-10-30 02:15:48
【问题描述】:

我正在对支持西班牙语和英语的应用程序进行本地化。这些选项列在表格视图中。单击英语时,我正在为 NSUserDefaults 中的键“AppleLanguages”设置值“en”。所以它可以用英文显示内容。

NSUserDefaults *nsdefault=[NSUserDefaults standardUserDefaults];
            [nsdefault setObject:[NSArray arrayWithObject:@"en"] forKey:@"AppleLanguages"];
            [nsdefault synchronize];

同时,我试图以编程方式从 IOS 设备中获取语言,该设备设置为 General>>International>>Language,使用代码手动设置。

NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0];

语言第一次为我提供了已设置的正确值。但如果我从西班牙语或英语等列表中更改我的选项并为键“AppleLanguages”设置值。它会覆盖我的设备设置语言的值。并且从那时起,我在设置>>国际>>语言下没有得到正确的语言值。

我希望每次在 Francis 等设置中手动选择语言。我应该能够获得新设置的语言。我什至尝试点击苹果的链接。

https://developer.apple.com/library/mac/documentation/macosx/conceptual/bpinternational/Articles/ChoosingLocalizations.html

任何帮助将不胜感激。

【问题讨论】:

    标签: ios settings nslocalizedstring overriding


    【解决方案1】:

    没有正确的方法可以做到这一点,您不应该这样做。
    您应该只依赖系统设置。我给了你一个不这样做的理由:所有系统调用都是用系统语言进行的。如果您在英语系统中强制使用一种语言(例如西班牙语)并在应用程序中显示地图,您将看到所有英语街道等,如果您请求反向地理编码或其他系统服务,也会发生同样的情况。

    【讨论】:

    • 当然有很多充分的理由要覆盖关于界面语言的默认系统行为。网上有很多关于这个的讨论,我不会在这里重复,但在我的具体情况下,我正在构建一个英语学习应用程序,我们的一些日本用户表示他们希望将用户界面语言设置为英语(感觉更沉浸)而其他用户更喜欢将其保留为默认日语。设置 AppleLanguages 可能不是最好的方法。从这里开始获取其他想法:tinyurl.com/ui-language-in-ios
    • 感谢您的宝贵参考和合理的理由
    猜你喜欢
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    相关资源
    最近更新 更多