原文连接:
http://www.kalmeo.org/projects/kuix/docs/xml_i18n
译文:
XML可以通过多种方式是屏幕更具属性显示动态的内容。
我们将为你简单地介绍这些属性并将为你演示一个关于怎样国际化动态内容的典型例子。
基础
国际化属性
在你的XML文件中,每处%I18N_KEY%
形式的地方都会被替换为他们的本土化相应的价值位于/i18n/message.properties或/i18n/message.XX.properties文件中,XX对应于所选择的语言。
数据绑定属性
${myProperty}和@{myProperty}基本上做同样的事情:在调用Kuix.loadScreen()或Kuix.loadXml()
同时通过myDataProvider.getValue("myProperty")从DataProvider获取一个值。他们的主要区别在
于在他们生命周期中widget(放置数值的地方)和DataProvider 之间的联系。
${propertyName}在解析时仅仅被转换为它本身的值. Widget和DataProvider之间无任何联系。
@{propertyName}在解析时被转换同时如果widget不为null将被绑定到DataProvider。
/**(略)
The main goal of this feature is to be able to change the value directly in the
DataProvider and it generate automaticaly the update on all binded widgets. The concept
go forward because you can mix more than one property in an attribute definition.
**/
典型例子
让我们用Kuix来指定一些东西。
我们从i18n开始:
messages.properties:
MY_I18N_KEY=Where is {0}? He is in {1}!
mainscreen.xml:
<screen title="I18n + dynamic data exemple">
<textarea>%MY_I18N_KEY(Brian, the kitchen)%</textarea>
</screen>
运行后将显示如下信息:
"Where is Brian? He is in the kitchen!"
现在你可以把它用来指定除了Brian之外的东西或者在不同的地方。你可以定义动态的数据到i18n的
key(关键字)里作为参数:
mainscreen.xml:
<screen title="I18n + dynamic data exemple">
<textarea>%MY_I18N_KEY(${human}, @{location})%</textarea>
</screen>
${human}属性仅仅在解析时被转换。无连接的作用。
@{location}属性将被提取并关联到DataProvider。
public class HumanLocatorDataProvider extends DataProvider {
private static final String HUMAN_PROPERTY = "human";
private static final String LOCATION_PROPERTY = "location";
private String location = "the garden";
public void setLocation(String location) {
this.location = location;
dispatchUpdateEvent(HUMAN_PROPERTY); // 这里应该打错了,HUMAN_PROPERTY应改为LOCATION_PROPERTY
}
protected Object getUserDefinedValue(String property) {
if (LOCATION_PROPERTY.equals(property)) {
return location;
}
if (HUMAN_PROPERTY.equals(property)) {
return "John";
}
return null;
}
}
任何时候你可以调用setLocation()方法更新文字。
更新后的结果将会显示如下:
"Where is John? He is in the garden!"
*本人水平一般,仅供参考。更多信息请浏览原文。
分享到:
相关推荐
包含simple和parser 很好用的xml解析文件
pythonxml:重温Python的XML工具pythonxml:重温Python的XML工具
perl 模块(spreadsheet、XML::Simple、DBB::mysql等模块) perl 模块(spreadsheet、XML::Simple、DBB::mysql等模块)
XML:标签CDATA用法 XML:标签CDATA用法
W3C规范:XML-Base简体中文版,w3china翻译。
TinyXML:一个优秀的C++ XML解析器
3、配置xml: 【tools】--> [Configure user tools] Menu txt:xmlFormat Command :D:\Program Files\EditPlus\xml.exe (Editplus安装目录为D:\Program Files\EditPlus) Argument:fo Action:Run as Text fiter...
lang(在XML命令空间内的 xml:lang),就是XML标准里定义的。 如果一个元素没有定义lang属性,且其父元素有lang属性,它将继承。 任何html原书都可以设置lang(无命名空间的)属性。 lang(在XML命令空间内的)可以...
名称XML::TreePP -- 用于解析/编写 XML 文档的纯 Perl 实现概要将 XML 文档从文件解析为哈希树: use XML::TreePP;my $tpp = XML::TreePP->new();my $tree = $tpp->parsefile( "index.rdf" );print "Title: ...
动态datagrid xml动态datagrid xml动态datagrid xml动态datagrid xml动态datagrid xml
: Document) 元素(XML :: Element) 文字(XML :: Text) 评论(XML :: Comment) PI(XML :: PI) CDATA(XML :: CDATA) 您可以通过在字符串上下文中使用任何XML :: Node对象,轻松地将对象序列化回XML文本。...
动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件...
Json和Xml离线格式化工具
不错的XML 与JSON和QS接口兼容的快速XML解析器和序列化器。原料药说明将很快。
本项目 用于 Android 中的xml 文件的字符串转为excel 文档,Android国际化文件整理为excel文件,再通过excel文档转为安卓所需要的values文件
Settings->Editor->Code Style->XML 第二类:Eclipse使用: 1.在菜单栏中选中『windows』-〉 『Preferences』。 2.在出现的对话框的左边树中展开『Java』下的『code style』。 3.其中有两项,一项是『Formatter』,...
EMeditor使用JSEE格式化XML Format 一键格式化 使用方法: 1. 选择要format的文件,文件内容全选 2. 菜单【选择】,选择jsee文件 3.完成
haarcascade_eye.xml: 用于眼睛检测的级联分类器模型 haarcascade_eye_tree_eyeglasses.xml: 用于眼镜和眼睛联合检测的级联分类器模型 haarcascade_fullbody.xml: 用于全身人体检测的级联分类器模型 haarcascade_...
这个 Perl 模块允许您根据 W3C XML Schema 验证 XML 文档。 该模块没有实现完整的 W3C XML Schema 建议,而是一个有用的子集。