Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

属性文件

 

    在脚本中,不能使用实体,用属性文件代替。

 

属性

Edit section

    当你在XUL文件中使用DTD文件是恰当的。然而,脚本不解析实体。也就是说,如果你希望在脚本中显示信息而且你不知道到底要显示什么,请使用属性文件

    一个属性文件包含一系列字符串。你可以在DTD文件旁边找到属性文件(.properties后缀)。属性按照以下语法定义 name=value。实例如下。

notFoundAlert=No files were found matching the criteria.
deleteAlert=Click OK to have all your files deleted.
resultMessage=%2$S files found in the %1$S directory.

    上例中,属性文件包含桑属性,可以由脚本读取显示给用户。

Stringbundles

Edit section

   你可以写一段代码手动来读取属性,而在XUL中有一个 stringbundle 元素来帮你做。这个元素有一系列函数有属性文件中获取属性并得到本地化信息。这个元素有属性文件读取内容并为你建立一个属性列表。你可以通过名字来查找属性。

<stringbundleset id="strbundles">
<stringbundle id="strings" src="strings.properties"/>
</stringbundleset>

    这个元素会从与该XUL文件系统的目录中读取名为 'strings.properties'的文件。像其他非显示元素一样你可以使用一个 stringbundleset 来包含所以的stringbundle

stringbundle获取字符串

Edit section

     stringbundle 元素有一系列方法。首先是 getString 用于脚本读取字符串。

var strbundle = document.getElementById("strings");
var nofilesfound=strbundle.getString("notFoundAlert");

alert(nofilesfound);
  • 本例首先使用 id 获得字符串束的一个引用
  • 然后在属性文件中查找 'notFoundAlert' 字符串 getString() 函数返回字符串的值或 null (字符串不存在)。
  • 最后把职工文本显示在提示框里。

文本格式

Edit section

    getFormattedString()方法也根据名字从文本束中查找字符串,此外会按照格式控制代码 (如 %S) 将其后给出的数组内容替换入字符串。

var dir = "/usr/local/document";
var count = 10;

var strbundle = document.getElementById("strings");
var result = strbundle.getFormattedString("resultMessage", [ dir, count ]);

alert(result);

    本例显示如下。

10 files found in the /usr/local/document directory.

    你会注意到格式化代码 %1$S%2$S被使用,替换顺序也和在数组中的不同。格式化代码 %n$S 直接描述替换参数的位置。尽管在不同语言中词序可能不同通过 getFormattedString()描述的顺序可以被写入属性文件。

非ASCII码的换码符

Edit section

    (这可能不再正确:在 Localizing extension descriptions中说 “使用 UTF-8 编码(而非 BOM) 保证外文正确显示。” UTF-8 编码文本有效, 换码符同样有用。一些新想法的引入会更有用。)

    尽管大多数语言使用非ASCII字符集。属性文件只能使用ASCII字符集编制。然而,属性文件支持其他字符的换码形式: \uXXXX 这里的 XXXX 是字符码,因此,你的属性文件可以包含非ASCII字符,不过你需要把他们转换为换码形式。你可以使用 Sun's Java Development Kit (JDK)的 native2ascii 命令来完成它。

Gecko 1.8.x (or later) 支持属性文件以 UTF-8编码。你可以直接写入非ASCII字符。


下一章,我们将讨论 XBL,它用于定义元素的行为( behavior of an element.)

 

« Previous Next »

  

 

 

文档标签和贡献者

 此页面的贡献者: ziyunfei, alzhu
 最后编辑者: ziyunfei,