Android アプリケーションでローカライズを無効にする方法はありますか? 英語の文字列のみを使用する必要があります。フランス語にローカライズされた文字列を含むライブラリ プロジェクトがあります。これらのライブラリを使用するアプリには、英語のみである必要があるものと、そうでないものがあります。
3 に答える
2019 - Gradle ベースのアプローチ
Nidhinがanswerで指摘したように、これは 2012 年よりも簡単になり、エラーが発生しにくくなっています。ファイルのセクションのセクションで、サポートする単一の言語に設定できdefaultConfig
ます。例えば:android
build.gradle
resConfigs
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());
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());