ローカライズのテスト
ローカライズをテストするには、異なるロケールに対して正しい翻訳済み文字列が表示されることを確認し、フォーマットやレイアウトがそのロケールの要件に適応していることを確認します。
各プラットフォームでのロケールのテスト
Android
Androidでは、Settings | System | Languages & input | Languages(設定 | システム | 言語と入力 | 言語)からデバイスのシステムロケールを変更できます。 自動テストの場合は、adb シェルを使用してエミュレーターのロケールを直接変更できます。
adb -e shell
setprop persist.sys.locale [BCP-47 language tag];stop;sleep 5;startこのコマンドはエミュレーターを再起動し、新しいロケールでアプリを再起動できるようにします。
あるいは、Espressoなどのフレームワークを使用して、テストを実行する前にプログラムでロケールを設定することもできます。 例えば、LocaleTestRule() を使用して、テスト中のロケール切り替えを自動化できます。
iOS
iOSでは、Settings | General | Language & Region(設定 | 一般 | 言語と地域)からデバイスのシステム言語と地域を変更できます。 XCUITestフレームワークを使用したUI自動テストの場合、起動引数を使用してロケールの変更をシミュレートします。
app.launchArguments = [
"-AppleLanguages", "(es)",
"-AppleLocale", "es_ES"
]デスクトップ
デスクトップでは、JVMのロケールは通常、オペレーティングシステムのロケールがデフォルトになります。 設定場所はデスクトッププラットフォームによって異なります。
UIが初期化される前に、テストのセットアップまたはアプリケーションのエントリポイントでJVMのデフォルトロケールをプログラムで設定できます。
java.util.Locale.setDefault(java.util.Locale("es_ES"))Web
素早く確認するには、ブラウザの設定で言語設定を変更できます。 自動テストの場合は、SeleniumやPuppeteerなどのブラウザ自動化ツールを使用してロケールの変更をシミュレートできます。
あるいは、window.navigator.languages プロパティの読み取り専用制限をバイパスして、カスタムロケールを導入することも可能です。詳細は チュートリアルをご覧ください。
主なテストシナリオ
カスタムロケール
- プログラムでロケールをオーバーライドする。
- UI要素、フォーマット済み文字列、およびレイアウトが、選択したロケールに正しく適応していること(該当する場合は右から左に書くテキスト(RTL)の処理を含む)をアサートします。
デフォルトのリソース
指定されたロケールの翻訳が利用できない場合、デフォルトのリソースが使用されます。 アプリケーションは、これらのデフォルトに正しくフォールバック(fallback)する必要があります。
- 上述のプラットフォーム固有の方法を使用して、サポートされていない値にロケールを設定します。
- フォールバックメカニズムがデフォルトのリソースを正しく読み込み、適切に表示されることを確認します。
ロケール固有のケース
一般的なローカライズの問題を避けるために、以下のロケール固有のケースを考慮してください。
- 日付形式(
MM/dd/yyyyとdd/MM/yyyyなど)や数値形式などのロケール固有のフォーマットをテストします。 - RTLおよびLTRの動作を検証し、アラビア語やヘブライ語のような右から左に書く言語で、文字列、レイアウト、配置が正しく表示されることを確認します。
