快速业务通道

批处理文件国际化支持解决方案 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
Message.bat,传递参数直接调用即可。

清单 9. 调用 getMessage.bat 执行多语言处理

set value="" call getMessageFactory.bat key, value

key 为指定的键值调用后,则 value 值为某语言习惯的 key 对应的语言信息。

完成了语言元素抽象层的构建,程序内核依赖于该抽象层,与具体的语言显示功能彻底分离,保证了程序的稳定性同时能够灵活支持多语言。

清单 10 直接依赖于某种语言的程序片断

……………… .. echo “Operation failed, for more information please contact the administrator!” ………………… .

清单 11 基于语言元素抽象层的程序片断

……………… .. set failedvalue="" call getMessageFactory.bat "Failed",failedvalue echo %failedvalue% ………………… .

获取正确的信息实现

信息读取器的作用是通过给定键值,可以把指定文件中的信息值取出来。根据第三章的灵活架构体系设计,可以实现较为灵活的多语言体系结构,批处理脚本语言属于非面向对象语言,因此在实现上基于面向过程语言的注射方式。常用的有动态读取和通过配置文件配置的方式,本文采用两种方式相结合提供灵活配置。另外,考虑到适用当前用户语言习惯的情况下,只是在与用户第一次交互后记录语言习惯,每次运行进行文件读取,较为简单,本也不予详述,对于读取系统语言习惯本文作详细的研究。

系统配置文件 sysconfig.txt 配置运行过程中的系统设置,对于动态支持多语言选择方式而言,可以动态配置 Message 的方式,动态 Message 实现的方式等。

清单 12. sysconfig.txt 内容

getMessage= usergetMessage.bat getMessageImp= DBgetMessageImp00000.bat

批处理文件国际化支持解决方案(7)

时间:2011-02-06 IBM 蔡龙军

其中 getMessage 指定运行的 Message 方式行为的执行文件,getMessageImp 指定读取 Message 信息的各种存储方式的读取实现。

getMessageFactory.bat 获取选定的 getMessage 方式,从系统中取,还是按照当前用户习惯取。

清单 13 getMessageFactory.bat 内容

set varimp="" call Keys_v2.bat getMessage,sysconfig.txt,varimp if Not %varimp%== "" goto executeMessage For %%1 in (*getMessage.bat) do (  set varimp=%%1  goto executeMessage ) :executeMessage echo %varimp% call %varimp% %~1,%~2

getMessageFactory.bat 首先读取系统配置的系统语言习惯行为,如果没有设定,则在当前目录下搜索相应的 Message 执行文件,如果搜索到了,则使用第一个执行文件进行执行。

获取系统当前语言习惯

清单 14 sysgetMessage.bat 内容

set varlocale="" set key0=%~1 set varimp="" call getLocale.bat varlocale call Keys_v2.bat getMessageImp,sysconfig.txt,varimp if Not %varimp%== "" goto executeMessageImp For %%1 in (*getMessageImp.bat) do (  set varimp=%%1  goto executeMessageImp ) :executeMessageImp echo [%varimp%] call %varimp% %key0%,%varlocale%,%~2

sysgetMessage.bat 采取了和 getMessageFactory.bat 的实现手段,首先从配置文件中读取多语言外壳的存储方式的执行脚本文件,如果没有读到则从当前目录中进行查找是否有可执行的文件,如果存在,则读取第一个进行执行。

采用文件存储多语言信息的实现:

清单 15 filegetMessageImp.bat 内容

@Rem set varlocale="" @Rem getLocale.bat varlocale @echo

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号