【mxGraph】源码学习:(3)mxResources

前面学习mxClient源码的时候,见过这个类的使用,主要是用于加载资源文件用于实现客户端的国际化

1. 资源文件格式

可以使用如下格式命名资源文件,比如graph_zh.txt

文件名:name[_en].properties

如果没有下划线,表示其为默认加载的资源文件。如果客户端使用的语言存在对应的资源文件,则将加载该文件。

资源文件中的项是key=value的格式,值可能会通过get方法获取,没有等号的项会被忽略,以#开头的行是注释行,如下所示:

# 这是注释
alreadyConnected=节点已经连接
这一行将被忽略

值可能包含{1} … {n}形式的占位符,其中每个占位符都替换为传递给mxResources.get的params参数中相应数组元素的值,占位符{1}映射到数组中的第一个元素(索引0处),占位符使用如下所示:

duplicateIt=副本 {
   1}

为了使用Unicode字符,可以使用标准符号,比如\u8fd1,也可以使用%u作为前缀,比如%u20AC。对于普通的十六进制编码字符串,使用%作为前缀,比如%F6。可以使用resourcesEncoded禁用Unicode,但必须保证资源文件是UTF-8编码。

2. 加载资源文件

资源文件可以直接在resources文件夹中用上述命名格式添加,然后根据客户端语言进行加载,目录结构如下:

resources/
	graph.txt
	graph_de.txt
	graph_zh.txt

也可以通过<source>标签在editor配置文件的UI部分添加(这种方式目前还没见过,后面见到了再补充),下面的元素将会根据客户端语言加载examples/resources/mxWorkflow.properties资源文件:

<mxEditor>
   <ui>
     <resource basename="examples/resources/mxWorkflow"/>

还可以通过mxResources.add方法动态添加资源文件,方法声明如下:

add: function (basename, lan, callback)

默认情况下,客户端在加载时同步添加src/resources下面的两个资源文件。要异步加载这些文件,可以在加载mxClient.js之前将mxLoadResources设置为false,然后使用mxResources.loadResources添加资源文件。

3. 属性

mxResources类中只定义了五个属性:

// 包含资源文件中键值对的map
resources: {
   },

// 指定资源文件的后缀。默认为mxResourceExtension
extension: mxResourceExtension,

// 指定是否支持Unicode
resourcesEncoded: false,

// 指定是否加载默认资源文件
loadDefaultBundle: true,

// 指定是否加载特定语言的资源文件
loadSpecialBundle: true,

4. 方法

mxResources定义了一些方法用于加载资源文件:

/**
 * 子类的钩子方法用于禁用对给定语言的支持。如果lan在<mxClient.languages>中,则此实现返回true
 * 
 * lan - 给定的语言
 */
isLanguageSupported: function (lan) {
   
    if (mxClient.languages != null) {
   
        return mxUtils.indexOf(mxClient.languages, lan) >= 0;
    }

    return true;
},

/**
 * 子类的钩子方法返回默认资源文件的URL,此实现返回basename+<extension>,如果
 * <loadDefaultBundle>为false,则返回null
 * 
 * basename - 将加载的文件的基础名
 * lan - 给定的语言
 */
getDefaultBundle: function (basename, lan) {
   
    if (mxResources.loadDefaultBundle || !mxResources.isLanguageSupported(lan)) {
   
        return basename + mxResources.extension;
    } else {
   
        return null;
    }
},

/**
 * 子类的钩子用于返回特定资源文件的URL,该实现返回basename+'_'+lan+<extension>。
 * 如果<loadSpecialBundle为false>,或lan等于<mxClient.defaultLanguage>,则返回null
 * 
 * 如果<mxResources.languages>不为null且<mxClient.language>包含破折号,则此方法检查
 * <isLanguageSupported>对完整语言(包括破折号)是否返回true。如果返回false,
 * 则语言的第一部分(直到破折号)将作为扩展名进行尝试。
 * 
 * 如果<mxResources.language>为null&#x
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值