Translations Editor による UI のローカライズ

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

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

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

文字列リソース

プロジェクトの文字列リソースは、strings.xml ファイルに入っています。プロジェクトには、アプリのデフォルト言語の文字列リソースを入れておくための、デフォルト strings.xml ファイルがあります。デフォルト言語とは、そのアプリのユーザーの多くが使うと考えられる言語です。また、そのアプリでサポートする他の言語の文字列リソースを入れておくための、翻訳版 strings.xml ファイルも追加できます。

デフォルト strings.xml ファイルが完成したら、自分で、または有料の専門的サービスを利用して翻訳版を追加します。いずれの場合も、Android Studio の機能を利用して、ローカライズ可能なテキストの管理とテストを行うことをおすすめします。翻訳の専門的サービスについては、翻訳サービスの注文をご覧ください。

Translations Editor を開く

Android Studio の以下の場所から Translations Editor を開くことができます。

Android ビューから開く

  1. 左側の [Project] > [Android] パネルで、[ModuleName] > [res] > [values] を選択します。
  2. [strings.xml] ファイルを右クリックし、[Open Translations Editor] を選択します。

    Translations Editor に、strings.xml ファイル内のキーと値のペアが表示されます。

    注: 翻訳版 strings.xml ファイルがある場合、プロジェクトには対応する values フォルダが複数存在します。翻訳版のフォルダ名には言語を示す接尾辞が付きます。たとえば、スペイン語の場合は values-es です。デフォルト strings.xml ファイルは常に values(接尾辞なし)フォルダにあります。

図 1 は、ある簡単なアプリ用のデフォルトのアプリテキスト(この例では英語)を Translations Editor で表示した画面です。これは、翻訳作業を行う前の状態です。翻訳版 strings.xml ファイルの内容は、図 2 に示すとおり、[Untranslatable] 列の右側の各列に言語ごとに表示されます。

strings.xml 編集画面から開く

任意の strings.xml ファイルの編集画面から Translations Editor を開くことができます。

  1. 左側の [Project] > [Android] パネルで、[ModuleName] > [res] > [values] を選択します。
  2. strings.xml をダブルクリックして編集画面を開きます。
  3. strings.xml 編集画面で、右上隅の [Open editor] をクリックします。

注: [Hide notification] をクリックすると、[Open editor] が非表示になります。元に戻すには、プロジェクトを閉じて再度開きます。

Design 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] を選択します。

翻訳不可の行を設定する

Translations Editor の [Untranslatable] を選択して、その行のテキストが翻訳不可であることを示せます。たとえば、商品名や商標などの商品固有のテキストや、定訳のない技術用語などは翻訳不可にする場合があります。

[Untranslatable] をオンにすると、デフォルト strings.xml ファイルの該当行に translatable="false" が追加されます。次の例では、最初の行の EasyApp を商品名のため翻訳不可としています。

    <resources>
        <string name="app_name" translatable="false">EasyApp</string>
        <string name="action_settings">Settings</string>
        <string name="easy_app">I am a Simple App!</string>
        <string name="next_page">Next Page</string>
        <string name="second_page_message">I am the Second Page!</string>
        <string name="title_activity_second">SecondActivity</string>
    </resources>
    

言語の追加と削除

Translations EditorBCP 47 に準拠しており、ロケールコードと地域(国)コードの組み合わせによりローカライズのターゲットを指定します。ロケールで定義されるのは言語のみではありません。国によって異なる日時、通貨、小数などの書式についても定義されます。

言語を追加する手順は次のとおりです。

  1. Translations Editor で、地球アイコン をクリックします。
  2. プルダウン リストから、追加する言語を選択します。

    新しい言語が Translations Editor に表示され、strings.xml ファイルが入った values-* フォルダがプロジェクトに追加されます。たとえば、スペイン語の場合は values-es です。

言語を削除する手順は次のとおりです。

Translations Editor で言語を削除するには、該当する列のすべての値を削除する(テキストの編集、追加、削除を参照)か、次のようにして対象言語のプロジェクト フォルダを削除します。

  1. 左側の [Project] > [Android] パネルで、[ModuleName] > [res] を選択します。
  2. 削除する言語の values-* フォルダを右クリックします。たとえば、ヒンディー語の場合は values-hi です。
  3. プルダウン リストから [Delete] を選択すると、フォルダとその中の strings.xml ファイルが削除されます。

テキストの編集、追加、削除

テキストの設定操作は、strings.xml ファイルで直接行うことも、Translations Editor から行うこともできます。このセクションでは、Translations Editor から行う方法を説明します。Translations Editor でのテキストの編集、追加、削除は、リスト表示上でも、Translations Editor 下部の [Translation] フィールドでも行えます。

図 2. リスト表示(上部)と [Translation] フィールド(下部)

リスト表示

テキストの編集または追加を行うには、次の手順を実行します。

  1. テキストの編集または追加を行うセルをダブルクリックします。
  2. キーボードによるコピーと貼り付けを行うか、キーボードが発音区別符号をサポートしていれば直接入力します。
  3. Tab キーを押すか、カーソルをセルの外に移動します。

テキストを削除するには、次の手順を実行します。

  1. 削除するセルをダブルクリックします。
  2. リスト表示で、テキストを選択して Delete キーを押します。
  3. Tab キーを押すか、カーソルをセルの外に移動します。

Translation フィールド

テキストの編集または追加を行うには、次の手順を実行します。

  1. リスト表示で、テキストの編集または追加を行うセルを 1 回クリックします。
  2. [Translation] フィールドで、キーボードによるコピーと貼り付けを行うか、キーボードが発音区別符号をサポートしていれば直接入力します。
  3. Tab キーを押すか、カーソルをフィールドの外に移動します。

テキストを削除するには、次の手順を実行します。

  1. 削除するセルを 1 回クリックします。
  2. [Translation] フィールドで、テキストを選択して Delete キーを押します。

キーの追加と削除

Translations Editor の [Key] 列には、strings.xml ファイルの各データ項目の一意の識別子がリストされます。キーの追加と削除は、Translations Editor で行えます。Translations Editor でキーを削除すると、そのキーに対応するすべての翻訳が削除されます。Translations Editor によるキーの削除には Safe Delete リファクタリングが使用されるため、実際にキーを削除する前に、そのキーのテキストが他で使用されていないかを確認し、必要に応じて調整を行う機会が得られます。Safe Delete リファクタリングとは、キーを削除した後もコードを問題なくコンパイルできるようにするためのものです。

キーを追加する手順は次のとおりです。

  1. Translations Editor で、キー追加ボタン をクリックします。
  2. ダイアログで、キー名、デフォルト値、デフォルトの strings.xml ファイルの場所を入力します。

    図 3. キーの追加

キーを削除するには、次の手順を実行します。

  1. Translations Editor で、削除するキーを選択します。
  2. キー削除ボタン をクリックします。
  3. [Delete] ダイアログで、Safe Delete を使用するかどうか、コメントと文字列を検索するかどうかを選択し、[OK] をクリックします。

    図 4. [Delete] ダイアログ

    対象のキーがどこからも参照(使用)されていない場合、または参照されていても依存関係には影響しない場合、そのキーは削除されます。それ以外の場合は、検出された問題を示す [Usages Detected] ダイアログが表示されます。

    図 5. [Delete] ダイアログ

  4. [View Usages] を選択して、削除の対象を確認します。[Find Safe Delete Conflicts] ダイアログに削除の影響が及ぶ使用箇所がすべて表示されるため、該当部分のコードを容易に編集できます。

    図 6. 削除の影響が及ぶ使用箇所

  5. 使用箇所を右クリックしてコンテキスト メニューを表示し、[Jump to Source] を選択して必要な変更を行います。
  6. [Find Safe Delete Conflicts] パネルで [Rerun Safe Delete] を選択し、他に注意が必要な使用箇所がないことを確認します。
  7. 使用箇所の確認が済んだら、[Do Refactor] をクリックしてキーを削除します。

エラーの修正

図 7 は、Translations Editor の画面に英語、フランス語、スペイン語の strings.xml ファイルの内容を表示したところです。赤いテキストは、その行にエラーがあることを示しています。

図 7. 赤いテキストは修正が必要なエラーがあることを示す

エラーを修正するには、赤いテキストにカーソルを合わせて、問題の説明とその解決策を表示します。

Translations Editor で変更を行うと、strings.xml ファイルにその変更が反映されます。反対に、strings.xml ファイルを変更すると、Translations Editor の該当列がその変更に合わせて更新されます。

Translations Editor での修正例:

  • 図 7 の app_name 行では、[Untranslatable] がオンになっているにもかかわらず、スペイン語の翻訳が提供されています。スペイン語の翻訳を削除することでエラーを修正できます。
  • 図 7 の next_page 行では、フランス語の翻訳が提供されていません。キーボードを使用して「Page Suivante」を該当セルにコピーすることでエラーを修正できます。キーボードでのコピーと貼り付けの操作により、発音区別符号付きのテキストをセルにコピーできます。

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. アプリの表示に使用する言語を選択します。

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

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

図 9. Design Editor にスペイン語の翻訳版テキストが表示されたところ

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

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

図 10. デフォルトの言語に戻す

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

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

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

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

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

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

    図 11. 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] ウィンドウを表示します。

    図 12. プレビューの確認

  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. テキストとレイアウトの反転を確認するには、アプリを実行します。

架空言語

架空言語とは、UI、レイアウト、RTL など、アプリの翻訳で問題となりうる言語特性をシミュレートできるように設計された疑似的なロケールです。架空言語では、ローカライズ可能なメッセージすべてについて、英語で読める即席の自動翻訳が提供されます。これにより、翻訳不可のメッセージをソースコードでカバーできるようになります。

架空言語の使用方法については、架空言語を使用してアプリをテストするをご覧ください。