Skip to content

ローカライズのテスト

ローカライズをテストするには、異なるロケールに対して正しい翻訳済み文字列が表示されることを確認し、フォーマットやレイアウトがそのロケールの要件に適応していることを確認します。

各プラットフォームでのロケールのテスト

Android

Androidでは、Settings | System | Languages & input | Languages(設定 | システム | 言語と入力 | 言語)からデバイスのシステムロケールを変更できます。 自動テストの場合は、adb シェルを使用してエミュレーターのロケールを直接変更できます。

shell
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自動テストの場合、起動引数を使用してロケールの変更をシミュレートします。

swift
app.launchArguments = [
    "-AppleLanguages", "(es)",
    "-AppleLocale", "es_ES"
]

デスクトップ

デスクトップでは、JVMのロケールは通常、オペレーティングシステムのロケールがデフォルトになります。 設定場所はデスクトッププラットフォームによって異なります。

UIが初期化される前に、テストのセットアップまたはアプリケーションのエントリポイントでJVMのデフォルトロケールをプログラムで設定できます。

java
java.util.Locale.setDefault(java.util.Locale("es_ES"))

Web

素早く確認するには、ブラウザの設定で言語設定を変更できます。 自動テストの場合は、SeleniumやPuppeteerなどのブラウザ自動化ツールを使用してロケールの変更をシミュレートできます。

あるいは、window.navigator.languages プロパティの読み取り専用制限をバイパスして、カスタムロケールを導入することも可能です。詳細は チュートリアルをご覧ください。

主なテストシナリオ

カスタムロケール

  • プログラムでロケールをオーバーライドする。
  • UI要素、フォーマット済み文字列、およびレイアウトが、選択したロケールに正しく適応していること(該当する場合は右から左に書くテキスト(RTL)の処理を含む)をアサートします。

デフォルトのリソース

指定されたロケールの翻訳が利用できない場合、デフォルトのリソースが使用されます。 アプリケーションは、これらのデフォルトに正しくフォールバック(fallback)する必要があります。

  • 上述のプラットフォーム固有の方法を使用して、サポートされていない値にロケールを設定します。
  • フォールバックメカニズムがデフォルトのリソースを正しく読み込み、適切に表示されることを確認します。

ロケール固有のケース

一般的なローカライズの問題を避けるために、以下のロケール固有のケースを考慮してください。

  • 日付形式(MM/dd/yyyydd/MM/yyyy など)や数値形式などのロケール固有のフォーマットをテストします。
  • RTLおよびLTRの動作を検証し、アラビア語やヘブライ語のような右から左に書く言語で、文字列、レイアウト、配置が正しく表示されることを確認します。