【仅供内部供应商使用,不提供对外解答和培训】

Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagexml
themeEclipse
firstline1
titleplugin.xml
linenumberstrue
<extra-core>
        <LocaleFinder<RequestParameterHandler class="your class name"/>
</extra-core>


六、原理说明

接口注册逻辑:接口实例通过ExtraClassManager#addLocaleFinder 注册到 InterProviderFactory 这个国际化的工厂类中注入到具体的 InterProvider 实例中。

接口的生效逻辑:通过InterProviderFactory 获取到 InterProvider 实例,最后通过 getLocText 就可以获取到注入的相关国际化数据了

七、特殊限制说明

String find(); 方法返回的是一个相对于插件JAR的包内文件路径( 比如 com/tptj/demo/hg/locale/demo)。

国际化文件的命名规则:国际化文件按组定义,文件的后缀均为 properties。每一组国际化申明都必须包含一个默认文件 和可选支持的语言文件。

以 com/tptj/demo/hg/locale/demo 这个路径为例。其中com/tptj/demo/hg/locale表示的是实际的包路径,demo表示的是国际化的名称。如果国际化名为demo,则必须存在以下文件 com/tptj/demo/hg/locale/demo.properties

然后每一种支持的语言,增加一个对应的语言文件。比如 com/tptj/demo/hg/locale/demo_zh_CN.properties 表示的是中文国际化文件。

下面看一个实例:

Code Block
languagejs
themeEclipse
titledemo.properties
linenumberstrue
Plugin-Demo_Hello_World=Hello World
Plugin-Demo_Number=number:{}

这是一个默认定义,当用户使用的语言环境没有对应的国际化定义时,则以默认的实现生效。

Code Block
languagejs
themeEclipse
titledemo_zh_CN.properties
linenumberstrue
Plugin-Demo_Hello_World=你好世界
Plugin-Demo_Number=数字:{}
Code Block
languagejs
themeEclipse
titledemo_en_US.properties
linenumberstrue
Plugin-Demo_Hello_World=Hello World
Plugin-Demo_Number=number:{}

上面这组国际化定义,声明了对简中和英文环境的支持

实际调用时:有以下几种调用方式

Code Block
languagejava
themeEclipse
firstline1
linenumberstrue
//设计器调用
InterProviderFactory.getDesignI18nProvider().getLocText("Plugin-Demo_Hello_World");
InterProviderFactory.getDesignI18nProvider().getLocText("Plugin-Demo_Number","100");
//或者
Toolkit.getLocText("Plugin-Demo_Hello_World");
Toolkit.getLocText("Plugin-Demo_Number","100");

//服务端调用
InterProviderFactory.getProvider().getLocText("Plugin-Demo_Hello_World");
InterProviderFactory.getProvider().getLocText("Plugin-Demo_Number","100");

//前端报表预览调用
FR.i18nText("Plugin-Demo_Hello_World");
FR.i18nText("Plugin-Demo_Number","100");

//前端决策平台或仪表板调用
BI.i18nText("Plugin-Demo_Hello_World");
BI.i18nText("Plugin-Demo_Number","100");

注:国际化定义中,可以通过 {} 进行动态拼接

常用的国际化列表为 

...

八、常用链接

demo地址:demo-locale-finderWebUtils工具类是帆软产品中用于读取请求信息的标准工具类,其中包含了参数的获取。WebUtils经由NetworkHelper读取插件中申明的RequestParameterHandler实例提取相应的参数信息,如果没有插件注册,则默认会使用DefaultRequestParameterHandler读取参数。

七、特殊限制说明

为了具备良好的兼容性,通常在开发时,开发者不需要继承AbstractRequestParameterHandler而应该选择继承DefaultRequestParameterHandler,按照适配器的方式开发,仅仅对需要实际做调整的参数信息处理方法进行重写即可。【点击看示例】

因为这个接口存在,也要求开发者在编写任何接口代码时,需要读取请求的相关信息,都通过WebUtils或finekit中的相关kit方法进行读取,已保证良好的兼容性。

八、常用链接

demo地址:demo-request-parameter-handler

com.fr.web.utils.WebUtils

九、开源案例

免责声明:所有文档中的开源示例,均为开发者自行开发并提供。仅用于参考和学习使用,开发者和官方均无义务对开源案例所涉及的所有成果进行教学和指导。若作为商用一切后果责任由使用者自行承担。

...