DevExtreme DataGrid Angular 国际化 - 带源码

栏目: JavaScript · 发布时间: 4年前

内容简介:打开新的安装完毕后在目录

DevExtreme 实现国际化的步骤

创建项目

  • 根据官方的 Getting Started 的网址 https://js.devexpress.com/Documentation/Guide/Angular_Components/Getting_Started/Create_a_DevExtreme_Application/ 创建项目
  • cmd 中使用命令 npx -p devextreme-cli devextreme new angular-app i18n 创建项目,该项目名称是 i18n
  • 创建成功后使用命令 cd i18n ,切换路径到项目内,然后使用 ng serve --o ,运行项目并且打开浏览器
    此时打开浏览器后应该能看到 DevExtreme 的标准项目页面,如下:
    DevExtreme DataGrid Angular 国际化 - 带源码

下载安装国际化包

打开新的 CMD 路径切换到项目的根目录下,使用命令 npm install --save-dev devextreme-cldr-data globalize 安装国际化包

安装完毕后在目录 D:\Java\Document\Angular\Demo\AAA.DevExtreme\i18n\node_modules 下会多出 globalize 等几个对应的用于国际化的文件夹

制作测试页面显示默认的英文

  • 通过 DevExtreme CLI 创建项目时生成的模板文件 src/pages/display-data/display-data.component.html ,中为表格追加属性

    <dxo-editing 
            mode="row"
            [allowUpdating]="true"
            [allowDeleting]="true"
            [allowAdding]="true">
        </dxo-editing>

    最终形成本模板文件的所有代码如下:

    <h2 class="content-block">Display Data</h2>
    
    <dx-data-grid class="dx-card wide-card"
        [dataSource]="dataSource"
        [showBorders]="false"
        [focusedRowEnabled]="true"
        [focusedRowIndex]="0"
        [columnAutoWidth]="true"
        [columnHidingEnabled]="true">
    
        <dxo-editing 
            mode="row"
            [allowUpdating]="true"
            [allowDeleting]="true"
            [allowAdding]="true">
        </dxo-editing>
    
        <dxo-paging [pageSize]="10"></dxo-paging>
        <dxo-pager [showPageSizeSelector]="true" [showInfo]="true"></dxo-pager>
        <dxo-filter-row [visible]="true"></dxo-filter-row>
    
        <dxi-column
            dataField="Task_ID"
            [width]="90"
            [hidingPriority]="2">
        </dxi-column>
        <dxi-column
            dataField="Task_Subject"
            [width]="190"
            caption="Subject"
            [hidingPriority]="8">
        </dxi-column>
        <dxi-column
            dataField="Task_Status"
            caption="Status"
            [hidingPriority]="6">
        </dxi-column>
        <dxi-column
            dataField="Task_Priority"
            caption="Priority"
            [hidingPriority]="5">
            <dxo-lookup
                [dataSource]="priority"
                valueExpr="value"
                displayExpr="name">
            </dxo-lookup>
        </dxi-column>
        <dxi-column
            dataField="ResponsibleEmployee.Employee_Full_Name"
            caption="Assigned To"
            [allowSorting]="false"
            [hidingPriority]="7">
        </dxi-column>
        <dxi-column
            dataField="Task_Start_Date"
            caption="Start Date"
            dataType="date"
            [hidingPriority]="3">
        </dxi-column>
        <dxi-column
            dataField="Task_Due_Date"
            caption="Due Date"
            dataType="date"
            [hidingPriority]="4">
        </dxi-column>
        <dxi-column
            dataField="Task_Priority"
            caption="Priority"
            [hidingPriority]="1">
        </dxi-column>
        <dxi-column
            dataField="Task_Completion"
            caption="Completion"
            [hidingPriority]="0">
        </dxi-column>
    </dx-data-grid>

    编译重新运行项目能看到表格右边有删除按钮了,点击后弹出的提示是英文的,如下:

    DevExtreme DataGrid Angular 国际化 - 带源码

注册并且调用国际化方法,显示效果

  • 在文件 tsconfig.json 中注册 CLDR ,在项目 compilerOptions 下的代码如下:

    "paths": {
          // DevExtreme 国际化
          "globalize": [
            "node_modules/globalize/dist/globalize"
          ],
          "globalize/*": [
            "node_modules/globalize/dist/globalize/*"
          ],
          "cldr": [
            "node_modules/cldrjs/dist/cldr"
          ],
          "cldr/*": [
            "node_modules/cldrjs/dist/cldr/*"
          ],
          // DevExtreme 国际化 结束
    
          "jszip": [
            "node_modules/jszip/dist/jszip.min.js"
          ]
        }

    最后一个项目 jszip 在创建项目时自动建立的,所以实际是黏贴上面的 DevExtreme 国际化 之间的代码

  • 在目录 src 创建文件 typings.d.ts ,代码如下:

    declare module 'globalize' {
        const value: any;
        export default value;
    }
     
    declare module 'devextreme/localization/messages/*' {
        const value: any;
        export default value;
    }
     
    declare module 'devextreme-cldr-data/*' {
        const value: any;
        export default value;
    }
  • angular.json 的两个 scripts 项目下黏贴下面的代码:

    "./node_modules/cldrjs/dist/cldr.js",
                  "./node_modules/globalize/dist/globalize.js"
  • 将下面代码贴到 app.module.ts 中的所有 import@NgModule

    // 下面开始是国际化代码
    import "devextreme/localization/globalize/number";
    import "devextreme/localization/globalize/date";
    import "devextreme/localization/globalize/currency";
    import "devextreme/localization/globalize/message";
     
    // Dictionaries for German and Russian languages
    // import deMessages from "devextreme/localization/messages/de.json!json";
    // import ruMessages from "devextreme/localization/messages/ru.json!json";
     
    // Common and language-specific CLDR JSONs
    // 在 2019年6月22日 09:38:24 测试这里代码要注释掉,使用下面的方式导入对应语言的json
    // import supplemental from "devextreme-cldr-data/supplemental.json!json";
    // import deCldrData from "devextreme-cldr-data/de.json!json";
    // import ruCldrData from "devextreme-cldr-data/ru.json!json";
    
     
    // In projects created with Angular CLI 6+
    import deMessages from "devextreme/localization/messages/de.json";
    import ruMessages from "devextreme/localization/messages/ru.json";
    import zhMessages from "devextreme/localization/messages/zh.json";
    import supplemental from "devextreme-cldr-data/supplemental.json";
    import deCldrData from "devextreme-cldr-data/de.json";
    import ruCldrData from "devextreme-cldr-data/ru.json";
    import zhCldrData from "devextreme-cldr-data/zh.json";
     
    import Globalize from "globalize";
     
    Globalize.load(
        supplemental, deCldrData, ruCldrData,zhCldrData
    );
     
    Globalize.loadMessages(deMessages);
    Globalize.loadMessages(ruMessages);
    Globalize.loadMessages(zhMessages);
     
    Globalize.locale(navigator.language);
    // 国际化代码结束
  • 上面修改的配置中要求结束当前运行的项目,重新使用 ng serve --o 运行后正常,效果如下:
    DevExtreme DataGrid Angular 国际化 - 带源码

在线演示

https://stackblitz.com/github/chanchaw/DevExtremeGlobalize


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

机器消灭秘密

机器消灭秘密

安迪•格林伯格 (Andy Greenberg) / 王崧、王涛、唐禾 / 重庆出版社 / 2017-8-10 / 49.8

《机器消灭秘密》一书中,格林伯格深入研究并生动再现了那些拥有全能技术的网络安全魔术师,他们将任何企图染指个人隐私的所谓国家机密的保密性打得粉碎。这本精心组织的著作是对此题材感兴趣的读者的必读之书,即便现在你可能不感兴趣,将来也极有可能希望了解这些内容,因为任何人都会不可避免地置身其中。无论你是初涉电脑屏幕之后的虚拟战场的新生,还是经验丰富的维基解密观察家,本书都是不可多得的上乘之作,你总会在其中发......一起来看看 《机器消灭秘密》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具