Swift中的本地化 - 即使应用程序有更多语言,也可以将应用程序限制为一种语言

时间:2017-09-27 12:14:58

标签: ios swift localization

我在Swift 3.2中开发了一个应用程序,目前使用的是基础语言英语。我添加了阿拉伯语和法语的String文件。 但是直到我的团队完成和测试的所有内容我都希望将应用程序限制为一种语言,因为即使是英文版本也需要解决问题并上传到App Store。 删除sting和nib文件选项对我不起作用。

如果有任何代码我可以添加到appdelegate以限制仅适用于英语的应用,请告知我们。

I have tried disabling language Arabic in Settings which deletes localized string files

3 个答案:

答案 0 :(得分:2)

didFinishLaunchingWithOptions第一行中向AppDelegate添加以下代码,从左到右强制应用。 然后在编辑方案中 - 在启动时添加了一个参数-AppleLanguages (Base)。我非常适合强迫用户使用英语。

UIView.appearance().semanticContentAttribute = .forceLeftToRight
    UserDefaults.standard.set(["Base"], forKey: "AppleLanguages")
    UserDefaults.standard.synchronize()

enter image description here

答案 1 :(得分:1)

您是否尝试从项目文件中的本地化设置中删除语言?

这是基于apple提供的指南:Enabling Base Internationalization Image taken from developer.apple.com

我相信你不必删除任何东西。这只会禁用本地化。

答案 2 :(得分:0)

这是一种做你想要的方法。我不认为在代码中有另一种方法可以做到这一点。

// You can change 'Base' to 'en' if you don't have Base.lproj folder 
func localizedString(_ key: String) -> String? {
    if let path = Bundle.main.path(forResource: "Base", ofType: ".lproj"),
        let baseBundle = Bundle(path: path) {
        return baseBundle.localizedString(forKey: key, value: nil, table: nil)
    }
    return nil
}

编辑:我找到了另一种基于此answer的方法。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    UserDefaults.standard.set(["Base"], forKey: "AppleLanguages")
    UserDefaults.standard.synchronize()
    // Rest of your init code
}

编辑2:

您在初始viewDidLoad的{​​{1}}首次发布应用时可以做些什么:

ViewController