1

英語とスウェーデン語に対応したAndroidアプリを作りたかった。ローカリゼーションの概念を理解しました。しかし、英語のボタンをクリックすると英語に従って文字列が読み込まれ、スウェーデン語のボタンをクリックするとスウェーデン語の文字列が読み込まれるようにするための2つのボタンが必要でした。これどうやってするの?

4

3 に答える 3

1

Sv=スウェーデン語... en=英語... languageToLoad に言語コードを入力します。

    String languageToLoad  = "Sv"; // your language
    Locale locale = new Locale(languageToLoad); 
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    getBaseContext().getResources().updateConfiguration(config, 
    getBaseContext().getResources().getDisplayMetrics());
    this.setContentView(R.layout.main);
于 2012-12-08T13:43:33.687 に答える
0

私の答えは他のものと似ていますが、重要かもしれないいくつかの追加事項を追加しました

警告

Android フレームワークでサポートされておらず、問題が発生する可能性があるため、アプリで言語を変更できるようにすることはお勧めできません。

そうは言っても、私は自分のアプリでそれを行いましたが、少し苦労しましたが、今のところうまくいっているようです. あなたがこのようにしたい場合に備えて、これが私がやった方法です。言語ごとに個別の strings.xml ファイルが必要です。デフォルトとして値フォルダーのstrings.xml、たとえばスペイン語の文字列のvalues-esフォルダーのstrings.xml。次のコードを使用して、ユーザーが選択したラジオ ボタンに応じて構成設定を変更しました。

`

final Configuration LANG_CONFIG = ChooseLocale.this.getResources().getConfiguration();
                    Locale newLocale = new Locale("English");
                    curLang = ChooseLocale.this.getLanguage();
                    if ((curLang.equals("English")) || (curLang.equalsIgnoreCase("Ingles")))
                    {
                        newLocale = new Locale("en_US");
                    }
                    else
                    {
                        newLocale = new Locale("es");
                    }
                    Toast.makeText(getApplicationContext(), newLangToast + " " + curLang , Toast.LENGTH_SHORT).show();
                    Configuration config = getBaseContext().getResources().getConfiguration();
                    Locale.setDefault(newLocale);
                    config.locale = newLocale;
                    getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());

                    SharedPreferences.Editor editor = langPref.edit();
                    editor.putString(LANG_PREF, curLang);
                    editor.commit();
`

この行は、構成を更新するために最も重要です

getBaseContext().getResources().updateConfiguration(config,getBaseContext().getResources().getDisplayMetrics());

必要に応じて処理できる getLanguage() 関数からローカルを取得します。私も追加しなければなりませんでした

@Override public void onConfigurationChanged(Configuration newConfig) { newConfig = Globals.getUserLanguage(this); super.onConfigurationChanged(newConfig);向きの変更を許可するすべてのアクティビティに追加し、これをそれぞれの onCreate() に追加します

final SharedPreferences langPref = getSharedPreferences (LANG_PREF, 0); if (Globals.langConfig != null) this.onConfigurationChanged(Globals.langConfig);

android:configChanges="orientation|locale"また、マニフェストの各アクティビティに、向きを変更できるように追加しました。ユーザーの言語設定を DB に保存します。これは Web サイトまたはアプリ内で変更できます。お役に立てれば。

于 2012-12-08T15:17:41.430 に答える
0

英語用とスウェーデン語用の 2 つのボタンを宣言します。あなたのコードはenglish en、このようにローカリゼーションswedish svを使用しています..

            Locale myLocale = new Locale(lang);
            Resources res = getResources();
            DisplayMetrics dm = res.getDisplayMetrics();
            Configuration conf = res.getConfiguration();
            conf.locale = myLocale;
            res.updateConfiguration(conf, dm);

この簡単な例をチェックして、目標を達成してください。

于 2012-12-08T13:58:23.417 に答える