VIをローカライズする
- 更新日2025-08-27
- 16分で読める
VIの文字列をタグ付きのファイルとしてエクスポートし、その内容を翻訳して再びVIにインポートすることでVIをローカライズできます。日本語版のLabVIEWは、英語版と同じ実行ファイルを使用します。そのため、日本語版のバージョンは英語版のバージョンと互換性があります。
VI文字列ファイルとして知られるタグ付きのテキストファイルには、VIタイトル、説明、制御器キャプション、制御器の説明、および制御器のその他のプライベートデータをローカライズするための情報が含まれます。制御器ラベルはローカライズできないので、制御器にもキャプションがあります。VI文字列をテキストファイルにエクスポートすると、LabVIEWによって各制御器のキャプションが作成され、ラベルがフロントパネルのキャプションとして置換されます。
フロントパネル上の文字列の翻訳に加え、数値を文字列に変換する際に使用する、翻訳対象言語に対応した10進数区切り文字の指定もできます。日付と時間の表示形式を指定するには、「日付/時間文字列をフォーマット」関数を使用します。
以下のVI文字列をローカライズできます。
- VIウィンドウタイトルと説明
- オブジェクトキャプションと説明
- フリーラベル
- デフォルトデータ (文字列、表、パス、および配列のデフォルトデータ)
- プライベートデータ (リストボックスの項目名、表の行と列のヘッダ、グラフプロット名、グラフカーソル名、およびグラフ注釈名)
- ブロックダイアグラム内で指定された文字列 (フリーラベルおよび文字列定数)
VI文字列ファイルの構文
VI文字列ファイルの構文は、HTMLファイルに似ています。各要素はスタートタグとエンドタグで記されます。スタートタグは<で始まり、>で終わります。エンドタグは</で始まり、>で終わります。テキスト部分以外の空白文字は、LabVIEWでは無視されます。<はタグの開始を示すので、テキスト内で左絶対不等号記号を表す場合、LabVIEWでは<<を使用します。右絶対不等号記号の>を表す場合、LabVIEWは>>を使用します。LabVIEWは二重引用符を””で置換されます。また、LabVIEWは、それぞれ復帰、復帰改行、改行として処理される<CR>、<CRLF>、または<LF>を行末文字として使用します。VI文字列ファイルの形式は、マシンによって読み取られるように設計されています。したがって、可読困難でも懸念する必要はありません。エクスポートファイルの各行には、プライベートデータとデフォルトデータに対して2つ以上のタグは含まれません。また、ネスティングレベルごとに項目がインデントされます。タグを変更したり削除すると、LabVIEWはファイルをVIに再度インポートする際、エラーを返します。エクスポートされたVI文字列を含むテキストファイルのサンプルについては、「エクスポートVI文字列の例」トピックを参照してください。
以下の表に、VIタグの種類とそのVIタグ構文を示します。
| VIタグの種類 | VIタグの構文 |
|---|---|
| [VI string file] | <VI [vi attributes] > [vi info] </VI> |
| [VI attributes] | syntaxVersion=5 LVversion=nnn revision=nnn name="任意のテキスト" |
| [VI info] | [vi title] [description] [content] [bdcontent] |
| [VI title] | <TITLE>任意のテキスト</TITLE>|.<TITLE><NO_TITLE></TITLE>. |
| [description] | <DESC>任意のテキスト</DESC> |
| [content] | <CONTENT>[grouper] [objects]</CONTENT> |
| [bd content] | <BDCONTENT>[bd objects] </BDCONTENT> |
VIの属性は、空白文字で区切ります。属性名とその直後の等号記号との間、および等号記号と属性値との間に空白文字を使用しないでください。
以下に例を示します。
<VI syntaxVersion=5 LVversion=4502007 revision=10 name="AO Generate Waveform.vi">
<TITLE>AO Generate Waveform.vi</TITLE>
<DESC>This VI generates a timed, simple-buffered waveform for the given output channel at the specified update rate.</DESC>
<CONTENT>
........
</CONTENT>
</VI>
以下の表に、フロントパネルの内容 (フリーラベル、オブジェクトに属すラベル、キャプションラベル、属性) を記述するタグとその構文を示します。
| 内容タグの種類 | 内容タグの構文 |
|---|---|
| [content] | <CONTENT>[grouper] [objects]</CONTENT> |
| [grouper] | <GROUPER>[parts]</GROUPER> |
| [objects] | ([control]|[label]) * |
| [control] | <CONTROL [control attributes]> [control info] </CONTROL> |
| [label] | <LABEL>[style text] </LABEL> |
| [style text] | <STEXT>テキストおよび使用するフォントの情報</STEXT> |
<STEXT>と</STEXT>タグ間にフォント仕様を入力できます。LabVIEWは、<FONT name="フォント名" size='3' style='BIUSO' color=00ff00>の形式でフォント情報をエンコードします。フォント属性は、任意の順序でリストできます。フォント仕様は、エンドタグがない点で他の要素と異なります。たとえば、以下のように、キャプションは“Boldlabel”のテキストで記述することができます。
<LABEL><STEXT><FONT name="times new roman" size=12 style='B'>Bold <FONT style='I'>label</STEXT></LABEL>
フォントをpredefと定義して、定義済みのフォント (アプリケーションフォント、システムフォント、またはダイアログフォント) のいずれかを指定できます。
<GROUPER></GROUPER>タグは、グループ化したフロントパネルのオブジェクトを囲みます。また、これらのタグはスプリッタバーで構成した各ペーンも囲みます。フロントパネルには常に1つ以上のペーンが含まれているため、VI文字列ファイルには最低1つの<GROUPER></GROUPER>タグが常に含まれています。クラスタにもペーンが含まれます。
以下の表に、データの含まれたオブジェクトを記述するタグとその構文を示します。
| 内容タグの種類 | 内容タグの構文 |
|---|---|
| [control] | <CONTROL [control attributes]> [control info] </CONTROL> |
| [control attributes] | ID=xxx type="Boolean" name="switch" |
| [control info] | [description] [tip strip] [parts] [privData section] [defData section] [content] |
| [tip strip] | <TIP>任意のテキスト</TIP> |
| [parts] | <PARTS> [part]*</PARTS> |
| [part] | <PART [part attributes]> [part info] </PART> |
| [part attributes] | partID=nnn partOrder=nnn |
| [part info] | [control]|[label]|[multiLabel] |
以下は、キャプションの"Ring"、オプションのLoad、Unload、Open、Closeがあるリング制御器の例です。
<CONTROL ID=87 type="Ring" name="RINGcontrol">
<DESC>ring control</DESC>
<PARTS>
<PART ID=12 order=0
type="Ring Text"><MLABEL><STRINGS><STRING>Load</STRING><STRING>Unload</STRING><STRING>Open</STRING><STRING>Close</STRING></STRINGS></MLABEL></PART>
<PART ID=82 order=0 type="Caption"><LABEL><STEXT><FONT color=FF0033 size=12>Ring</STEXT></LABEL></PART>
</PARTS>
</CONTROL>
LabVIEWでは、前の例に示すようなMLABEL (マルチラベル) タグを使用してリング制御器のオプション文字列やブールボタンの文字列、4つの状態を示す文字列を指定します。MLABELタグ構文の一般的な記述方法を以下に示します。
[multiLabel]<MLABEL> [mlabel info] </MLABEL>
[mlabel info][font][strings]
以下の表に、文字列、テーブル、配列、およびパスのデフォルトデータを記述するタグとその構文を示します。
| 内容タグの種類 | 内容タグの構文 |
|---|---|
| [defData section] | <DEFAULT> [defData] </DEFAULT> |
| [defData] | [str def]|[table def]|[arr data]|[path data] |
| [str def] | [string]|<SAME_AS_TEXT> |
| [table def] | [strings] |
| [arr data] | <ARRAY nElems=n> [arr element data] </ARRAY> |
| [arr element data] | [clust data]|[str data]|[non-str data] |
| [str data] | [string] |
| [non-str data] | <NON_STRING> |
| [clust data] | <CLUSTER nElems=n> [clust element data] </CLUSTER> |
| [clust element data] | [clust data]|[str data]|[non-str data]|[arr data]|[path data] |
| [path data] | <PATH type ="absolute"> a<SEP> system </PATH> |
[arr data]では、<ARRAY>に続けてn [arr element data]を記述する必要があります。同様に、[clust data]では、<CLUSTER>タグに続けてn [clust element data]を記述する必要があります。
文字列制御器デフォルトデータの[str def]では、特殊タグの<SAME_AS_LABEL>を使用します。このタグは、文字列デフォルトデータが文字列部品リストと一致することを表します。<SAME_AS_LABEL>タグを使用する場合、テキストラベルと文字列デフォルトデータの両方に同じテキストを入力する必要はありません。
パス制御器デフォルトデータの[path data]では、パスの種類を指定するための属性を<PATH>スタートタグに含めることができます。使用できる測定値は、"absolute"、"relative"、"not-a-path"、"unc"です。<SEP>タグは、<PATH>と</PATH>タグの間にあるパスセグメントを区切るために使用されます。たとえば、Windowsプラットフォームでの絶対パスc:\windows\temp\temp.txtは、次のように記述されます。
<PATH type="absolute">c<SEP>windows<SEP>temp<SEP>temp.txt</PATH>
以下の表に、プライベートデータを記述するタグとその構文が示されています。
| 内容タグの種類 | 内容タグの構文 |
|---|---|
| [privData section] | <PRIV> [privData]* </PRIV> |
| [privData] | ([strings]|[col header]|[row header]|[cell fonts]|[plots]|[cursors]|[path privData]|[tab control privData]) |
| [strings] | <STRINGS> [string]* </STRINGS> |
| [string] | <STRING> text </STRING> |
| [col header] | <COL_HEADER> [string]* </COL_HEADER> |
| [row header] | <ROW_HEADER> [string]* </ROW_HEADER> |
| [cell fonts] | <CELL_FONTS> [cell font]* </CELL_FONTS> |
| [plots] | <PLOTS> [string]* </PLOTS> |
| [cursors] | <CURSORS> [string]* </CURSORS> |
| [cell font] | [row# col#][font] |
| [font] | <FONT name="フォント名" size='x' style='BIUSO' color=000000> |
| [path privData] | <PROMPT>任意のテキスト</PROMPT> <MTCH_PTN>TEXT</MTCH_PTN> <STRT_PTH>[path data]</STRT_PTH> |
| [tab control privData] | <PAGE_CAPTIONS>[string]*</PAGE_CAPTIONS> |
| [tab control page] | <PAGE> [description] [tip strip] [objects] </PAGE> |
| 内容タグの種類 | 内容タグの構文 |
|---|---|
| [bd content] | <BDCONTENT> [bdobjects]</BDCONTENT> |
| [bd objects] | ([control]|[label]|[node])* |
| [node] | <NODE [node attributes]>[node info]</NODE> |
| [node attributes] | ID=xxx type="Sequence" |
| [node info] | [description] [bd content] |
VIウィンドウタイトルを編集する
VIウィンドウタイトルをカスタマイズして、VIファイル名よりも記述的な名前に変更することができます。これは、ローカライズ版のVIを作成する際に重要です。ファイルシステムの命名規則に制限されない他、発呼者VIはサブVIをタイトルでなくファイル名によって参照するため、このVIを呼び出す可能性のあるVIによって認識される、VIウィンドウタイトルをローカライズすることができます。ウィンドウタイトルのローカライズはエクスポート/インポートツールを使用するか、またはVIの編集時にVIプロパティダイアログボックスのウィンドウの外観ページから手動でVIウィンドウタイトルを変更します。また、VIサーバを使用して、プログラム的にVIウィンドウタイトルを変更することもできます。
ピリオドおよびカンマによる10進数区切り文字
デフォルト設定では、LabVIEWを実行しているオペレーティングシステムに設定されている10進数区切り文字の情報がLabVIEWにも適用されます。この設定は、制御器に表示される数値や数値と文字列との変換を行う関数に影響を与えます。このため、計測器に数値を文字列として渡すときや、計測器からの出力を文字列に変換する際に問題が生じることがあります。
以下の関数では、オペレーティングシステムでの10進数区切り設定をデフォルトとして使用します。ピリオドを使用する場合は、ブール入力のシステム10進小数点を使用 (+) をFALSEに指定する必要があります。
- 小数/指数文字列を数値に変換
- 数値を小数文字列に変換
- 数値を指数文字列に変換
- 数値を工学形式文字列に変換
形式文字列を認識する関数では、呼び出しごとに%x (形式コードで、xは使用する区切り文字) を使用して10進数区切り文字を指定します。以下はこのような関数の例です。
- 文字列にフォーマット
- 文字列からスキャン
- 値をフォーマット
- 値をスキャン
- 配列からスプレッドシート文字列に変換
- スプレッドシート文字列を配列に変換
- 区切られたスプレッドシートを読み取る
10進数区切り文字にシステム設定 (ロケ-ル) を使用するか、またはピリオドを使用するかを指定するには、ツール»オプションを選択し、カテゴリリストからフロントパネルを選択して地域指定小数点を使用チェックボックスをオンにします。
日付と時間値を文字列で表示する
デフォルト設定では、「日付/時間文字列をフォーマット」関数を使用して日付と時間の文字列の表示形式を設定できます。LabVIEWによってオペレーティングシステムの設定が読み込まれ、その設定に対応した形式で日付と時間が表示されます。LabVIEWは、中国語や韓国語などの省略名をサポートしないシステムでは、省略された曜日および月の名前を数値で返します。また、表示形式をカスタマイズするには、ショートカットメニューの表示形式を選択します。
制御器の時間および日付形式
タイムスタンプ制御器を使用して、高精度な絶対時間を使用、表示、そして保存します。カスタム固定形式を選択するか、またはショートカットメニューから表示形式を選択して表示形式ページを構成し、システム (地域特有) 形式を使用することができます。また、数値制御器を使用して、タイムスタンプの値を表示することもできますが、数値制御器は相対量を保持します。タイムスタンプ制御器は絶対量を保持します。