Translations Editor による UI のローカライズ(ビュー)

コンセプトと Jetpack Compose の実装

Translations Editor では、デフォルトの文字列リソースとその翻訳版をすべてまとめて表示して編集できます。

アプリをさまざまな言語に翻訳する方法の概要については、各種の言語と文化をサポートするをご覧ください。

図 1. Translations Editor による翻訳前のアプリテキストの表示

Design Editor から Translations Editor を開く

Layout Editor の Design Editor から Translations Editor を開くと、レイアウトに合わせてデフォルトおよび翻訳版のテキストを編集できます。Design Editor での言語の切り替えについては、Design Editor による翻訳版テキストの表示をご覧ください。

  1. 左側の [Project] > [Android] パネルで、[ModuleName] > [res] > [layout] を選択します。
  2. content_main.xml をダブルクリックして編集画面を開きます。
  3. 左下隅の [Design] タブをクリックして、Design Editor を表示します。
  4. Design Editor で、言語プルダウン リスト をクリックします。
  5. [Edit Translations] を選択します。

Design Editor による翻訳版テキストの表示

翻訳版テキストがアプリのレイアウトでどのように表示されるかを確認するには、次のように、Design Editor でデフォルトのテキストを翻訳版テキストに切り替えます。

  1. 左側の [Project] > [Android] パネルで、[ModuleName] > [res] > [layout] を選択します。
  2. content_main.xml をダブルクリックして編集画面を開きます。
  3. 左下隅の [Design] タブをクリックして、Design Editor を表示します。
  4. Design Editor で、言語プルダウン リスト をクリックします。
  5. [Edit Translations] を選択します。
  6. アプリの表示に使用する言語を選択します。

    図 2. 言語のプルダウン リストからスペイン語を選択したところ

Design Editor に、選択した言語(この場合はスペイン語)でアプリのレイアウトが表示されます。

図 3. Design Editor にスペイン語の翻訳版テキストが表示される

Design Editor をデフォルトの言語に戻す

言語をデフォルトに戻すには、[es] > [Language] を選択します。

ローカライズ可能なテキストの管理とテスト

Android プラットフォームと Android Studio には、ローカライズ可能なアプリテキストの管理とテストに役立つ機能がいくつか用意されています。そうした機能の中には、右から左に記述する(RTL)言語(アラビア語やヘブライ語など)に関する問題の解決に役立つオプションがあります。ローカライズ可能なテキストをテストすることで、メッセージをソース リポジトリにコミットして翻訳に送る前に、UI テキストとそのレイアウトを調整できます。

RTL をサポートするためのプロジェクトのリファクタリング

Android Studio には、TextViewConstraintLayout、および LinearLayout 要素で双方向テキストをサポートするためのリファクタリング コマンドが用意されています。これにより、左から右に記述する(LTR)言語と右から左に記述する(RTL)言語の両方のテキストについて、アプリでの表示とユーザーによる編集が可能になります。このコマンドは、アプリの UI レイアウトとすべてのビュー ウィジェットの自動ミラーリングも行います。テキスト方向の変更とレイアウトのミラーリングを確認するには、Layout Editorテキスト方向とレイアウト方向のプロパティも設定する必要があります。

RTL をサポートするためにプロジェクトをリファクタリングする手順は次のとおりです。

  1. [Refactor] > [Add RTL support where possible] を選択して、図 4 に示すダイアログを表示します。

    図 4. RTL サポートの追加

    • AndroidManifest.xml ファイルの <application> 要素に android:supportsRTL="true" 属性がない場合は、[Update AndroidManifest.xml] チェックボックスをオンにします。
    • アプリの targetSdkVersion が 17 以上の場合は、[Replace Left/Right Properties with Start/End Properties] を選択します。この場合、プロパティ名で「Left」と「Right」の代わりに「Start」と「End」が使用されます。たとえば、android:paddingLeftandroid:paddingStart になります。
    • アプリの targetSdkVersion が 16 以下の場合は、[Generate -v17 Versions] を選択します。この場合、XML では両方のプロパティ セットが使用されます。たとえば、android:paddingLeftandroid:paddingStart の両方が XML で使用されます。
  2. [Run] をクリックして、[Find Refactoring Preview] ウィンドウを表示します。

    図 5. プレビューの確認

  3. [Do Refactor] をクリックします。

RTL をサポートするためのプロジェクトのリファクタリングについては、Android 4.2 のネイティブ RTL サポートをご覧ください。

テキスト方向とレイアウト方向のプロパティ

右側の [Properties] ウィンドウには、テキスト コンポーネントとレイアウト コンポーネントの方向を変更するためのプロパティがあります。テキスト ウィジェットには [textDirection] プロパティを使用し、レイアウト ウィジェットには [layoutDirection] プロパティを使用します。方向のプロパティは、右側の [Properties] ウィンドウにリストされ、API レベル 17 以上で機能します。

テキスト方向の変更とレイアウトのミラーリングを確認するには、RTL をサポートするようにプロジェクトをリファクタリングする必要もあります。英語では、テキスト方向を変更しても句読点がテキストの右側から左側に移動するだけです。たとえば、「Hello World!」は「!Hello World」になります。LTR テキストが RTL に切り替わるのを確認するには、アプリで RTL 言語を使用する必要があります。英語を使用している場合に、テスト目的で RTL テキストへの切り替えを確認するには、架空言語を使用します。架空言語は、リファクタリング コマンドと方向プロパティとは無関係です。

方向プロパティにアクセスして使用する手順は次のとおりです。

  1. Layout Editor で、テキスト ウィジェットを選択します。
  2. [Properties] ウィンドウを開き、使用する RTL プロパティを検索します。プロパティの値を設定するには、次のいずれかを選択します。

    • firstStrong: ルートビューのデフォルト。最初に現れた強い方向性を持つ文字により、段落の方向が決定されます。強い方向性を持つ文字がない場合、段落の方向はビューの判定されたレイアウト方向と同じになります。
    • anyRtl: 強い RTL 文字が含まれている場合、段落の方向は RTL になります。それ以外の場合は、強い LTR 文字が含まれていれば、LTR になります。どちらも含まれていない場合、段落の方向はビューの判定されたレイアウト方向と同じになります。
    • ltr: 段落の方向は LTR になります。
    • rtl: 段落の方向は RTL になります。
    • locale: 段落の方向はシステム ロケールに基づき決定されます。
    • inherit: デフォルト。親に設定された方向が使用されます。

    : 強い方向性を持つ文字とは、固有の決まった記述方向を持つ文字のことで、ほとんどのアルファベット文字と音節文字、非ヨーロッパ数字と非アラビア数字、漢字、言語固有の句読文字などが含まれます。

  3. テキストとレイアウトの反転を確認するには、アプリを実行します。