LabVIEW本地化VI
将VI字符串导出到一个带标记的文件中并翻译该文件,然后将文件导入VI,这就是VI的本地化的过程。LabVIEW的本地化版本与英文版本使用同样的可执行程序。因此,本地化版本与英文版本兼容。
编辑
添加图片注释,不超过 140 字(可选)
标记文本文件,又称VI字符串文件,包含了VI标题、说明、控件标题、控件说明及其它控件私有数据的信息。因为控件标签无法本地化,所以控件还带有标题。LabVIEW将VI字符串导出到一个文本文件,从而为每个控件创建了一个标题,同时控件标签被VI在前面板上的标题替代。
除了翻译前面板的字符串,将数字转换为字符串时还可用已经本地化的十进制分隔符。格式化日期/时间字符串函数指定日期和时间的显示方式。
可进行本地化的VI字符串如下:
§ VI窗口标题和描述
§ 对象标题和描述
§ 自由标签
§ 默认数据(字符串、表格、路径、数组默认数据)
§ 私有数据(列表框选项名称、表行首和列首、图形名称、图形光标名称以及图形注释名称)
§ 程序框图字符串(自由标签和字符串常量),如指定
VI字符串文件语法
注: 如将程序框图上的字符串常量翻译为另一种语言,可能会造成VI断开。上述VI断线情况常见于包含多字节字符的字符串常量。
VI字符串文件的格式很像HTML文件。系统对每个元素以一个起始标记和一个结束标记进行标记。起始标记以< and ends with >开始。结束标记以</ andends with >开始。除非在文本中,LabVIEW忽略空格字符。由于字符“<”表示一个标记的开始,LabVIEW在文本中使用“<<”表示小于号。对于字符“>”,LabVIEW使用“>>”表示大于号。LabVIEW用 ""代替双引号。同样,LabVIEW用<CR>、<CRLF>或者<LF>表示行结束符,它们分别被看作回车,回车后换行,以及换行符。VI字符串文件的格式是机器可读的。即时读取困难也无关紧要。导出文件的每一行不会出现多于两个私有或默认数据的标记。同时,嵌套层数每增加一层,LabVIEW就会相应增加一级缩进。如改变或者删除标记,则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="text" |
[VI info]. |
[vi title] [description] [content] [bdcontent] |
[VI title]. |
<TITLE>text</TITLE> | .<TITLE><NO_TITLE></TITLE>. |
[description]. |
<DESC>text</DESC>. |
[content]. |
<CONTENT>[grouper] [objects]</CONTENT> |
[bd content]. |
<BDCONTENT>[bd objects] </BDCONTENT> |
空格用于分隔VI属性。属性名称与其后的等号之间、等号与属性值之间都不允许用出现空格。
例如:
<VI syntaxVersion=5 LVversion=4502007 revision=10name="AO Generate Waveform.vi">
<TITLE>AO Generate Waveform.vi</TITLE>
<DESC>This VI generates a timed, simple-bufferedwaveform 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以下列格式对编写字体信息的代码:<FONTname="font name" size='3' style='BIUSO' color=00ff00>。可以任何顺序列出字体属性。与其它元素不同,字体规范没有结束标记。例如,可按下列方式用文本"Boldlabel"描述一个标题:
<LABEL><STEXT><FONT name="times newroman" size=12 style='B'>Bold <FONT style='I'>label</STEXT></LABEL>
可以按predef定义字体,从应用程序字体、系统字体或对话字体中指定一个预先定义字体。
<GROUPER></GROUPER>标记包含了属于同一组的前面板对象。这些标记还包含了通过分隔栏所配置的每个窗格。由于前面板总是至少包含一个窗格,VI字符串文件总是至少包含一个<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>text</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>
<PARTID=82 order=0 type="Caption"><LABEL><STEXT><FONTcolor=FF0033 size=12>Ring</STEXT></LABEL></PART>
</PARTS>
</CONTROL>
LabVIEW以上述MLABEL(多标签)标记指定了下拉列表控件上的选项,或布尔按钮上的字符串,一个字符串即代表四个按钮状态中的一个状态。以下是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],n[arr element data]必须在<ARRAY>标记后。同样,对于[clust data],n[clust element data]必须在<CLUSTER>标记后。
对于字符串控件默认数据[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="font name" size='x' style='BIUSO' color=000000> |
[path privData] |
<PROMPT>text</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] |
上文中提到的例子和资料,均在word中的附件里,可点击下载。