2

私のアプリでは、言語を求めています。英語またはドイツ語のいずれかです。選択した言語とその ISO コードが設定に保存されます。選択した言語に基づいて、すべてのテキストを対応する言語に変更する必要があります。

このために、res/values と res/values-de を作成しました。各フォルダーには、strings.xml ファイルが含まれています。問題は次のとおりです。1) opengl を使用してカメラと画面を開いています。両方をナビゲートした後、テキストが完全にドイツ語に変わりません (選択した場合)。一部のテキスト値はドイツ語に変更され、同じページにはありません。2) カメラと OpenGL 画面を通過しなくても、結果は常に 100% 達成されるわけではありませんが、ケース 1 と比較して常により良い結果が得られます。

私の実装: 1) スプラッシュ スクリーンの onResume() で、config.locale() の助けを借りて、設定に基づいてロケールを変更しています。2) マニフェスト ファイルでは、各アクティビティは activity:configChanges="locale" で設定されます。3) カメラ アクティビティと opengl アクティビティでは、onConfigurationChanged() がオーバーライドされ、設定に従ってロケールを再度設定しています。

ロケールの問題を解決する方法を教えてください。

4

3 に答える 3

0

私のアプリにも同様の問題がありました。アプリには、トルコ語と英語の間で強制的に言語を変更するオプションがあります。デバイスの言語が英語で、アプリをトルコ語で使用している場合、以下のコードで言語を簡単に変換できます。

public void setAppLanguage(String languageCode) {

        String countryCode;

        if (languageCode.equals("tr")){
            countryCode = "TR";
        }else{
            countryCode = "US";
        }

        Locale locale = new Locale(languageCode, countryCode);
        Locale.setDefault(locale);
        Resources res = getResources();
        DisplayMetrics dm = res.getDisplayMetrics();
        Configuration conf = res.getConfiguration();
        conf.locale = locale;
        res.updateConfiguration(conf, dm);

        loginPrefsEditor.putString("uLang",languageCode);
        loginPrefsEditor.apply();


    }

ただし、カメラを開いてそこから戻ると、アプリの言語がデフォルトの電話言語に戻ります。カメラを開くと、アプリがアクティビティを強制終了します。カメラから戻った後、すべてをリフレッシュします。この問題を解決するために、強制変更言語メソッドをすべてのアクティビティのonResume()メソッドに入れました。

これを行うことで、この問題を解決できるようになります。

于 2015-07-09T14:44:18.040 に答える