Saiku/Mondrian 国际化

简介

Mondrian提供了国际化支持,Saiku只需要把参数传递给Mondirian即可。

 

配置步骤

1、修改mondrian.properties文件

mondrian.rolap.localePropFile=locale

 

2、在WEB-INF/classes添加locale_zh_CN.properties

test.dimension.date.caption=日期
test.dimension.date.allMemberCaption=全部 
test.dimension.date.allLevelName=全部 
test.dimension.date.year.caption=年
test.dimension.date.quarter.caption=季度
test.dimension.date.month.caption=月份
test.dimension.date.day.caption=日
test.cube.test.measure.member_count=会员数量
test.cube.test.measure.order_count=订单数量

这里的中文是unicode编码

3、在schema文件里面引用,用%{属性名}

<Dimension name="date" caption="%{test.dimension.date.caption}">
  <Hierarchy hasAll="true" primaryKey="dateKey" allLevelName="%{test.dimension.date.allLevelName}">
    <View alias="vDate">
      <SQL><![CDATA[select * from DimDate where dateKey>=20120101 and dateKey<curdate() ]]></SQL>
    </View>
    <Level name="year" column="year" uniqueMembers="true" caption="%{test.dimension.date.year.caption}" />
    <Level name="quarter" column="quarter" uniqueMembers="true" caption="%{test.dimension.date.quarter.caption}" />
    <Level name="month" column="month" uniqueMembers="true" caption="%{test.dimension.date.month.caption}" />
    <Level name="date" column="dateKey" uniqueMembers="true" caption="%{test.dimension.date.day.caption}" />
  </Hierarchy>
</Dimension>

<Cube name="test">
  <Table schema="test" name="test" />

  <DimensionUsage name="date" source="date" foreignKey="allotDate" />
  <DimensionUsage name="salary" source="salary" foreignKey="salary" />

  <Measure name="member count" column="memberId" aggregator="distinct-count" caption="%{test.cube.test.measure.member_count}" />
  <Measure name="order count" column="memberId" aggregator="count" caption="%{test.cube.test.measure.order_count}" />
</Cube>

4、添加数据源

type=OLAP
name=test
driver=mondrian.olap4j.MondrianOlap4jDriver
Locale=zh_CN
DynamicSchemaProcessor=mondrian.i18n.LocalizingDynamicSchemaProcessor
location=jdbc:mondrian:Jdbc=jdbc:mysql://10.10.10.128:3306/zhenai_warehouse;Catalog=res:test/test.xml;
username=etl
password=etl@123456

5、修改类org.saiku.datasources.connection.SaikuOlapConnection,并更新到saiku-service-2.5.jar中

Class.forName(driver);
OlapConnection connection;
//connection = (OlapConnection) DriverManager.getConnection(url, username, password);
connection = (OlapConnection) DriverManager.getConnection(url, props);
final OlapWrapper wrapper = connection;
OlapConnection tmpolapConnection = (OlapConnection) wrapper.unwrap(OlapConnection.class);

 

6、效果见附件

 

猜你喜欢

转载自customme.iteye.com/blog/2064057