Business Intelligence のローカライズの実行 Contents Business Intelligence のローカライズの概要 モデルのローカライズの準備 フォルダ項目のローカライズの準備 文字列のローカライズ ここでは、InterSystems IRIS® Business Intelligence の実装プロセスの一環として、Business Intelligence 内の文字列をローカライズする方法を説明します。 Business Intelligence のローカライズの概要 このセクションでは、InterSystems IRIS Business Intelligence で文字列のローカライズがどのようにサポートされているかについて概要を説明します。 モデルのローカライズ システムには、レベル、メジャー、およびその他のモデル要素の名前をローカライズするための簡単なメカニズムがあります。Business Intelligence モデル内の各要素は、論理値と表示値を持ちます。その論理値、元の表示値、および他の言語ロケールで使用するための代わりの表示値を指定します。次に、以下の操作を行います。 MDX クエリでは、必ず論理値を使用します。 ユーザ・インタフェースでは、使用可能であれば、適切な表示値が使用されます。ユーザは、優先言語が使用されるようにブラウザを構成します。ブラウザからサーバに要求が送信されると、それらの要求は、使用可能であればその優先言語を使用するように指示します。サーバは、その優先言語に基づいて、一連の適切な文字列を含む応答を送信します。 フォルダ項目のローカライズ 同様に、ダッシュボード、ピボット・テーブル、およびその他のフォルダ項目内にある以下の文字列の特定のセットをローカライズできます。これらの文字列について、元の表示値と、他の言語ロケールで使用するための代わりの表示値を指定します。ユーザ・ポータルとダッシュボード・ビューワでは、使用可能であれば、適切な表示値が使用されます。ユーザは、優先言語が使用されるようにブラウザを構成します。ブラウザからサーバに要求が送信されると、それらの要求は、使用可能であればその優先言語を使用するように指示します。サーバは、その優先言語に基づいて、一連の適切な文字列を含む応答を送信します。 モデルのローカライズの準備 Business Intelligence モデル内の文字列のローカライズを準備するには、以下の手順を実行します。 各キューブ、サブジェクト領域、および KPI クラス内で、DOMAIN クラス・パラメータを指定します。以下はその例です。 Parameter DOMAIN = "PATIENTSAMPLE"; Patients サンプル内のクラスでは、すべて DOMAIN に同じ値が使用されていますが、これは必須ではありません。クラスごとに異なる値を指定することもできます。 Business Intelligence 要素ごとに displayName 属性の値を指定します。 アーキテクトでは、名前を指定すると、[表示名] フィールが同じ名前で初期化されます。一方、スタジオで作業する場合は、name 属性 (必須) に加えて、displayName 属性 (オプション) を指定することに注意してください。 クラスをコンパイルすると、そのネームスペース内の ^IRIS.Msg グローバルに値が追加されます。それらの値は以下のように表示されます。このグローバル (メッセージ・ディクショナリといいます) には、そのネームスペースで定義されているメッセージが含まれます。Business Intelligence では、各メッセージはモデル要素の名前に対応します。DOMAIN パラメータを定義するキューブ、サブジェクト領域、または KPI クラスをコンパイルすると、そのクラスで定義されているメッセージが既定の言語で含まれるように、このグローバルが更新されます。各メッセージは、数値識別子を使用し、既定の言語に適用される文字列値を含みます。期待する一連の文字列が表示されない場合は、クラスで DOMAIN パラメータが定義されていること、displayName の値を指定済みであること、およびクラスをコンパイル済みであることを確認してください。 フォルダ項目のローカライズの準備 このセクションでは、ダッシュボード、ピボット・テーブル、およびその他のフォルダ項目にある文字列のローカライズを準備する方法について説明します。 既定のドメイン DeepSeeUser は、ダッシュボード内のローカライズされた文字列を検索するときに、既定で使用されるドメインです。詳細は、以下のセクションを参照してください。 メッセージ・ディクショナリへの文字列の追加 コンパイル時にメッセージ・ディクショナリに一連のエントリを生成するクラスを作成します。そのクラスで以下の操作を行います。 %RegisteredObjectOpens in a new tab または標準のシステム・マクロへのアクセスを提供するその他のクラスを拡張します。 DOMAIN クラス・パラメータを指定します。以下はその例です。 Parameter DOMAIN = "DeepSeeUser"; DeepSeeUser ドメインは、既定のドメインであるため、最も便利な選択肢です。 $$$Text(Localizable String) を使用して、指定のドメインに含まれている必要のある文字列を参照するメソッドを定義します。Localizable String は、評価結果がこのドメインの文字列となる式です。このメソッドには任意の名前を指定できます。引数を取る必要も、値を返す必要もありません。以下に例を示します。 ClassMethod DefineL18N() { set x=$$$Text("Dashboard Title") set x=$$$Text("Dashboard Description") set x=$$$Text("KeywordA") set x=$$$Text("KeywordB") set x=$$$Text("Control Label") set x=$$$Text("Tooltip") set x=$$$Text("Widget Title") set x=$$$Text("Chart Title") } または、$$$Text(Localizable String) の代わりに、$$$Text(@MessageID@) を使用します。MessageID は、指定したドメインで一意の数値 ID です。 このクラスのコンパイル時に、コンパイラは $$$Text マクロの各インスタンスを検索し、このネームスペース内の ^IRIS.Msg グローバルに値を追加します。 ダッシュボード、ピボット・テーブル、または他のフォルダ項目でのローカライズ可能な文字列の使用 ダッシュボード、ピボット・テーブル、または他のフォルダ項目の定義では、表示する実際の文字列の代わりに、以下のいずれかの値を使用します。 $$$Localizable StringLocalizable String は、既定のドメインに定義されている文字列です。例を以下に示します。別の例を示します。 $$$Localizable String/OtherDomainLocalizable String は、OtherDomain で指定されたドメインに定義されている文字列です。例を以下に示します。/OtherDomain の部分を指定していない場合は、既定のドメインでこの文字列が検索されます。 Important: フォルダまたはフォルダ・アイテムの名前の場合、$$$Localizable String#OtherDomain のバリエーションを使用します。例えば、$$$My Folder#MyDeepSeeDomain をフォルダ名として使用します。 $$$@MessageIDMessageID は、既定のドメインに定義されている数値メッセージ ID です。 $$$@MessageID/OtherDomainMessageID は、OtherDomain で指定されているドメインに定義されている数値メッセージ ID です。/OtherDomain の部分を指定していない場合は、既定のドメインでこの文字列が検索されます。 フォルダ項目定義で以下のいずれかの文字列に対して、これらの値を使用します。 フォルダ名 フォルダ項目名 (ダッシュボードの場合) ダッシュボードのタイトル (指定していれば、ダッシュボード名の代わりに表示されます) 項目の説明 キーワード ダッシュボード・コントロールのラベル ダッシュボード・コントロールのツールのヒント ウィジェットのタイトル (ウィジェットの論理名ではありません)。 グラフを表示するダッシュボード・ウィジェット内にあるグラフのタイトル 文字列のローカライズ 文字列をローカライズする手順は以下のとおりです。 メッセージ・ディクショナリを 1 つ以上の XML ファイルにエクスポートします。そのためには、ターミナルで以下の操作を実行します。 Business Intelligence を使用しているネームスペースに変更します。 出力ファイルとその場所を特定します。 SET file="C:\myLocation\Messages.xml" 指定したディレクトリは既に存在している必要があります。システムによって作成されることはありません。 export コマンドを実行します。 特定のドメインにあるメッセージのみをエクスポートすることが実際的な場合があります。この場合は次のように指定します。 DO ##class(%Library.MessageDictionary).ExportDomainList(file,"myDomain") ドメイン名では大文字と小文字が区別されます。 ネームスペースにあるすべてのメッセージをエクスポートするには次のように指定します。 DO ##class(%Library.MessageDictionary).Export(file) 希望する言語ごとに、メッセージ・ファイルのコピーを作成します。 各メッセージ・ファイルを以下のように編集します。 ルート要素の Language 属性を以下のように編集します。 <MsgFile Language="en"> これを希望する言語の言語名に変更します。 言語名は、RFC1766Opens in a new tab に準拠した、すべて小文字の言語タグである必要があります (これにより、ユーザはブラウザ内で標準セットから優先言語を選択できます)。このタグは、1 つ以上の部分で構成されます。つまり、主言語タグ (en や ja) の後に、オプションでハイフン (-) で区切られた 2 番目の言語タグを (結果として en-gb や ja-jp の形式になるように) 記述します。以下はその例です。 <MsgFile Language="es"> ファイルをスキャンして、適切なドメインに対応する <MsgDomain> 要素を検索します。 <MsgDomain Domain="myDomain"> エクスポートしたドメインが 1 つだけであれば、ファイルには <MsgDomain> 要素が 1 つだけ含まれます。 そのセクション内で、各メッセージの値を編集します。例 : 変更前 <Message Id="2372513034">City</Message> 変更後 : <Message Id="2372513034">Ciudad</Message> 編集したメッセージ・ファイルをインポートします。そのためには、以下の操作を実行します。 1 つのファイルをインポートするには、以下の操作を実行します。 SET file="C:\myLocation\myfile.xml" DO ##class(%Library.MessageDictionary).Import(file) 同じディレクトリ内にすべてのファイルをインポートするには、以下の操作を実行します。 SET myFiles="C:\myLocation" DO ##class(%Library.MessageDictionary).ImportDir(myFiles,"d") 必要に応じて、管理ポータルを使用して、メッセージ・ディクショナリが更新されたことを確認します。そのためには、適切なネームスペースに切り替えて、[システム・エクスプローラ]→[グローバル] を選択して、^IRIS.Msg グローバルの [グローバル表示] をクリックします。このグローバル内に、追加した言語に対応する一連の新しい添え字が表示されます。 ブラウザで、ローカライズされたページで使用するように要求する言語を制御する設定を見つけます。その設定を、編集したメッセージ・ファイルで指定した言語に変更します。ブラウザによっては、ブラウザ・キャッシュのクリア、ブラウザの再起動、またはその両方が必要となる場合があります。 アナライザにアクセスして、変換された文字列が表示されることを確認します。 %Library.MessageDictionaryOpens in a new tab のユーティリティ・メソッドの詳細は、そのクラスのクラス・リファレンスを参照するか、"文字列のローカライズとメッセージ・ディクショナリ" の技術文書を参照してください。