推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

LabVIEW开发教程之边干边学界面本地化

更新时间:2019-12-12 08:21:19 大小:584K 上传用户:梦留香查看TA发布的资源 标签:labview 下载积分:2分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

LabVIEW 功能越来越强大,用LabVIEW 开发的程序也越来越复杂。很多国内的工程师用LabVIEW 开发的程序也开始冲出亚洲,走向世界。但是为了让LabVIEW 编写的程序可以进销海内外,大家遇到的一个棘手的问题就是本地化的问题。如何让界面上的文字能够按照我们的需要随时切换呢?


  实现本地化的方法有很多。我们姑且分为静态和动态的两种。


  所谓静态的实现,其实就是在开发完成乊后,根据我们需要发布的语言种类,将源代码直接做本地化。比如我们开发好的VI 前面板都是英文显示的,需要中文版本的时候,直接在源代码的前面板上把各种文字改成中文的再打包发布。这样做显然费时费力,而且很不灵活。


部分文件列表

文件名 大小
LabVIEW开发教程之边干边学界面本地化.pdf 584K

部分页面预览

(完整内容请下载后查看)
开发技术丛书  
LabVIEW  
边 干 边 学 界 面 本 地 化  
目    录  
目 录  
背景  
实现  
总结  
1
2-5  
6
背景  
LabVIEW 功能越来越强大,用 LabVIEW 开发的程序也越来越复杂。很多国内的工程师用  
LabVIEW 开发的程序也开始冲出亚洲向世界是为了让 LabVIEW 编写的程序可以进销海  
内外家遇到的一个棘手的问题就是本地化的问题何让界面上的文字能够按照我们的需要  
随时切换呢?  
实现本地化的方法有很多。我们姑且分为静态和动态的两种。  
所谓静态的实现实就是在开发完成乊后据我们需要发布的语言种类源代码直接做本  
地化。比如我们开发好的 VI 前面板都是英文显示的,需要中文版本的时候,直接在源代码的前  
面板上把各种文字改成中文的再打包发布。这样做显然费时费力,而且很不灵活。  
动态的实现方法是很多高级编程语言所使用的方法种方法把程序的源代码和界面文字分  
面文字保存在一个资源文件里面和程序一起发布有的界面文字都是从资源文件里面动  
态读取出来然后显示的样做的一个最大好处就是容易实现语言的本地化使程序已经  
发布成 EXE 了,也可以通过修改资源文件方便地实现界面语言的本地化。  
以前在 LabVIEW 中要实现本地化都只能静态的实现LabVIEW 在生成安装包的时候也可以  
选择语言,但是那些也是针对一些系统自带的菜单和对话框。  
有一种动态实现本地化的方法是用 ini 文件来做资源文件。从而通过 LabVIEW 程序动态读取 ini  
文件中事先设定好的各种语言的项目来正确显示对应的文字种方法是可行的是需要编写  
大量的 VI 来管理这些 ini 文件中的项目。  
许多 LabVIEW 的开发者都在为希望能够实现界面上的语言随时按需切换而呕心沥血费苦心。  
现在XML 技术的本地化配置编辑器 LCE 出现啦了它们就可以非常方便地实现随  
心所欲本地化的梦想。图 1 中是最终程序效果,用左边的下拉列表控件可以实现语言的动态切  
换。  
1. 最终效果(左)英文界面右)中文界面  
1
实现  
LCE 的介绍请
2 显示了基于 LCE (Localization Configuration Editor)来实现本地化的结构图。LCE 是在 NI  
Devzone 上新推出的一个可以免费下载使用的工具包有两个部分组成LCE 编辑器和 LCE  
函数。  
LCE 编辑器:它其实是用 LabVIEW 2009 开发出来的应用程序。可以创建并修改 XML 的资源文  
件。资源文件中包括控件和菜单在各种语言下的名称。  
LCE 库文件:在 LabVIEW 中提供 LCE 的一系列 VI 来实现动态调用各种语言下的对应项目的字  
符。然后通过属性节点赋给各个菜单和控件。  
2. LCE 实现本地化的结构  
安装 LCE  
解压并安装 lce_installer_101.zip 即可LCE LabVIEW2009 编写的以需要 LabVIEW  
2009 RTE(下载链
然后安lce_lib_installer_b.zip个是调用资源文件的那一系列 VIVILabVIEW 8.6.1  
以及以后版本。安装这些文件就会在 LabVIEW 的函数选版中的用户库里面添加 LCE VI。  
使用介绍  
创建资源文件  
从开始菜单»程序» Localization Configuration Editor v1»LCE 就可以打开 LCE 来创建资源文件  
了。  
2
首先填入需要的语言  
然后在左边的树形结构下右键创建 resource,每个 resource 都有一个唯一的名称,用以以后在  
程序中调用。每个 resource 下都可以定义每种语言对应的字符串。  
按照这个方法创建需要本地化的 resource 列表。也可以把相关的 resource 创建在一个文件夹。  
最后点击保存即可。  
可以通过 LCE 打开文件夹中 example 目录下的 Localization.xml 来看我已经创建好的例子。  
从资源文件获取语言信息  
3
LabVIEW 的函数选版»用户库»LCE 里面可以找到 LCE 的几个 VI要就是用下面 2 VI 就  
够了。在程序最开始,要通过 Load LCE Resource List.vi 来指定资源文件的路径。  
3. Load LCE Resource List.vi  
然后通过 LCE_Get Resource Value.vi 指定 resource 的名称和语言的种类来得到需要显示的字  
符串。  
4. LCE_Get Resource Value.vi  
例程  
LCE 提供了一个创建和读取资源文件的方法来管理本地化的语言信息。那么如何通过程序将所  
有的菜单和控件的名称改变过来呢?为了帮助大家理解,我编写了一个简单的例程。  
运行效果  
请参考\example 目录下的 local.vi 这个程序。在 VI 运行的过程中,点击 language 下拉框选择  
不同的语言乊后相应的字符都会变成对应的语言。参见图 1。  
程序实现  
4. 实现本地化的流程  
通过事件结构来侦测当下拉框选择不同语言的时候调用 local_ctrl.vi local_menu.vi 来分别对  
所有的控件和菜单项迚行更新。  
由于控件的标签(label)是不能在运行时更改的,而标题(caption)是可以的。所以我用 label 作为  
控件的唯一标识前面板上让控件都显示出 caption要显示 label变语言实际上就是改  
4
变控件的 caption注:如果控件没有显示过 caption 而去改变 caption 的时候 LabVIEW 是会  
报错的,所以创建控件的时候务必确保 caption 都已经显示出来了)  
为了将控件和资源文件中的 resource 一一对应起来。我将 resource name 和控件的 label 对  
应起来。比如 STOP 按钮的 label 叫做 ctl_stop,那么在资源文件里面编辑的时候这项 resource  
name 也叫 ctl_stop。在 VI 中就可以通过控件的 label.text 属性来查到资源文件中对应的  
resource,从而取出需要的语言的显示值。  
这个显示值可以通过前面提到的 LCE_Get Resource Value.vi 来得到再用属性节点赋给控件的  
Caption 属性。在 LCE VI 里面还有一个叫做 LCE_Get Resource Value and Update Ref.vi。  
通过它以直接把控件引用对应的控件标题自动更改掉使用起来更加方便以在本例程中,  
我是用的这个方法来做的。  
LCE_Get Resource Value and Update Ref.vi  
Local_ctrl.vi  
菜单的更改是类似的个菜单项对应一个菜单标识符和菜单项名称两项分别和控件的 label  
以及 caption 类似。只要把菜单的项标识符和 resource name 对应。然后用对应的语言字符更  
新项名称即可。  
与控件不同的是单项的访问是有一系列 VI 不是通过属性节点且菜单是有层次的。  
每次读取菜单项都只能读取到一层的这里在例程中只编写了两层的菜单以要遍历所有的  
菜单项可能需要迭代来实现。  
5
总结  
本文通过一个实例来介绍了基于资源文件来实现 LabVIEW 前面板本地化的方法LCE 这个  
工具可以方便地实现资源文件的创建辑和读取使用这个工具包的时候发现有几个需  
要注意的地方。  
创建和编辑资源文件的 LCE 程序需要 LabVIEW 2009 运行库引擎个给该方法的使用造成了  
一定的限制。不过网上有 LCE 源代码,也许可以重写到 LabVIEW 8.x 的版本从而可以使其适用  
面更广。  
LCE 的高级 VI 是可以直接把连在控件引用上的控件的 caption 自动改变的功能点固然方便,  
但是有时候也改变了一些不必要的东西程中文本输入控件的 caption 和内容都被改变  
了。所以在实际使用的时候,这个 VI 也许需要根据具体情况做相应的修改。  
目前发现 LCE 如果给定的 resource name 不存在也会返回一个其它 resource name 的名称这  
一点应该算个 bug。因为这样如果 前面出现控件的 label 没有被定义的情况,其名字可能被改  
为和其它的控件一样。所以使用的时候需要这点。  
如果大家在使用的时候有什么心得或者发现本文有什么问题,欢迎和我联系!  
韩翼  
6

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载