【仅供内部供应商使用,不提供对外解答和培训】
【仅供内部供应商使用,不提供对外解答和培训】
无
国际化,是让开发者开发的功能能够同时适应多种语言环境的一种途径。帆软产品面向着各行各业、各个地域的用户。不同的用户语言习惯各不相同,通过国际化接口可以使得开发者开发的插件能够满足各种语言环境的需要。
一般主要在 前端界面展示( 通过JS控制)、日志、设计器界面展示 这3个场景中使用。
package com.fr.stable.fun; /** * @author richie * @date 2015-07-09 * @since 8.0 * 插件中的国际化文件寻找接口 */ public interface LocaleFinder extends Level { String MARK_STRING = "LocaleFinder"; int CURRENT_LEVEL = 1; /** * 查找国际化文件的路径 * * @return 国际化文件的路径 */ String find(); }
产品线 | 版本 | 支持情况 | 备注 |
---|---|---|---|
FR | 8.0 | 支持 | |
FR | 9.0 | 支持 | |
FR | 10.0 | 支持 | |
BI | 3.6 | 支持 | |
BI | 4.0 | 支持 | |
BI | 5.1 | 支持 | |
BI | 5.1.2 | 支持 | |
BI | 5.1.3 | 支持 |
<extra-core> <LocaleFinder 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 表示的是中文国际化文件。
下面看一个实例:
Plugin-Demo_Hello_World=Hello World Plugin-Demo_Number=number:{}
这是一个默认定义,当用户使用的语言环境没有对应的国际化定义时,则以默认的实现生效。
Plugin-Demo_Hello_World=你好世界 Plugin-Demo_Number=数字:{}
Plugin-Demo_Hello_World=Hello World Plugin-Demo_Number=number:{}
上面这组国际化定义,声明了对简中和英文环境的支持
实际调用时:有以下几种调用方式
//设计器调用 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");
注:国际化定义中,可以通过 {} 进行动态拼接
常用的国际化列表为
语言 | 国际化key |
---|---|
简中 | zh 或 zh_CN |
繁中 | zh_TW |
英文 | en 或 en_US |
日文 | ja_JP |
韩文 | ko_KR |
demo地址:demo-locale-finder
免责声明:所有文档中的开源示例,均为开发者自行开发并提供。仅用于参考和学习使用,开发者和官方均无义务对开源案例所涉及的所有成果进行教学和指导。禁止用于任何商业用途,若作为商用一切后果责任由使用者自行承担。