5

Android アプリケーションでローカライズを無効にする方法はありますか? 英語の文字列のみを使用する必要があります。フランス語にローカライズされた文字列を含むライブラリ プロジェクトがあります。これらのライブラリを使用するアプリには、英語のみである必要があるものと、そうでないものがあります。

4

3 に答える 3

13

2019 - Gradle ベースのアプローチ

Nidhinanswerで指摘したように、これは 2012 年よりも簡単になり、エラーが発生しにくくなっています。ファイルのセクションのセクションで、サポートする単一の言語に設定できdefaultConfigます。例えば:androidbuild.gradleresConfigs

android {
    defaultConfig {
        resConfigs "en"
    }
}

これは単にローカライズを無効にするためではなくresConfigs、保持するリソースをビルド システムに指示するだけです。単一の言語に設定することも、理想的には複数の言語に設定することもできます。また、画面密度など、言語以外でリソースをフィルター処理するためにも使用できます。そのため、「英語のリソースのみを含める」と言うと、事実上、アプリは常にその言語で表示されます。

特定の言語のリソースをロードするプログラムによる方法は、依然として有用な場合があるため、2012 年の私の回答は引き続き提供されます。

2012 - プログラムによるアプローチ

ロケール固有のリソースをロードする呼び出しsetContentView()などの前に次のことを行うと、常に英語の文字列のみをロードすることが保証されます。

Resources res = getApplicationContext().getResources();

Locale locale = new Locale("en");
Locale.setDefault(locale);

Configuration config = new Configuration();
config.locale = locale;

res.updateConfiguration(config, res.getDisplayMetrics());
于 2012-06-14T00:14:50.327 に答える
5

Android の通常の動作では、特定の言語をサポートする場合にのみその言語を定義します。フランス語の場合、values-fr/strings.xml になります。フランス語をサポートしたくない場合は、フランス語用のstrings.xmlを含めないでください。値フォルダーのstrings.xmlにフォールバックします

http://developer.android.com/guide/topics/resources/localization.html

提供された文字列を制御できない場合、またはサポートするロケールを動的に設定したい場合は、デフォルトのロケールをオーバーライドできます。

http://developer.android.com/reference/java/util/Locale.html#setDefault(java.util.Locale )

編集

私が言及するのを忘れていたのは、新しい構成で構成を更新する必要があるということです

Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,getBaseContext().getResources().getDisplayMetrics());
于 2012-06-13T11:53:45.283 に答える