メッセージ・ディクショナリの管理
ここでは、文字列のローカライズで使用されるメッセージ・ディクショナリを操作する際に最もよく使用される %Library.MessageDictionaryOpens in a new tab メソッドを簡単に説明します。
メッセージのインポート
XML メッセージ・ファイルをインポートするには、ターミナルを開いて以下の操作を行います。
-
アプリケーションを開発しているネームスペースに変更します。
set $namespace = "myNamespace"
-
import コマンドを実行します。既定では、各言語は別個の XML メッセージ・ファイルになっており、ファイル名の末尾にロケール名が付いています。したがって、以下のようになります。
-
特定の言語のメッセージのみをインポートできます。
SET file="C:\myLocation\Messages_ja-jp.xml" DO ##class(%Library.MessageDictionary).Import(file)
-
または、同じアプリケーションに対して複数の言語をインポートします。
SET myFiles="C:\myLocation" DO ##class(%Library.MessageDictionary).ImportDir(myFiles,"d")
-
-
同じネームスペース内の ^IRIS.Msg グローバルを調べて結果を確認します。
以下のトピックでは、両方のインポート方法を簡単に説明します。
特定の XML メッセージ・ファイルのインポート
%Library.MessageDictionaryOpens in a new tab クラス・メソッド Import() には以下のシグニチャがあります。
classmethod Import(filepath As %String, flag As %String = "") returns %Status
以下はその説明です。
-
filepath は、メッセージ・ファイルのフル・パス名を指定します。
-
flag はオプションのフラグです。d フラグ (display) を指定した場合、ファイルのインポート時にターミナル・コンソールに確認メッセージが表示されます。指定しない場合、確認は表示されません。
ディレクトリ内にあるすべての XML メッセージ・ファイルのインポート
%Library.MessageDictionaryOpens in a new tab クラス・メソッド ImportDir() には以下のシグニチャがあります。
classmethod ImportDir(directory As %String, flag As %String = "") returns %Status
以下はその説明です。
-
filepath はディレクトリ・ファイルを指定します。XML メッセージ・ファイルのみがディレクトリ内にあることを確認してください。他の XML ファイルがあるとエラーが生成されます。
-
flag はオプションのフラグです。d フラグ (display) を指定した場合、ファイルのインポート時にターミナル・コンソールに確認メッセージが表示されます。指定しない場合、確認は表示されません。
メッセージのエクスポート
メッセージ・ディクショナリを XML メッセージ・ファイルにエクスポートするには、ターミナル内で以下の操作を行います。
-
アプリケーションを開発しているネームスペースに変更します。
set $namespace = "myNamespace"
-
出力ファイルとその場所を特定します。
SET file="C:\myLocation\Messages.xml"
-
export コマンドを実行します。
-
特定のドメインにあるメッセージのみをエクスポートすることが実際的な場合があります。この場合は次のように指定します。
DO ##class(%Library.MessageDictionary).ExportDomainList(file,"myDomain")
-
ネームスペースにあるすべてのメッセージをエクスポートするには次のように指定します。
DO ##class(%Library.MessageDictionary).Export(file)
-
以下のトピックでは、両方のエクスポート方法を簡単に説明します。
1 つの言語での特定ドメインのエクスポート
%Library.MessageDictionaryOpens in a new tab クラス・メソッド ExportDomainList() には以下のシグニチャがあります。
classmethod ExportDomainList(file As %String,
domainList As %String,
language As %String) returns %Status
以下はその説明です。
-
file は、以下の形式の出力ファイル名のテンプレートです。
filepath.ext
実際の出力ファイル名は、filepath に language の値が付加され、拡張子 ext が付きます。
-
domainList は、エクスポートするドメインのオプションのコンマ区切りリストです。
-
language は、すべて小文字の RFC1766Opens in a new tab コードです。指定されていない場合、値はシステムの既定の言語に設定されます。
特定言語のすべてのドメインのエクスポート
%Library.MessageDictionaryOpens in a new tab クラス・メソッド Export() には以下のシグニチャがあります。
classmethod Export(file As %String,
languages As %String = "",
flag As %String = "") returns %Status
以下はその説明です。
-
file は、以下の形式の出力ファイル名のテンプレートです。
filepath.ext
出力ファイルの名前は filepathlanguage-code.ext です。
例えば、file が c:/temp/mylang_.txt で、languages に言語コード ja-jp が含まれる場合、出力ファイルの 1 つは c:/temp/mylang_ja-jp.txt という名前になります。
-
languages は、言語コードのオプションのコンマ区切りリストです。リスト内の各値はすべて小文字の RFC1766Opens in a new tab コードである必要があります。languages が指定されていないか空の場合、データベース内のすべての言語がエクスポートされます。各言語は、file 引数の説明にある規約を使用して別個のファイルにエクスポートされます。
-
flag はオプションのフラグです。指定されている場合、s フラグ (system) は、アプリケーションのメッセージ・ディクショナリ以外にシステムのメッセージ・ディクショナリもエクスポートされることを示します。指定しない場合、アプリケーションのメッセージ・ディクショナリのみがエクスポートされます。
メッセージの削除
メッセージを削除するには、以下のコマンドを使用します。
Set status = ##class(%MessageDictionary).Delete(languages,flag)
languages は、オプションの言語コンマ区切りリストです。languages が指定されていない場合、すべての言語が削除されます。既定値では、アプリケーション・メッセージのみが削除されます。s フラグ (system) は、システム・メッセージも削除するかどうかを示すオプションのフラグです。インクルード・ファイルに関連付けられているメッセージ名は常に削除されますが、インクルード・ファイルは削除されません。d フラグ (display) もサポートされます。
メッセージのリスト
指定されたドメインに対してメッセージが読み込まれるすべての言語のリストを取得するには、GetLanguages() メソッドを使用します。
Set list = ##class(%MessageDictionary).GetLanguages(domain,flag)
GetLanguages() は、%ListofDateTypes 形式の言語コードのリストを返します。言語コードは標準の RFC1766Opens in a new tab 形式で、すべて小文字です。domain が指定されている場合、指定されたドメインに対して存在する言語のみがリストに含まれます。指定されていない場合、すべての言語がリストに含まれます。s フラグ (system) は、システム・メッセージまたはアプリケーション・メッセージのどちらでサポートされている言語を返すかを示すオプションのフラグです。既定値では、アプリケーション・メッセージの言語が返されます。d フラグ (display) もサポートされます。