2017-09-27 8 views
0

Swift 3.2には、現在基本言語英語で公開されているアプリを開発しました。私はアラビア語とフランス語のためのStringファイルを追加しました。 しかし、すべての時間が完了し、私のチームによってテストされるまで、私は英語版であってもApp Storeにアップロードする必要があるため、アプリケーションを1つの言語に制限したい。 stingとnibファイルのオプションを削除することはできません。Swiftのローカリゼーション - アプリの言語が多い場合でもアプリケーションを1つの言語に制限

appdelegateに追加して、英語のみのアプリを制限するコードがあるかどうか教えてください。

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

答えて

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 
} 

EDIT 2:あなたはあなたの最初のViewControllerviewDidLoadにアプリの最初の打ち上げのために何ができるか

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() 
    } 
+0

。 最初のオプションを実装する方法 –

+0

最初のオプションは、メソッドでシングルトンを使用し、 'YourSingleton.sharedInstance 'によってNSLocalizedString'呼び出しを置き換えることができます。 localizedString( "yourKey") '、またはメソッドをグローバルに宣言します(プロジェクトのどこからでもアクセスできるように、クラスの外に) – Jeremy

+1

以下のコードは機能しました。 UserDefaults.standard.synchronize() ' –

0

はあなたがローカライズ設定から言語を削除しようとしたことがありプロジェクトファイル?

これはアップルが提供するガイドに基づいています:Enabling Base Internationalization Image taken from developer.apple.com

私はあなたが何かを削除する必要はないと考えています。これにより、ローカリゼーションが無効になります。

+0

このオプションは、私が望まないファイルを削除します。 –

1

次のコードをAppDelegateに追加しました。didFinishLaunchingWithOptions最初の行は、アプリケーションを左から右に強制します。 次に、Edit Scheme - 起動時に引数を追加しました-AppleLanguages (Base)。ユーザーの英語力を強く働かせることができます。 2番目のオプションを試す

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

enter image description here

関連する問題