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

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

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

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

文字列リソース

プロジェクトの文字列リソースは、strings.xml ファイルに格納されています。プロジェクトには、アプリのデフォルト言語の文字列リソースを格納するデフォルトの strings.xml ファイルがあります。デフォルト言語とは、そのアプリの大半のユーザーが使用すると考えられる言語です。また、アプリで他の言語に対応する場合、その言語の文字列リソースを格納する翻訳版の strings.xml ファイルも追加できます。

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

Translations Editor を開く

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

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] をクリックします。

翻訳不可の行を設定する

[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] フィールドで、キーボードを使ってコピーと貼り付けを行います。発音区別符号がキーボードでサポートされていれば、[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] で、[Add Key] をクリックします。
  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」を該当セルにコピーすることで、エラーを修正できます。キーボードでコピーと貼り付け 操作を行う方法により、発音区別符号付きのテキストをセルにコピーできます。

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

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

RTL 言語のサポート

Jetpack Compose は、右から左(RTL)レイアウトをネイティブに処理します。レイアウト修飾子と API は、leftright などの絶対方向ではなく、startend などの方向の概念に基づいて構築されています。システムの言語が RTL ロケールに変更されると、Compose はこれらのレイアウトを自動的にミラーリングします。

アプリが RTL ロケールを認識してこのミラーリングをトリガーするには、アプリのマニフェスト ファイルを使用してオプトインする必要があります。

RTL サポートを有効にする手順は次のとおりです。

  1. AndroidManifest.xml ファイルを開きます。
  2. android:supportsRtl="true" 属性を <application> 要素に追加します。
<manifest ... >
    <application
        ...
        android:supportsRtl="true">
    </application>
</manifest>

Compose でのテキスト レイアウト、ミラーリング、カスタム RTL 構成の処理方法について詳しくは、RTL 言語の使用をご覧ください。

テキストの方向を手動で設定する

Jetpack Compose では、レイアウトやテキストの方向を強制的に設定するために、ビジュアルな [Properties] ウィンドウを使用しません。Compose は、システム ロケールに基づいて RTL ミラーリングを自動的に処理します。

ただし、特定のテキスト要素の方向を手動でオーバーライドする必要がある場合(たとえば、RTL レイアウトに LTR 文字列を表示する場合など)は、TextDirection オブジェクトを TextStyle に渡すことができます。

次の値がサポートされています。

Compose でのテキストのスタイル設定とテキストの方向の手動設定について詳しくは、テキストのスタイル設定をご覧ください。

アプリでローカライズされた文字列を使用する

Translations Editor を使用して文字列を追加して翻訳すると、基になる res/values/strings.xml ファイルが自動的に更新され、ローカライズされたリソースを UI で直接使用できます。

ローカライズされたテキストの表示方法、RTL のネイティブ処理方法、@Preview さまざまなロケールと架空言語をテストする方法については、Compose のリソースの文字列セクションをご覧ください。

架空言語

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

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

参考情報

コンテンツを表示する