【问题标题】:how to force an ios app to use a certain localization?如何强制 ios 应用使用特定的本地化?
【发布时间】:2014-06-01 07:55:16
【问题描述】:

我有一个具有两种本地化(希伯来语和英语)的应用程序,我被要求取消英语本地化,以便无论您的设备是什么语言,该应用程序都是相同的(但保存本地化以供将来使用) .

本地化是通过 Localizable.strings 和 Xib 本地化(分配它们)。

有没有办法告诉应用始终使用某种本地化并忽略设备语言?

谢谢!

【问题讨论】:

    标签: ios localization localizable.strings


    【解决方案1】:

    我已将它改编为 Swift 并使用它轻松测试本地化。当放置在 AppDelegate->didFinishLaunchingWithOptions 中时,模拟器需要运行两次才能获得正确的设置,但也许有更好的方法。

    在示例中使用了丹麦语本地化,更多内容可以在此处找到:Locale codes for iPhone lproj folders

    let langCultureCode: String = "da"
    let defaults = NSUserDefaults.standardUserDefaults()
    defaults.setObject([langCultureCode], forKey: "AppleLanguages")
    defaults.synchronize()
    

    并再次删除默认值:

    let defaults = NSUserDefaults.standardUserDefaults()
    defaults.removeObjectForKey("AppleLanguages")
    defaults.synchronize()
    

    【讨论】:

    • 你不知道你救了我多少命。在我的应用程序中,我正在努力强制 MapView 结果( cityName , countryName )以英文而不是本地结果( Arabic )显示。这成功了。七种祝福给你的灵魂!
    【解决方案2】:

    在这种情况下,只需在启动时尽早设置默认键 AppleLanguages 以覆盖 IOS 设置

    (EARLY = 在使用 xib/storyboard 或 NSLocalizedString 之前)

    NSString *langCultureCode = @"he";
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:@[langCultureCode] forKey:@"AppleLanguages"];
    [defaults synchronize];
    

    【讨论】:

    • 谢谢!!它有效(我用他而不是he_IL)。谢谢分配!
    • 但我认为之后需要重新加载根视图才能立即看到更改。
    • 有什么方法可以在应用程序第一次加载时完成这项工作?即使在didFinishLaunchingWithOptions的第一行调用了sn-p,强制本地化似乎只在第二次加载应用程序时起作用
    • 您必须在 main.m 中执行此操作才能使其 100% 工作。对于需要提交的应用,不推荐这种方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 2021-12-08
    相关资源
    最近更新 更多