搜索
查看: 4242|回复: 7

[HTML] 如何在htmlayout中实现多语言切换

[复制链接]

3

主题

24

帖子

208

积分

二级会员

Rank: 3Rank: 3

积分
208
发表于 2013-3-25 10:06:42 | 显示全部楼层 |阅读模式
一般桌面程序中我印象中是用ini的语言文件,在菜单中切换语言,就重新载入ini文件来实现一个程序多种语言。
htmlayout是用HTML做界面,如果用类似的思路,用一些ini文件作为语言文件,然后在程序中载入,获取weblayout对象,然后写入到界面里去,倒也可以。但是抛开htmlayout不谈,HTML技术本身也可以做到多语言的,什么实践方式在htmlayout的开发中更加有效快速呢?请各位不吝赐教!
回复

使用道具 举报

9

主题

462

帖子

2551

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2551
发表于 2013-3-25 10:15:35 | 显示全部楼层

我看还是做好简体中文的软件、等有人用了再说吧。 至于多语言或者换肤,这个就太简单了,不同的外观放到不同的目录下或者使用不同的文件名就可以了,例如 /re

我看还是做好简体中文的软件、等有人用了再说吧。
至于多语言或者换肤,这个就太简单了,不同的外观放到不同的目录下或者使用不同的文件名就可以了,例如

/res/main.html
/res/main-chs.html
/res/main-cht.html
/res/cht/main.html

你可以根据需要选择载入你需要的外观
回复

使用道具 举报

3

主题

24

帖子

208

积分

二级会员

Rank: 3Rank: 3

积分
208
 楼主| 发表于 2013-3-25 10:44:02 | 显示全部楼层

[quote][size=2][color=#999999]roger 发表于 2013-3-25 10:15[/color] [url=forum.php?m

roger 发表于 2013-3-25 10:15
我看还是做好简体中文的软件、等有人用了再说吧。
至于多语言或者换肤,这个就太简单了,不同的外观放到不 ...

感谢解答!你说的不错,自己用的话也中文就行,不过我想现在就最好考虑多语言的问题,编程结构上做好准备,以避免以后改动太大。

另外我想知道有没有更“懒”的方式。切换多个html没有问题,但是一旦改动功能,比如增加界面元素,列表增加字段等等,有几种语言就需要做多少次改动。如果界面元素不只是html,恐怕工作量更大。所以我想,还是类似ini文件的思路较好。在我们的htmlayout中,有没有办法把所有翻译的部分集中在一处,而界面相当于就是一份模版,可以随时载入不同的语言文件。即使有改动,改动模版的代价也会很小。

不知我的想法是否妥当,或可行?
回复

使用道具 举报

9

主题

462

帖子

2551

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2551
发表于 2013-3-25 10:56:22 | 显示全部楼层

切换语言用INI可能是最麻烦的一种,你认为容易那可能是你根本没有做过, 想做语言包,还想“懒”是不可能的,使用语言包开发、维护成本都很高。 HTML里

切换语言用INI可能是最麻烦的一种,你认为容易那可能是你根本没有做过,
想做语言包,还想“懒”是不可能的,使用语言包开发、维护成本都很高。

HTML里切换语言,不一定其他的文件就一定要用多个文件,
不同的HTML也可以链接相同的CSS或图片等等。
回复

使用道具 举报

3

主题

24

帖子

208

积分

二级会员

Rank: 3Rank: 3

积分
208
 楼主| 发表于 2013-3-25 11:02:11 | 显示全部楼层

[quote][size=2][color=#999999]roger 发表于 2013-3-25 10:56[/color] [url=forum.php?m

roger 发表于 2013-3-25 10:56
切换语言用INI可能是最麻烦的一种,你认为容易那可能是你根本没有做过,
想做语言包,还想“懒”是不可能 ...

了解了,多谢你的经验。我会试着探索一下。如有收获,定来分享。谢谢!
回复

使用道具 举报

9

主题

462

帖子

2551

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2551
发表于 2013-3-25 11:26:43 | 显示全部楼层

[quote][size=2][color=#999999]ayuwo 发表于 2013-3-25 11:02[/color] [url=forum.php?m

ayuwo 发表于 2013-3-25 11:02
了解了,多谢你的经验。我会试着探索一下。如有收获,定来分享。谢谢!

给你一个简单的例子

  1. import win.ui;
  2. /*DSG{{*/
  3. winform = ..win.form( bottom=399;parent=...;right=599;text="HTMLayout 使用语言包 - 简单示例" )
  4. winform.add(
  5. layoutWindow={ dr=1;dl=1;bottom=382;right=580;left=10;multiline=1;top=12;notify=1;z=1;db=1;dt=1;cls="edit" }
  6. )
  7. /*}}*/

  8. import web.layout;
  9. wbLayout = web.layout(winform.layoutWindow);
  10.   
  11. //实现一个支持语言包的 behavior
  12. namespace web.layout.behavior.lang {   
  13.         import string.template;
  14.        
  15.         onAttach = function( ltEle ){
  16.                 ltEle.innerHTML =  ..string.template(ltEle.innerHTML ).format( eval( ..string.load(ltEle["data-lang"]) ) )  
  17.         }
  18. }

  19. //生成一个测试用的语言包文件
  20. var str = table.tostring(
  21.         TITLE = "这是标题";
  22. )
  23. string.save("/lang.txt", str)

  24. wbLayout.html =/***
  25. <html data-lang="/lang.txt">
  26. <div> ${TITLE} </div>
  27. </html>
  28. ***/

  29. wbLayout.css = /**
  30. html{
  31.         behavior:lang;  
  32. }
  33. **/

  34. winform.show()
  35. win.loopMessage();
复制代码
技术上实现这个不难,不过语言包维护起来比较累。

点评

真棒: 5.0
真棒: 5
  发表于 2013-10-4 16:21
回复

使用道具 举报

3

主题

24

帖子

208

积分

二级会员

Rank: 3Rank: 3

积分
208
 楼主| 发表于 2013-3-25 11:33:03 | 显示全部楼层

[quote][size=2][color=#999999]roger 发表于 2013-3-25 11:26[/color] [url=forum.php?m

roger 发表于 2013-3-25 11:26
给你一个简单的例子技术上实现这个不难,不过语言包维护起来比较累。

多谢热心提供示例!这种模版的思路正是我想要的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2019-11-15 09:13 , Processed in 0.046875 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表