社区
控件与界面
帖子详情
想问一下pb怎样支持国际化语言,大型的mis程序怎样实现多语言?
derris
2006-01-19 11:05:54
pb有没有resource类的可以支持的呢?
...全文
487
25
打赏
收藏
想问一下pb怎样支持国际化语言,大型的mis程序怎样实现多语言?
pb有没有resource类的可以支持的呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
25 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
baffling
2006-03-13
打赏
举报
回复
gz
hangzhou6274
2006-03-03
打赏
举报
回复
都是牛人,什么东西都搞得这么透彻,我要拜师学习
rightyeah
2006-03-01
打赏
举报
回复
没错,我就是要做100次,因为有100个不同的窗口。
每个窗口的界面都是独立的,需要一个单独的界面资源(xml文档的一部分)来描述。而对于窗口中的控件,我就根本没有任何命名上的要求。比如按钮,可以用cb_ok,也可以偷懒,就用cb_1,还有其他控件,都可以直接用dw_1,sle_1这样的名字。而且我这样的做法,不但可以定义控件上的文本,还可以定义控件的位置、尺寸。
而楼上的做法,名字叫cb_ok的按钮,他的文本就只能是‘确定’,而不能是其他的,在灵活性上就显的麻烦了点。每用一个控件,先得去查这样一个列表,看看是不是有现成的可以用,如果没有,就要再定义一个,还要给一个合适的名字,还得注意是不是这个名字被用掉了。
我的做法是以对象为单位的,一个窗口对象上可以有很多控件,我把这个窗口和它的控件的界面资源集中到一起了。而楼上的做法,则是以控件为单位的,定义了一个控件名称-控件文本的对照罢了。我的做法,是定义了一个class,嵌入到每一个自定义的对象里面,而楼上的做法,则是要求所有的用户界面都必须使用自定义的控件,而不能使用系统提供的控件。
rightyeah
2006-02-24
打赏
举报
回复
相比wguxin的解决方案,我的方法的好处在于
1、不需要为每一个控件定义派生类,只需要在自定义application,window,userobject的时候插入一个对象就可以了。
2、每一个自定义的对象(指pbl文件中可以看到的对象),都对应了xml文档中的一个项目。象w_main,w_main2,m_main,m_main2,每一个都有相对的pb对象的。这样同一个userobject用在多个窗口的话,相应的xml文档只需要写一次。
3、可以处理多次继承的类。这里的w_main2是从w_main继承的,m_main2是从m_main继承的。实际使用的时候,application调用w_main2,w_main2调用m_main2。实现语言切换的时候,先做基类的切换,再做派生类的切换。这样对于从一个基类继承出来的多个子类,不必为共同的部分内容反复写xml文档了。
4、实时切换。由于语言切换的代码被集中到了一个class上,使得用户选择不同语言后,立即切换到选中的语言的做法成为可能。
rightyeah
2006-02-24
打赏
举报
回复
这两天做了一个class,用来实现多语言转换的。只要在每个window/userobject里面插入这个不可见的类,在application里面做适当的初始化,就可以实现多语言的切换。
我的xml文档是这样的:
<?xml version="1.0" encoding="gb2312"?>
<m-lang>
<lang type="zh">
<w_main title="标题">
<cb_1 text="按钮"/>
</w_main>
<w_main2 title="标题-继承的">
<cb_2 text="第二个按钮"/>
</w_main2>
<m_main>
<m_file text="(&F)文件">
<m_exit text="(&X)退出 Alt+F4"/>
</m_file>
<m_edit text="(&E)编辑"/>
<m_language text="语言">
<m_zh text="汉语"/>
<m_en text="English"/>
</m_language>
</m_main>
<m_main2>
<m_edit>
<m_copy text="复制"/>
<m_paste text="粘贴"/>
</m_edit>
</m_main2>
</lang>
<lang type="en">
<w_main title="title">
<cb_1 text="button"/>
</w_main>
<w_main2 title="title-inherb">
<cb_2 text="2nd button"/>
</w_main2>
<m_main>
<m_file text="&File">
<m_exit text="E&xit Alt+F4"/>
</m_file>
<m_edit text="&Edit"/>
<m_language text="Language">
<m_zh text="汉语"/>
<m_en text="English"/>
</m_language>
</m_main>
<m_main2>
<m_edit>
<m_copy text="Copy"/>
<m_paste text="Paste"/>
</m_edit>
</m_main2>
</lang>
</m-lang>
wguxin
2006-02-24
打赏
举报
回复
to rightyeah(众妙之门)
cb_ok 是 "确定" 那么"同意" 就不能是 "cb_ok" 了, "同意" 要有令外的名字, 文字与控件的名称是一一对应的.
你的方法和我的不一样吗? 只不过你是在打开窗口的时候做的,我是在控件生成的时候做的.
有个问题要问你了,如果程序中有100个窗口 每个窗口上的按钮都相同,比如都是 "确定",我只要
<root>
<lang type="zh"><cb_ok text="确认"/><cb_cancel text="取消"/></lang>
<lang type="en"><cb_ok text="ok"/><cb_cancel text="cancel"/></lang>
</root>
就行了,你却要
<?xml version="1.0" encoding="gb2312"?>
<m-lang>
<lang type="zh">
<w_main title="标题">
<cb_1 text="按钮"/>
</w_main>
<w_main2 title="标题-继承的">
<cb_2 text="第二个按钮"/>
</w_main2>
<m_main>
<m_file text="(&F)文件">
<m_exit text="(&X)退出 Alt+F4"/>
</m_file>
<m_edit text="(&E)编辑"/>
<m_language text="语言">
<m_zh text="汉语"/>
<m_en text="English"/>
</m_language>
</m_main>
<m_main2>
<m_edit>
<m_copy text="复制"/>
<m_paste text="粘贴"/>
</m_edit>
</m_main2>
......
100次
</lang>
<lang type="en">
<w_main title="title">
<cb_1 text="button"/>
</w_main>
<w_main2 title="title-inherb">
<cb_2 text="2nd button"/>
</w_main2>
<m_main>
<m_file text="&File">
<m_exit text="E&xit Alt+F4"/>
</m_file>
<m_edit text="&Edit"/>
<m_language text="Language">
<m_zh text="汉语"/>
<m_en text="English"/>
</m_language>
</m_main>
<m_main2>
<m_edit>
<m_copy text="Copy"/>
<m_paste text="Paste"/>
</m_edit>
</m_main2>
......
100次
</lang>
</m-lang>
PowerDesigner
2006-02-23
打赏
举报
回复
维护表的关键字应该是:窗口名-》classname,因为在同一窗口不可能有两个同名的控件名,你可以参考pfc的安全服务
rightyeah
2006-02-23
打赏
举报
回复
我想楼上的不明白我的意思。按照wguxin的方法,他用xml保存对象名称与显示文本的对照,可能会象这样:
<root>
<lang type="zh"><cb_ok text="确认"/><cb_cancel text="取消"/></lang>
<lang type="en"><cb_ok text="ok"/><cb_cancel text="cancel"/></lang>
</root>
然后根据对象的classname()来查找对照表,如果按钮的名字是cb_ok,语言是zh的,就会返回一个"确认"。而我的问题是,如果另外一个对象,也叫cb_ok,这么查一下表,也还是会返回"确认",虽然这根本不是我想要的。
rightyeah
2006-02-22
打赏
举报
回复
那我就有一个疑问了。同样一个按钮,cb_ok,在这个窗口上也有,在那个窗口上也有,区别是这里用"确定",那里却要用“同意”。不说按钮,statictext用的更多,都是st_1,st_2的,而且st还是enabled=false的,它的事件不会运行。我的问题是:对于这样同名的控件,怎么区分?
wguxin
2006-02-22
打赏
举报
回复
所有的控件都用自己的对象继承过来,在控件初始化使自动完成语言设置,userobject 和tab page 也是一样的
例如: 按钮 "cb_ok" 在他的"constructor"事件中调用自定义函数"of_constructor"
of_constructor(lng_id,this.classname()) //lng_id 为全局的语言标识(1 中文,2英文...),然后所有的按钮都由此继承 使用时,只要给按钮相应的名字 即可
XML 文件中 "cb_ok" 对应 按钮上文字
其他控件基本相同,数据窗口麻烦点,需要根据列名来确定,提示信息的"messagebox" 要用自己的代替,提示信息可以使用自己定义的编号,根据编号在XML中找出相应的文字
rightyeah
2006-02-22
打赏
举报
回复
希望你能给点资料,给我参考一下。谢。
rightyeah_tang@hotmail.com
rightyeah
2006-02-22
打赏
举报
回复
to wguxin:
我也考虑过你说的方法,为不同的语言定义不同的xml资源,然后在窗口上对所有的文本设置值。
普通控件很好处理,简单赋值就可以了。我想问的是:
1、datawindow object怎么处理,动态更换的datawindow object又该怎么处理。我个人以为,还是由调用者来做,也就是说在窗口open的时候直接调用一个关于dw界面的函数来处理,而动态更换的dw,则在更换后立即调用这个界面函数。
2、userobject怎么处理。是由uo自己来处理,还是直接由窗口对象来处理?前者可以吧复杂问题分解到各个自定义的对象,但是每个自定义的uo,都必须有相关的界面处理代码。后者把代码都集中到窗口上了,不过在处理uo,以及uo嵌套uo等情况的时候,就显得有点力不从心了。
3、tab page怎么处理。tab page虽然也是userobject,但是它和自定义的uo毕竟有所不同
4、菜单,我个人倾向于让窗口来处理。
renwanly
2006-02-22
打赏
举报
回复
to rightyeah(众妙之门):
看一下PFC的安全扫描服务中是如何运用扫描来完成的,你可以知道如何实现不同按钮在不同窗口中的text
renwanly
2006-02-16
打赏
举报
回复
1.translation toolkit
优点:PB自带.方便实用,
缺点:需要针对不同语言发布不同版本
2.配置文件,
缺点:对程序开发过程控制要求较高,需要将菜单,标签,提示,数据窗口,等所有有文字的地方都要做"活",以便根据用户选择语言进行动态变化,程序效率较低
优点:一个版本就可真正"国际化"
可根据你的要求进行选择:D
wguxin
2006-02-16
打赏
举报
回复
我们有做过,用XML,每种语言一个XML,界面上所有的文字信息都在XML文件中.包括文字,字体,提示信息
WorldMobile
2006-02-15
打赏
举报
回复
translation toolkit
rightyeah
2006-02-15
打赏
举报
回复
up一下,看看讨论结果
li_d_s
2006-02-15
打赏
举报
回复
不行就用配置文件,写在祖先窗口里面去,open的时候用窗口名做section, 控件名做key取配置文件里面的内容作为text
NORTHCHERT
2006-02-14
打赏
举报
回复
PB8.0以上 有个translation toolkit 工具你可以来试着做多语言版本
YewPu
2006-01-23
打赏
举报
回复
在软件上加上设定字体等..这就行了.也就是在程序入口让用户选择字体...等,哪程序就可以支持任何中文的语言,,,如果有英文等,哪一就要加几种语言版本.
加载更多回复(5)
ELK/ELFK(7.3 ) 企业
PB
级日志系统实战
包含的组件有Filebeat,Logstash,Elastic,Kibana等 本堂课引入Kafka 让Elastic Stack 能适应企业
PB
级的业务日志量 并弥补传统ELk架构的不足 ★ 学完这门课程会获得什么? 首先从零开始教你部署Elastic...
如何成为一个真正的
程序
高手?
转载于:http://developer.51cto.com/art/200804/69326.htm
经常有人
问
我:面对众多的开发工具/
语言
,我该选择哪一个?怎样才能学好一门
语言
?怎样才能算是一个真正的
程序
高手?……
首先,我不算是一个什么
程序
高手,我也就半吊子水晃晃荡荡。我不太喜欢“
程序
高手”这个词,最多,只能算是一名“熟练的开发者”而已,很多时候亦是半懂不懂。我编程是靠自学的,没有人教,也没有人
问
。因此走了不少弯路。当然现在看来,那些走过的弯路也算是一种积
:★★★怎样成为一位
程序
高手★★★
★★★怎样成为一位
程序
高手★★★ 我每天都要收到很多的朋友来信。有不少的网友经常
问
我:面对众多的开发工具/
语言
,我该选择哪一个?怎样才能学好一门
语言
?怎样才能算是一个真正的
程序
员?…… 其实我也就半吊子水,很多时候亦是半懂不懂。我学电脑全是靠自学的,没有人教,也没有人
问
。因此走了不少弯路。当然现在看来,那些走过的弯路也算是一种积累。我所使用的开发工具是这样一个经历:GWBASIC->FOXB
怎样成为一个
程序
高手呢?
怎样成为一个
程序
高手呢?http://www.XiaoHui.com 2000-07-09 [原创]
控件与界面
604
社区成员
12,293
社区内容
发帖
与我相关
我的任务
控件与界面
PowerBuilder 控件与界面
复制链接
扫一扫
分享
社区描述
PowerBuilder 控件与界面
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章