Nuva 示例代码(每日一帖)之 国际化界面


<..
========================================================
==
==
==
Macrobject Nuva Samples ==
==
==
==
Copyright (c) 2004-2006 Macrobject Software ==
==
==
==
ALL RIGHTS RESERVED ==
==
==
==
http://www.macrobject.com ==
==
==
========================================================
..>
<.
using('MO_RES.nuva')
/* == Code in MO_RES.nuva ==
var RES = System.List.SettingList()
RES.Load(System.Path.ProjectPath ~ 'Languages/Language.ini')
RES.Load(System.Path.ProjectPath ~ 'Languages/' ~ RES.DefaultLanguage)
== End of MO_RES.nuva == */

class MainForm = System.UI.HtmlForm()
Caption = RES.RegexTester
Width
= 800
Height = 600

var Pattern = 'function /w+'
var Content = System.File.Load('国际化界面.nuvaexec')
var Outtext

function CreateBody().>
<table width="100%" height="100%">
<tr height="5%" align="right">
<td/><td><input type="button" value="[.=RES.MatchAll.]" mo:onclick="Match"></td>
</tr>
[.CreateTextarea(RES.Pattern, 15, this.@Pattern).]
[.CreateTextarea(RES.Content, 35, this.@Content).]
[.CreateTextarea(RES.Outtext, 45, this.@Outtext).]
</table>

<.function CreateTextarea(theCaption, theHeight, theBind).>
<tr height="[.=theHeight.]%">
<td width="40">[.=theCaption.]:</td>
<td>
<textarea style="width:100%;height:100%" mo:binddata="[.=theBind.]" mo:bindattr="value"></textarea>
</td>
</tr>
<.end function
end function

function Match()
this.SaveBindData()
Outtext = Content.RegexMatch(Pattern, Function = 'DoMatch', Option = '')
this.LoadBindData()

function DoMatch(Index, Length, Value, Match)
Result := Value ~ /r/n ~ '--------------------------------' ~ /r/n;
end function
end function

function OnShow()
this.LoadBindData()
this.Match()
end function
end class

var main = MainForm()
main.Show()

System.App.Run()
.>

<..
【简介】
    本例是上例(正则测试器)的简单改进,通过对界面文字的简单处理,即可方便的实现界面的国际化和本地化。

【看点】
    1、本例演示了 Nuva 语言的 GUI 应用、面向对象编程、事件驱动以及数据绑定,相应的内容请参考简单浏览器和正则测试器的示例程序及其说明。

    2、本例中用到了国际化(本地化)的代码和语言文件,代码放在 MO_RES.nuva 文件中,语言文件放在 Languages 目录中。

    3、Languages 目录中有一个 Language.ini 文件,该文件内容如下:
       DefaultLanguage=English.lan
       DefaultLanguage 表示默认的语言,等号后面是实际的语言文件名

    4、在本例中我们给出了汉语和英语的语言文件,分别内容如下:
       Chinese.lan
          RegexTester=正则测试器
          MatchAll=匹配所有
          Pattern=正则
          Content=正文
          Outtext=结果

       English.lan
          RegexTester=Regex Tester
          MatchAll=Match All
          Pattern=Pattern
          Content=Content
          Outtext=Outtext

    5、MO_RES.nuva 文件内容如下:
        var RES = System.List.SettingList()
        RES.Load(System.Path.ProjectPath ~ 'Languages/Language.ini')
        RES.Load(System.Path.ProjectPath ~ 'Languages/' ~ RES.DefaultLanguage)

        其中 RES 是定义的资源名称,System.List.SettingList 是一个配置列表,在本例中,RES 首先读入 Languages/Language.ini 的配置信息,然后通过 Languages/Language.ini 的 DefaultLanguage 的定义读入真正的语言文件,从而实现了界面语言的国际化和本地化的实现。

        System.Path.ProjectPath 定义了被执行工程(Nuva 工程或文件)的路径。

        通过 RES 对象的属性,我们可以直接存取国际化的文本信息,如下:
          RES.Name 表示语言文件中 Name 项的内容,比如在汉语中可能为“名称”

【扩展】
    本例可以进一步扩展以增强其实用性,比如可以增加界面语言的种类,通过编写更多的语言文件,从而实现一个真正意义上的国际版软件。
..>

本例运行结果如下(English.lan):

本例运行结果如下(Chinese.lan):

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值