アプリケーションのローカライズ¶
ローカライゼーションには、アプリケーションでサポートしたいロケールのために、テキスト、テクスチャ、スタイルなどのさまざまなリソースの作成と使用が含まれます。
Kanzi は、各ロケールごとに異なる値を持つリソースIDを使用して、ローカライズされたリソースを間接的に使用します。ローカライズされたリソースとロケールを管理するために、Kanzi はローカライゼーションテーブルを使用します。アプリケーションで使用されているすべてのローカライズされたリソースとロケールは、Library > Localization のローカライゼーションテーブルで確認できます。
Kanzi アプリケーションをローカライズするには、
プロジェクトからローカライズしたいリソースをローカライゼーションテーブルに追加します。ローカライゼーションテーブルにリソースを追加する を参照してください。
リソースをローカライズします。テキストリソースのローカライズ と 他のリソースのローカライズ を参照してください。
ローカライズされたリソースを編集します。ローカライズされたリソースの編集 を参照してください。
テーマをローカライズすることもできます。テーマのローカライズ を参照してください。
チュートリアルを完了して Kanzi アプリケーションをローカライズする方法を学びましょう。チュートリアル: アプリケーションをローカライズする を参照してください。
ローカライゼーションテーブルにリソースを追加する¶
完全な Kanzi アプリケーションをローカライズしたい場合、または既にローカライズした Kanzi アプリケーションにコンテンツを追加した場合、ローカライズしたいアイテムのリソースIDを作成し、それらをローカライゼーションテーブルに追加する必要があります。ローカライズしたいリソースのリソースIDを作成し、ローカライゼーションテーブルに追加した後、Kanzi アプリケーションのローカライズを開始できます。テキストリソースのローカライズ と 他のリソースのローカライズ を参照してください。
リソースIDを作成し、それらをローカライゼーションテーブルに追加するには:
Node Tree で、Screen ノードを右クリックし、Add Resources to a Localization Table を選択します。
Add Resources to a Localization Table コマンドを Screen ノードで使用すると、Kanzi Studio によりプロジェクト内のすべてのリソースをローカライゼーションテーブルに追加してローカライズすることができます。
選択したノードとそのツリーにのみリソースをローカライゼーションテーブルに追加するには、ノードを右クリックして Add Resources to a Localization Table を選択します。Kanzi Studio は、そのノードツリーで使用されているリソースのみを Add Resources to a Localization Table ウィンドウに表示します。
Add Resources to a Localization Table ウィンドウで:
Localization Table を追加したいリソースのローカライゼーションテーブルに設定します。まだローカライゼーションテーブルがない場合は、<Create New> を選択します。
ローカライゼーションテーブルは、どのロケールがどのリソースを使用するかに関する情報を含んでいます。
Add Resources to a Localization Table ウィンドウに表示したいリソースタイプを選択します。例えば、テキストと画像リソースのみを表示するには、
と
を選択します。
選択したタイプのすべてのリソースを一覧表示するテーブルで、選択したローカライゼーションテーブルに追加したいリソースの横にあるチェックボックスをクリックします。リソースIDを変更するには、リソースIDをダブルクリックして新しい名前を入力します。
Kanzi Studio は、Text プロパティに同じ値を使用する Text Block ノードのために単一のリソースIDを作成します。これらのノードは、ローカライゼーションテーブルで同じエントリを共有します。
Add をクリックします。
Kanzi アプリケーションのローカライズを開始できます。テキストリソースのローカライズ、他のリソースのローカライズ、および ローカライズされたリソースの編集 を参照してください。
テキストリソースのローカライズ¶
Kanzi は、ローカライズされたテキストリソースを処理するためにgettext POファイル形式を使用し、文字列の最初の文字に基づいてテキストの方向を設定します。
POファイルでは、Unicode文字を使用できます。Unicode文字を使用することで、右から左へのロケールでの左から右へのテキストの方向など、テキストの方向を制御することもできます。Unicode文字でテキストの方向を制御する方法については、Unicodeコントロールを使用した双方向テキストの制御方法 を参照してください。
Unicode文字を使用する場合は、正しく挿入されていることを確認してください。WindowsおよびLinuxでは、Character Map アプリケーションを使用できます。
gettext POファイル形式の詳細については、POファイルの形式 を参照してください。
ローカライズされたテキストリソースのインポートおよびエクスポート形式を独自に定義したい場合は、Kanzi Studio localization plugin API を使用して Kanzi Studio プラグインを作成します。CSV を使用してテキストをローカライゼーションテーブルにエクスポートおよびインポートするそのようなプラグインの例は、<KanziWorkspace>/Examples/CsvPlugin ディレクトリにあります。
注釈
ローカライズされたテキストが単純および複雑なスクリプト、または左から右、右から左のロケールの組み合わせを含む場合、場合によっては Kanzi Studio Localization Editor が Kanzi Studio Preview とは異なる方法でテキストをレンダリングします。テキストを微調整するには、Localization Editor またはPOファイルでUnicode制御文字を使用してください。
CSVプラグインの例 を参照してください。
テキストリソースをローカライズするには:
Kanzi Studio プロジェクトで Text Block ノードを使用してテキストコンテンツを作成し、テキストリソースをローカライゼーションテーブルに追加します。ローカライゼーションテーブルにリソースを追加する を参照してください。
Library > Localization で、ローカライゼーションテーブルを右クリックし、ローカライズしたいリソースを含むテーブルを選択して、Export Localization Table を選択します。
Kanzi Studio は
<ProjectName>/Localization/<LocalizationTableName>にローカライゼーションテーブルテンプレートをPOTファイルとしてエクスポートし、そのローカライゼーションテーブルにあるロケールの数だけPOファイルをエクスポートします。
(オプション) プロジェクト内のすべてのローカライゼーションテーブルをエクスポートしたい場合は、Library > Localization を右クリックし、Export All Localization Tables を選択します。
Kanzi Studio は、
<ProjectName>/Localization/<LocalizationTableName>に対して、各ローカライゼーションテーブルのPOTテンプレートファイルと、すべてのローカライゼーションテーブルにあるロケールの数だけPOファイルをエクスポートします。
このステップは、Kanzi アプリケーションを初めて翻訳するか、増分翻訳を行うかによって異なります。
Kanzi アプリケーションを初めて翻訳する場合、POTファイルを翻訳者に送信してください。翻訳者は各ロケールごとに1つのPOファイルを作成します。
インクリメンタルトランスレーションを行っている場合は、各ロケールのPOTファイルとPOファイルを翻訳者に送信してください。
各POファイルには、そのロケール用にすでに翻訳されたリソースのみが含まれています。そのロケール用にまだ翻訳されていないリソースをPOファイルに追加するには、翻訳者がgettext翻訳エディタを使用してPOTテンプレートファイルからPOファイルを更新する必要があります。
翻訳者からPOファイルを受け取ったら、それらを
<ProjectName>/Localization/<LocalizationTableName>に保存してください。Kanzi Studio の Library > Localization で、翻訳者がローカライズした内容のローカライゼーションテーブルを右クリックし、Import Localization Table を選択します。
Kanzi Studio は、
<ProjectName>/Localization/<LocalizationTableName>ディレクトリ内のすべての PO ファイルを選択したローカライゼーションテーブルにインポートします。
(オプション) プロジェクトのPOファイルをインポートする場所を手動で選択したい場合は、Import Localization Table Manually を選択してください。
(オプション) プロジェクト内のすべてのローカライゼーションテーブルに対してPOファイルをインポートしたい場合は、Library で右クリックして Localization を選択し、Import All Localization Tables を選択します。Kanzi Studio は、
<ProjectName>/Localizationで見つかったすべてのディレクトリ内のすべてのPOファイルをインポートします。
ローカライズされた文字列でテキストの順序を設定する¶
情報を提示する順序は言語によって異なります。Kanzi を使用すると、ローカライゼーション文字列内の情報の順序を設定できます。
ローカライズされた文字列でテキストの順序を設定するには:
ローカライゼーションのためのプロジェクトをセットアップする:
ローカライズされたテキストを表示するノードを作成します。
例えば、Text Block 2D ノードを作成し、PhotoDeletionMessage と名付けます。
Text Block ノードを使用する を参照してください。
ローカライズされたコンテンツで使用するデータソースまたはプロパティを作成します。
たとえば、これらのプロパティを作成します:
データ型が Text の AlbumName
データ型が Integer である PhotoCount
プロパティタイプを作成する を参照してください。
Node Tree で、以前に作成したテキストブロックノードを選択します。Properties で、作成して設定したプロパティを追加します。
AlbumName から New York へ
PhotoCount から 10 まで
テキストリソースとロケールを含むローカライゼーションテーブルを作成します。
たとえば、ローカライゼーションテーブルを作成し、その中で:
テキストリソースを追加し、PhotoDeletionMessage と名付けます。
ロケール en-US と fi-FI を作成します。
ローカライゼーションテーブルを作成する、ローカライゼーションテーブルにリソースを追加する、および ロケールの使用 を参照してください。
Localization Editor で、各ロケールの文字列を作成します。データソースやプロパティから挿入したいコンテンツには、波括弧
{}をプレースホルダとして使用します。例えば、ローカライゼーションテーブルで次のローカライゼーション文字列を作成します。
en-US のために
{} photos were deleted from the album {}fi-FI 用
Albumista {1} poistettiin {0} valokuvaa
fi-FI ロケールでは、プロパティからの値がローカライズされたテキストに表示される順序を変更するために、中括弧内のインデックスを使用します。次のステップで作成するバインディングでデフォルトの順序を設定します。
POファイルのローカライゼーション文字列には中括弧を使用してください。テキストリソースのローカライズ を参照してください。
Node Tree で、ローカライズされたテキストを表示するノードを選択します。Properties で、+ Add Binding をクリックし、Binding Editor で設定します。
Property から Text へ
Expression へ
# Use the acquire function to load the PhotoDeletionMessage text resource from # the localization table using its resource ID, and cast it as a string type. message = string(acquire("PhotoDeletionMessage")) # Replace the placeholders in the localization strings with the values from # the PhotoCount and AlbumName properties. format(message, {@./PhotoCount}, {@./AlbumName})
Save をクリックします。
en-US ロケールでは、プロパティは
format関数に渡す順序で表示されます。fi-FI ロケールでは、中括弧内のインデックスを使用してパラメータの順序を変更します。フォーマット (Format) を参照してください。
Node Tree で、Screen ノードを選択し、Properties で Locale プロパティを設定します。ロケールを変更すると、AlbumName と PhotoCount プロパティがロケールに応じて異なる順序で表示されます。
他のリソースのローカライズ¶
Kanzi を使用すると、テキストコンテンツを複数の言語に翻訳することに加えて、アニメーション、ブラシ、コンポーザー、フォント、マテリアル、メッシュ、テクスチャ、スタイルなど、各ロケールに対して異なるリソースを使用することができます。
この手順を使用して、すべてのタイプのリソースをローカライズすることができます。
他のリソースをローカライズするには:
Kanzi Studio プロジェクトにコンテンツを作成またはインポートし、このコンテンツで使用されるリソースをローカライゼーションテーブルに追加します。ローカライゼーションテーブルにリソースを追加する を参照してください。
例えば、5つのロケールがあり、各ロケールに異なるテクスチャセットを使用したい場合は、各ロケールのテクスチャ用の画像を Kanzi Studio プロジェクトにインポートします。インポートしています を参照してください。
Library > Localization で、ローカライゼーションテーブルをダブルクリックして、ローカライズしたいリソースを含むテーブルを選択します。
Kanzi Studio は Localization Editor でローカライゼーションテーブルを開きます。
Localization Editor でローカライズしたいリソースを見つけ、ローカライズしたいロケールのリソースセルをダブルクリックし、そのロケールで使用したいリソースのテキストを入力するか、リソースIDを選択します。
ロケールに対してリソースまたは値を選択しない場合、Kanzi はそのロケールのデフォルトのリソースまたは値を使用します。デフォルト値は Default Value 列に記載されています。
ファイルシステムからリソースを使用するには、リソースを設定したいセルで < URL > を選択し、file://の後にファイルシステム内のリソースへの絶対パスまたは相対パスを入力します。
前のステップを繰り返して、すべてのリソースとロケールのリソースを選択します。
テーマのローカライズ¶
Kanzi は、テーマ付きアプリケーションをローカライズすることを可能にします。
テーマをローカライズするには:
ローカライズしたい各テーマについて、ローカライズしたいテキストノードを含むコンテンツからプレハブを作成します。ノードプレハブの作成と使用 を参照してください。
テキストリソースをローカライズしてください。
Prefabs で、前のステップで作成したプレハブを選択し、それらのリソースをローカライゼーションテーブルに追加します。
ローカライゼーションテーブルにリソースを追加する を参照してください。
Library > Localization で、前のステップで作成したローカライゼーションテーブルをダブルクリックして Localization Editor で開き、ローカライズしたいロケールを追加し、テキストリソースをローカライズします。テキストリソースのローカライズ を参照してください。
ロケールを追加するには、+ Create Locale をクリックし、ロケールの名前を入力して、OK をクリックします。
Prefab View ノードを使用して、ローカライズされたコンテンツを表示します。
Prefabs の中で、ローカライズされたコンテンツを表示したいノードの下に Prefab View ノードを作成し、Properties で Prefab Template プロパティを追加して、ステップ1で作成したプレハブの1つに設定します。
Prefab View がインスタンス化するプレハブを動的に変更できるようにするためには、Prefab View ノードを使用しなければなりません。Prefab Placeholder ノードと Prefab View ノード を参照してください。
Prefabs で、前のステップで作成した Prefab View ノードを右クリックし、Add Resources to a Theme Group を選択します。
Add Resources to a Theme Group ウィンドウで:
Theme Group を、リソースを追加したいテーマグループに設定します。
テーマグループは、どのテーマがどのリソースを使用するかに関する情報を含んでいます。
Resource ID をプロジェクトの文脈において意味のある名前にリネームしてください。
Add をクリックします。
Kanzi Studio は、Value 列に表示されるプレハブを指すリソースIDをテーマグループに追加します。リソースを Theme Group に追加する Prefab View ノードで、Kanzi Studio は Prefab Template プロパティの値をリソースIDに設定します。
(オプション) In the Prefabs copy the Prefab View node you created in step 1 to the places where you want to show the same content.
Library > Themes で、リソースを追加したテーマグループをダブルクリックし、ステップ3で作成したリソースIDの Theme Editor で、各テーマに対して正しいプレハブを選択します。
プロジェクト内のローカライゼーションテーブルとテーマグループのリソース辞書を表示するために、Dictionaries ウィンドウで Locales and Themes をクリックし、異なるロケールとテーマを選択して、Preview でローカライズされたテーマを確認します。
リソースIDを使用してローカライズされたリソースをロードする¶
リソースIDを使用してローカライズされたリソースをロードすることができます。これらのリソースIDは、文字列プロパティを使用して定義します。例えば、データソースから取得したリソースIDを持つローカライズされたリソースの内容をノードに表示するように設定できます。Kanzi は、アプリケーションの現在のロケールに対するリソースの値を自動的に表示します。
リソースIDを使用してローカライズされたリソースをロードするには:
Kanzi Studio のローカライゼーションテーブルで、アプリケーションに表示したいリソースを作成します。
例えば、リストメニューのラベル用にテキストリソースを作成します。
アプリケーションで表示したいリソースのリソースIDを設定する文字列データオブジェクトのデータソースを作成します。データソースの定義 および データソースを使用する を参照してください。
例:
Kanzi Studio Quick Start ウィンドウで Projects をクリックし、Tutorials タブを選択します。Data sources チュートリアルの横にある
をクリックします。
Library で Kanzi Engine Plugins を右クリックし、Import Kanzi Engine Plugin を選択して、
<KanziWorkspace>/Tutorials/Data sources/Completed/Application/lib/Win64/GL_vs2019_Release_DLL/XML_data_source.dllKanzi Engine プラグインをインポートします。Data Sources で、データソースを作成します。
このデータソースを使用して、List Box ノードのアイテムにデータを提供します。チュートリアル: データソースからアプリケーションデータを取得する を参照してください。
<menu type="list"> <items> <item> <name type="string">Sounds</name> </item> <item> <name type="string">DateTime</name> </item> <item> <name type="string">Car</name> </item> <item> <name type="string">Display</name> </item> <item> <name type="string">Language</name> </item> </items> </menu>
リソースをロードします:
acquireバインディング関数を使用して、リソースIDに基づいてリソースをロードします。例えば、リソースIDが指すコンテンツを表示したい Text Block ノードを選択し、Properties で + Add Binding をクリックし、Binding Editor で設定します。
Property から Text へ
Expression へ
acquire({DataContext.item.name})
Text プロパティを、name 文字列データオブジェクト内の menu リストアイテムのデータソースで定義したリソースIDを持つテキストリソースの内容にバインドします。
ヒント
プロパティを右クリックして Create Binding を選択すると、そのプロパティのバインディングの作成を開始できます。
この方法では、プロパティが自動的に Binding Editor に追加されます。
データソースからのリソースIDが指すコンテンツを表示するノードを作成します。
例えば、データソースからデータを List Box ノードに入力し、アイテムテンプレートとして、リソースをロードするバインディングを追加したノードを含むプレハブを使用します。リストデータオブジェクトの使用 を参照してください。
アプリケーションのロケールを切り替えると、acquire バインディング関数がリソースIDが指すリソースを取得し、テキストを更新します。
ローカライズされたリソースの編集¶
Localization Editor では、ロケールが使用するリソースを設定および編集できます。
ローカライズされたリソースを編集するには:
Library > Localization で、編集したいリソースを含むローカライゼーションテーブルをダブルクリックします。
Kanzi Studio は Localization Editor でローカライゼーションテーブルを開きます。
Localization Editor で:
ロケールで使用される値を編集するには、リソースのセルをダブルクリックし、各ロケールで使用される値を設定します。
ロケールに対してリソースまたは値を選択しない場合、Kanzi はそのロケールのデフォルトのリソースまたは値を使用します。デフォルト値は Default Value 列に記載されています。
黒いセルは、デフォルト値を使用しているエントリを示します。
テキストリソースに空の文字列を使用するには、値を入力し、その値を削除してから Enter を押します。
灰色のセルは、空の文字列を使用しているエントリを示します。
ロケールを追加するには、+ Create Locale をクリックし、ロケールの名前を入力して、OK をクリックします。
リソースをローカライゼーションテーブルに手動で追加するには、+ Add Resource をクリックし、次を選択します:
Create を選択し、作成したいリソースのタイプを選択します。
Add Existing を選択し、プロジェクト内に既に存在するリソースを選択します。
プロジェクトで使用されていないリソースIDをローカライゼーションテーブルから削除するには、
をクリックし、削除したいリソースIDを選択して、OK をクリックします。ローカライゼーションテーブルからリソースIDを削除するには、リソースIDを右クリックして Delete Resource ID を選択します。
Node Tree で選択されているノードによって使用されているリソースIDのみを表示するには、
をクリックします。テキストリソースを他のリソースタイプに変換する場合、またはその逆の場合、変換したいリソースの行ヘッダーを右クリックし、Convert to Resource または Convert to Text を選択します。
リソースタイプを変換できるのは、既に使用されていないリソースに限られることに注意してください。
ロケール内のリソースに対して kzb ファイル URL を使用する¶
プロジェクトで使用するリソースをローカライゼーションテーブルに追加した後、kzb URL を使用して別の Kanzi Studio プロジェクト内のリソースを指すことができます。
ロケール内のリソースにkzbファイルURLを使用するには:
Library > Localization で、kzb ファイルの URL を使用したいリソースを含むローカライゼーションテーブルをダブルクリックします。
Kanzi Studio は Localization Editor でローカライゼーションテーブルを開きます。
Localization Editor でリソースのセルをダブルクリックし、ドロップダウンメニューで < URL > を選択します。
セルに、使用したいリソースのkzbファイルURLを入力してください。
例えば、別の Kanzi Studio プロジェクトからフォントを使用するには、そのフォントを指すkzbファイルのURLを入力します。
ロケールパックの作成¶
ロケールパックは、特定のロケール用のリソースのみを含むkzbファイルです。Kanzi Engine APIを使用すると、そのロケールを設定したときに特定のロケールで使用されるアプリケーションリソースをロードできます。これにより、アプリケーション内のkzbファイルのサイズを削減できます。
ロケールパックで使用されるリソースをメインプロジェクトのkzbファイルにエクスポートしたい場合、Library でリソースを選択し、Properties で Is Used By Code プロパティを追加して有効にします。Is Used By Code プロパティが有効になっているすべてのリソースは、それらを使用するロケールパックにはエクスポートされず、メインプロジェクトのkzbファイルにのみエクスポートされます。
ロケールパックを作成するには:
Library > Localization で、Kanzi アプリケーションに追加したいロケールのリソースをロケールパックでローカライゼーションテーブルに追加します。
Library > Localization で任意のローカライゼーションテーブルをダブルクリックし、Localization Editor でロケールパックにエクスポートしたいリソースのロケール名の横にある
をクリックします。
Kanzi Studio で、File > Export > Export KZB を選択します。このコマンド:
ローカライゼーションテーブルでロケールパックとしてマークした各ロケールに対して、1つのkzbファイルを作成します。Kanzi Studio がロケールパックをエクスポートする際、kzbファイルはそのリソースを含むロケールの名前が付けられます。各ロケールパックファイルには、そのロケールで使用されるリソースのみが含まれています。
Kanzi Studio プロジェクト全体を含むメインの kzb ファイルを作成します。ただし、ローカライゼーションテーブルでロケールパックとしてマークしたロケールのリソースは除きます。
ロケールパックのkzbファイルを
<ProjectName>/Application/bin/Locale_packsディレクトリ、または Project > Properties の Binary Export Directory プロパティで指定した場所にあるLocale_packsディレクトリに保存します。
Kanzi アプリケーションでロケールパックをロードするには、Kanzi Engine API を使用します。参照
リソース使用の表示¶
Localization Editor では、Node Tree の現在選択されているコンテキストで、リソースが使用されているかどうか、またどこで使用されているかを確認できます。
リソース使用を表示するには:
Library > Localization で、リソースの使用を確認したいローカライゼーションテーブルをダブルクリックします。
Kanzi Studio は Localization Editor でローカライゼーションテーブルを開きます。
Localization Editor を使用します。
Node Tree で現在選択されているコンテキストのリソースのみをローカライゼーションテーブルに表示するには、
をクリックします。リソースを使用しているノードを一覧表示するには、リソースIDを右クリックして、Show Usage を選択します。
ローカライゼーションテーブルを作成する¶
Kanzi は、各ロケールごとに異なる値を持つリソースIDを使用して、ローカライズされたリソースを間接的に使用します。ローカライズされたリソースとロケールを管理するために、Kanzi はローカライゼーションテーブルを使用します。アプリケーションで使用されているすべてのローカライズされたリソースとロケールは、Library > Localization のローカライゼーションテーブルで確認できます。
いくつかのローカライゼーションテーブルを作成して、次のことができます:
リソースタイプを分けておいてください。これにより、大規模プロジェクトのアプリケーション開発が容易になります。
アプリケーションの各部分に基づいてリソースを分離します。複数のアプリケーション開発者が同じアプリケーションで作業する場合、それぞれが自分の担当するアプリケーションの領域に対してローカライゼーションテーブルを持つことができます。
アプリケーションの異なる部分からコンテンツを翻訳者に送信できるようにします。
ローカライゼーションテーブルを作成するには、Library Alt を押しながら右クリック Localization で Localization Table を選択し、ローカライゼーションテーブルに名前を付けます。
複数の Kanzi Studio プロジェクトを Kanzi アプリケーションに統合してローカライゼーションを使用する¶
複数の Kanzi Studio プロジェクトを Kanzi アプリケーションに組み合わせる際にローカライゼーションを使用するには、次のいずれかの方法でアプリケーションのメインプロジェクトの Screen ノードからローカライゼーションテーブルにアクセスできるようにする必要があります。
アプリケーションのメインプロジェクトでローカライゼーションテーブルを定義します。
参照プロジェクトからのローカライゼーションテーブルを、Screen ノードを含むメインプロジェクトにマージします。その後、リソースIDを使用して、参照プロジェクトのローカライゼーションテーブル内のリソースにアクセスできます。プロジェクトのマージ を参照してください。
Rightware サポートチームに連絡し、複数の Kanzi Studio プロジェクトとkzbファイルでローカライゼーションを使用できるようにする Kanzi Engine プラグインをリクエストしてください。サポートリクエストの提出 を参照してください。