本地化VI
- 更新时间2025-08-27
- 阅读时长13分钟
将VI字符串导出到一个带标记的文件中并翻译该文件,然后将文件导入VI,这就是VI的本地化的过程。LabVIEW的本地化版本与英文版本使用同样的可执行程序。因此,本地化版本与英文版本兼容。
标记文本文件,又称VI字符串文件,包含了VI标题、说明、控件标题、控件说明及其他控件私有数据的信息。因为控件标签无法本地化,所以控件还带有标题。LabVIEW将VI字符串导出到一个文本文件,从而为每个控件创建了一个标题,同时控件标签被VI在前面板上的标题替代。
除了翻译前面板的字符串,将数字转换为字符串时还可用已经本地化的十进制分隔符。格式化日期/时间字符串函数指定日期和时间的显示方式。
可进行本地化的VI字符串如下:
- VI窗口标题和描述
- 对象标题和描述
- 自由标签
- 默认数据(字符串、表格、路径、数组默认数据)
- 私有数据(列表框选项名称、表行首和列首、图形名称、图形光标名称以及图形注释名称)
- 程序框图字符串(自由标签和字符串常量),如指定
VI字符串文件语法
VI字符串文件的格式很像HTML文件。系统对每个元素以一个起始标记和一个结束标记进行标记。起始标记以< and ends with >开始。结束标记以</ and ends 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=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="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>标记包含了属于同一组的前面板对象。这些标记还包含了通过分隔栏所配置的每个窗格。由于前面板总是至少包含一个窗格,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] |
下面是一个下拉列表输入控件的范例,控件的标题是“下拉列表”,选项有加载、卸载、打开和关闭。
<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(多标签)标记指定了下拉列表控件上的选项,或布尔按钮上的字符串,一个字符串即代表四个按钮状态中的一个状态。以下是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] |
编辑VI窗口标题
作为VI本地化的重要一方面,用户可自定义VI窗口标题,使其比VI文件名更具描述性。VI窗口标题可本地化而不受文件系统命名限制的约束。同时,由于调用VI是通过文件名而不是通过其标题,本地化的VI窗口标题仍能被可能调用它的VI识别。可通过导入/导出工具对窗口标题进行本地化,或在编辑VI时使用VI属性对话框的窗口外观页面手动修改VI窗口的标题。还可用VI服务器通过编程改变VI窗口标题。
句号和逗号十进制分隔符
默认状态下,LabVIEW根据操作系统的设置使用十进制分隔符,这会影响控件的数字显示和数字与字符串间转换的函数运算。在把数字作为字符串传输给仪器时,或在解析仪器输出字符串时也会引起问题。
下列函数将操作系统的设置作为默认值。如需使用句号,则必须为使用系统十进制点(+)的布尔输入连入一个False值。
- 分数/指数字符串至数值转换
- 数值至小数字符串转换
- 数值至指数字符串转换
- 数值至工程字符串转换
对于采用格式字符串的函数,形式编码%x;(其中x代表分隔符)可为特定的调用指定十进制分隔符。这些函数包括:
- 格式化写入字符串
- 扫描字符串
- 格式化值
- 扫描值
- 数组至电子表格字符串转换
- 电子表格字符串至数组转换
- 读取带分隔符电子表格
选择工具»选项,从类别列表中选择前面板,勾选使用操作系统小数点复选框,以指定是否对进制分隔符或句号使用系统设置(区域设置)。
将日期和时间作为字符串显示
默认状态下,通过格式化日期/时间字符串函数可设置字符串日期和时间的显示格式。LabVIEW读取操作系统设置并依据当前区域设置选择正确的日期/时间显示格式。对于不支持名称缩写的系统,如中文和朝鲜语系统,LabVIEW为缩写的星期名和月份名返回其数值。选择快捷菜单上的显示格式可自定义显示方式。
控件的时间和日期格式
时间标识控件可使用、查看和高精度地存储绝对时间。从快捷菜单中选择显示格式以配置显示格式选项卡,从而选择一种用户自定义格式或系统(根据语言版本相异)格式。还可用数值控件显示时间标记值,但该数值控件保存相对量。时间标识控件保存的是绝对量。