ここであなたがやりたい方法です。コード内でこれを行う別の方法はないと思います。
// 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
}
EDIT 2:あなたはあなたの最初のViewController
のviewDidLoad
にアプリの最初の打ち上げのために何ができるか
:
if let languageArray = UserDefaults.standard.object(forKey: "AppleLanguages") as? [String],
languageArray.count >= 1,
languageArray[0] != "Base" && languageArray.count == 1 {
UserDefaults.standard.set(["Base"], forKey: "AppleLanguages")
UserDefaults.standard.synchronize()
}
。 最初のオプションを実装する方法 –
最初のオプションは、メソッドでシングルトンを使用し、 'YourSingleton.sharedInstance 'によってNSLocalizedString'呼び出しを置き換えることができます。 localizedString( "yourKey") '、またはメソッドをグローバルに宣言します(プロジェクトのどこからでもアクセスできるように、クラスの外に) – Jeremy
以下のコードは機能しました。 UserDefaults.standard.synchronize() ' –