テスト用の場合は、問題なくロケールをプログラムで変更できます。アプリの設定が変更され、新しいロケールでコードをテストすることができます。ユーザーが変更した場合と同じ効果があります。テストを自動化する場合は、adb shell
をdescribed hereとしてロケールを変更するスクリプトを作成し、その後にテストを開始することができます。ここで
は、英語、ドイツ語、スペイン語のロケールのために "キャンセル" 単語のテスト翻訳の例である:ここで
public class ResourcesTestCase extends AndroidTestCase {
private void setLocale(String language, String country) {
Locale locale = new Locale(language, country);
// here we update locale for date formatters
Locale.setDefault(locale);
// here we update locale for app resources
Resources res = getContext().getResources();
Configuration config = res.getConfiguration();
config.locale = locale;
res.updateConfiguration(config, res.getDisplayMetrics());
}
public void testEnglishLocale() {
setLocale("en", "EN");
String cancelString = getContext().getString(R.string.cancel);
assertEquals("Cancel", cancelString);
}
public void testGermanLocale() {
setLocale("de", "DE");
String cancelString = getContext().getString(R.string.cancel);
assertEquals("Abbrechen", cancelString);
}
public void testSpanishLocale() {
setLocale("es", "ES");
String cancelString = getContext().getString(R.string.cancel);
assertEquals("Cancelar", cancelString);
}
}
は、Eclipseの実行結果は以下のとおりです。
アンドロイドOアップデート。
Android OのメソッドLocale.setDefault(Category.DISPLAY, locale)
で実行している場合は、詳しくはbehaviour changesを参照してください。
私はまた、これに興味があるので、奨励金です。私の特質:私はEclipse内からテストしています。スイート内でできるだけスムーズにタイムゾーンを含むロケールを変更したいと考えています。私は答えでそれを行う方法の実例を見たいと思います。 –
@MattGibson私は実際の例で私の答えを更新しました。これは、日付フォーマッタとアプリケーションリソースの両方のロケールを変更します。 –