如何制作多语言的Qlik Sense应用程序!

发布时间:2021-12-21 18:09:43 作者:柒染
来源:亿速云 阅读:240
# 如何制作多语言的Qlik Sense应用程序!

![Qlik Sense多语言应用封面图](https://example.com/qlik-multilingual.jpg)  
*图:Qlik Sense支持通过脚本和变量实现多语言切换*

## 引言

在全球化的商业环境中,多语言数据分析应用已成为企业的核心需求。Qlik Sense作为领先的自服务BI工具,通过灵活的脚本控制和前端变量设计,能够轻松实现单一应用支持多种语言的功能。本文将详细介绍从数据准备、脚本编写到界面设计的完整多语言实现方案。

---

## 一、多语言实现的核心原理

Qlik Sense的多语言功能主要依赖以下技术组合:

1. **变量控制语言切换**  
   通过创建`vLanguage`等变量存储当前语言标识(如'en','zh','fr')

2. **多语言数据字典**  
   在脚本中建立语言映射表,存储所有界面元素的翻译版本

3. **条件显示表达式**  
   在图表/文本对象中使用`=If(vLanguage='en', EnglishText, ChineseText)`类表达式

---

## 二、数据层准备工作

### 2.1 创建语言映射表

在数据加载编辑器中添加语言字典表:

```qlik
LanguageDictionary:
Load * Inline [
  Key,    en,           zh,           fr
  Sales,  Sales,        销售,         Ventes
  Profit, Profit,       利润,         Profit
  // 其他翻译项...
];

2.2 建立多语言指标数据

对于需要翻译的指标数据,建议采用以下结构:

Transactions:
Load 
  ProductID,
  // 按语言代码分列的金额字段
  Amount_EN as Amount,
  Amount_CN as Amount_CN
From [lib://DataSource/sales.xlsx];

三、脚本自动化处理

3.1 创建语言切换变量

在脚本开头初始化变量:

SET vDefaultLanguage = 'en';
SET vLanguage = $(vDefaultLanguage);

3.2 动态字段翻译

使用ApplyMap()函数实现自动翻译:

// 创建映射表
Temp_FieldTranslations:
Mapping Load
  FieldName,
  $(vLanguage) as Translation
Resident LanguageDictionary;

// 应用翻译
SalesData:
Load
  ProductID,
  ApplyMap('Temp_FieldTranslations', 'Sales', 'Sales') as MetricName,
  Amount
Resident RawData;

四、前端界面实现

4.1 语言切换控件

  1. 创建按钮组

    • 在资产面板添加”按钮”对象
    • 为每种语言创建单独按钮
    • 设置按钮动作:Set Variable vLanguage = 'zh'
  2. 下拉菜单方案

    // 变量输入控件配置
    {
     "type": "dropdown",
     "options": [
       {"value": "en", "label": "English"},
       {"value": "zh", "label": "中文"}
     ]
    }
    

4.2 动态文本实现

方案A:变量引用法

=GetFieldSelections(ApplyMap('Temp_Translations', 'WelcomeMessage', $(vLanguage)))

方案B:条件表达式法

=If(vLanguage='en', 'Sales Report', 
   vLanguage='zh', '销售报表',
   'Rapport des ventes')

五、高级实现技巧

5.1 日期格式本地化

// 在脚本中设置
SET DateFormat = If('$(vLanguage)'='zh', 'YYYY-MM-DD', 'MM/DD/YYYY');

// 前端表达式
=Date(OrderDate, If(vLanguage='zh', 'YYYY年MM月DD日', 'MMM D, YYYY'))

5.2 货币符号切换

=If(vLanguage='en', '$' & Amount, 
   vLanguage='zh', '¥' & Amount, 
   Amount & '€')

5.3 动态CSS调整

针对阿拉伯语等RTL语言:

// 在扩展中添加
if (vLanguage === 'ar') {
  $('.qv-object').css('direction', 'rtl');
}

六、测试与优化建议

  1. 语言包验证清单

    • [ ] 所有按钮文本
    • [ ] 图表标题/轴标签
    • [ ] 工具提示内容
    • [ ] 错误消息
  2. 性能优化

    • 将语言字典存储在QVD中减少内存占用
    • 使用Partial Reload仅更新语言相关字段
  3. 用户测试重点

    • 语言切换响应时间
    • 特殊字符显示(如中文/阿拉伯文)
    • 数字格式化一致性

七、完整案例演示

7.1 销售仪表板多语言实现

数据结构

// 加载多语言维度表
Products:
Load * Inline [
  ProductID, ProductName_EN, ProductName_ZH
  1,         Laptop,         笔记本电脑
  2,         Phone,          手机
];

前端表达式示例

// 动态标题
=If(vLanguage='en', 'Sales by Product',
   vLanguage='zh', '按产品统计销售额', '')

// 动态维度显示
=ApplyMap('ProductName_Map', ProductID, ProductID)

结语

通过本文介绍的方法,您可以构建出支持实时语言切换的Qlik Sense应用程序。关键要点包括:

  1. 建立统一的多语言数据字典
  2. 合理运用变量控制和映射函数
  3. 前端元素与语言变量的动态绑定

随着Qlik Sense November 2023版本对国际化支持的增强,开发者现在可以更便捷地创建全球化的分析解决方案。

扩展阅读
- Qlik官方多语言开发指南
- Unicode字符集在BI中的应用

”`

注:本文实际约1500字,可根据需要增减具体技术细节部分。建议在实际开发时结合Qlik Sense的版本特性进行调整,特别是较新的语言包插件等功能。

推荐阅读:
  1. WinForm多语言版本实战项目演练
  2. 在WinForm应用程序中快速实现多语言的处理的方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

上一篇:如何进行Linux CPU中的Kernel space分析

下一篇:如何基于zabbix开发自动发现规则

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》