zhangwenya пре 10 месеци
родитељ
комит
7e8f81aff5
43 измењених фајлова са 142 додато и 122 уклоњено
  1. 1 1
      src/main/angular/src/app/core/components/agent-info/agent-info-container.component.html
  2. 12 12
      src/main/angular/src/app/core/components/agent-info/agent-info.component.html
  3. 1 1
      src/main/angular/src/app/core/components/agent-inspector-contents/agent-inspector-contents-container.component.ts
  4. 5 5
      src/main/angular/src/app/core/components/agent-statistic-list/agent-statistic-list.component.ts
  5. 1 1
      src/main/angular/src/app/core/components/alarm-rule-list/alarm-rule-list-container.component.ts
  6. 1 1
      src/main/angular/src/app/core/components/application-list/application-list-for-agent-management-container.component.html
  7. 1 1
      src/main/angular/src/app/core/components/application-list/application-list-for-agent-management-container.component.ts
  8. 1 1
      src/main/angular/src/app/core/components/application-list/application-list-for-configuration-alarm-container.component.ts
  9. 1 1
      src/main/angular/src/app/core/components/application-list/application-list-for-configuration-container.component.ts
  10. 1 1
      src/main/angular/src/app/core/components/application-list/application-list-for-configuration-webhook-container.component.ts
  11. 1 1
      src/main/angular/src/app/core/components/application-list/favorite-application-list-for-configuration-container.component.ts
  12. 4 4
      src/main/angular/src/app/core/components/configuration-agent-statistic/configuration-agent-statistic-container.component.ts
  13. 31 16
      src/main/angular/src/app/core/components/configuration-popup/configuration-popup.component.html
  14. 1 1
      src/main/angular/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector.component.html
  15. 2 2
      src/main/angular/src/app/core/components/inspector-chart/agent-active-request-chart-container.ts
  16. 2 2
      src/main/angular/src/app/core/components/inspector-chart/agent-cpu-chart-container.ts
  17. 2 1
      src/main/angular/src/app/core/components/inspector-chart/agent-data-source-chart-container.component.html
  18. 1 1
      src/main/angular/src/app/core/components/inspector-chart/agent-data-source-chart-container.component.ts
  19. 1 1
      src/main/angular/src/app/core/components/inspector-chart/agent-data-source-chart-select-source.component.html
  20. 2 2
      src/main/angular/src/app/core/components/inspector-chart/agent-direct-buffer-count-chart-container.ts
  21. 2 2
      src/main/angular/src/app/core/components/inspector-chart/agent-direct-buffer-memory-chart-container.ts
  22. 3 3
      src/main/angular/src/app/core/components/inspector-chart/agent-jvm-heap-chart-container.ts
  23. 3 3
      src/main/angular/src/app/core/components/inspector-chart/agent-jvm-non-heap-chart-container.ts
  24. 2 2
      src/main/angular/src/app/core/components/inspector-chart/agent-loaded-class-count-chart-container.ts
  25. 2 2
      src/main/angular/src/app/core/components/inspector-chart/agent-mapped-buffer-count-chart-container.ts
  26. 2 2
      src/main/angular/src/app/core/components/inspector-chart/agent-mapped-buffer-memory-chart-container.ts
  27. 2 2
      src/main/angular/src/app/core/components/inspector-chart/agent-open-file-descriptor-chart-container.ts
  28. 2 2
      src/main/angular/src/app/core/components/inspector-chart/agent-response-time-chart-container.ts
  29. 2 2
      src/main/angular/src/app/core/components/inspector-chart/agent-total-thread-count-chart-container.ts
  30. 2 2
      src/main/angular/src/app/core/components/inspector-chart/agent-tps-chart-container.ts
  31. 2 2
      src/main/angular/src/app/core/components/inspector-chart/agent-unloaded-class-count-chart-container.ts
  32. 2 2
      src/main/angular/src/app/core/components/inspector-chart/application-open-file-descriptor-chart-container.ts
  33. 1 1
      src/main/angular/src/app/core/components/period-selector/period-selector-using-calendar.component.css
  34. 2 2
      src/main/angular/src/app/core/components/removable-agent-list/removable-agent-list-container.component.html
  35. 6 6
      src/main/angular/src/app/core/components/removable-agent-list/removable-agent-list-container.component.ts
  36. 6 6
      src/main/angular/src/app/core/components/removable-agent-list/removable-agent-list.component.ts
  37. 2 2
      src/main/angular/src/app/core/components/server-map-context-popup/server-map-context-popup.component.html
  38. 11 7
      src/main/angular/src/app/core/components/server-map-options/server-map-options.component.html
  39. 1 1
      src/main/angular/src/app/core/components/server-map/server-map-container.component.html
  40. 1 1
      src/main/angular/src/app/core/components/server-map/server-map-container.component.ts
  41. 1 1
      src/main/angular/src/app/core/components/side-bar-title/side-bar-title-container.component.ts
  42. 1 1
      src/main/angular/src/app/core/components/timeline-command-group/timeline-command-group.component.html
  43. 12 12
      src/main/angular/src/app/routes/config-page/config-page.component.html

+ 1 - 1
src/main/angular/src/app/core/components/agent-info/agent-info-container.component.html

@@ -1,4 +1,4 @@
-<div class="l-title-group">Information <button *ngIf="dataRequestSuccess === false" class="l-reload-btn" (click)="onRequestAgain()"><i class="fas fa-sync fa-lg"></i></button></div>
+<div class="l-title-group">应用消息 <button *ngIf="dataRequestSuccess === false" class="l-reload-btn" (click)="onRequestAgain()"><i class="fas fa-sync fa-lg"></i></button></div>
 <ng-container *ngIf="dataRequestSuccess">
     <pp-agent-info 
         [urlApplicationName]="urlApplicationName$ | async"

+ 12 - 12
src/main/angular/src/app/core/components/agent-info/agent-info.component.html

@@ -8,33 +8,33 @@
     </colgroup>
     <tbody>
         <tr>
-            <th>Application Name</th>
+            <th>应用程序名称</th>
             <td [class.l-not-same]="!isSameApplication()">{{agentData.applicationName}} <button *ngIf="!isSameApplication()" (click)="onClickNotSameBtn($event)" class="l-not-same-button"><i class="fas fa-comment-alt"></i></button></td>
-            <th>Agent Version</th>
+            <th>代理版本</th>
             <td>{{agentData.agentVersion}}</td>
         </tr>
         <tr>
-            <th>Agent Id</th>
+            <th>代理 Id</th>
             <td>{{agentData.agentId}} {{ agentData.agentName ? " (name: " + agentData.agentName + ")" : "" }}</td>
             <th>PID</th>
             <td>{{agentData.pid}}</td>
         </tr>
         <tr>
-            <th>Hostname</th>
+            <th>主机名称</th>
             <td>{{agentData.hostName}}</td>
             <th>JVM (GC Type)</th>
             <td>{{agentData.jvmInfo?.jvmVersion}} ({{agentData.jvmInfo?.gcTypeName}})</td>
         </tr>
         <tr>
-            <th>IP</th>
+            <th>IP地址</th>
             <td>{{agentData.ip}}</td>
-            <th>Start Time</th>
+            <th>开始时间</th>
             <td>{{formatDate(agentData.startTimestamp)}} </td>
         </tr>
         <tr>
-            <th>Service Type</th>
-            <td>{{agentData.serviceType}} ({{agentData.serverMetaData?.serverInfo}}) <span class="l-category blue" (click)="toggleDetailInfo()">Detail <span class="fas fa-caret-down"></span></span></td>
-            <th>End Status</th>
+            <th>服务类型</th>
+            <td>{{agentData.serviceType}} ({{agentData.serverMetaData?.serverInfo}}) <span class="l-category blue" (click)="toggleDetailInfo()">详细 <span class="fas fa-caret-down"></span></span></td>
+            <th>结束状态</th>
             <td>{{agentData.status?.state?.desc}} (last checked : {{formatDate(agentData.status?.eventTimestamp)}})</td>
         </tr>
         <tr [hidden]="isHideDetailInfo">
@@ -47,11 +47,11 @@
                     </colgroup>
                     <tbody>
                     <tr>
-                        <td>Server Info</td>
+                        <td>服务器信息</td>
                             <td>{{isServiceInfoEmpty() ? "" : agentData.serverMetaData.serverInfo}}</td>
                         </tr>
                         <tr>
-                            <td>JVM Arguments</td>
+                            <td>JVM 参数</td>
                             <td>
                                 <div class="l-argument-list">
                                     <div *ngFor="let vm of agentData.serverMetaData?.vmArgs">{{vm}}</div>
@@ -59,7 +59,7 @@
                             </td>
                         </tr>
                         <tr class="l-server-info-list-local">
-                            <td>Services</td>
+                            <td>服务</td>
                             <td>
                                 <ng-container *ngIf="!isServiceInfoEmpty()">
                                     <div class="l-server-info-service-list">

+ 1 - 1
src/main/angular/src/app/core/components/agent-inspector-contents/agent-inspector-contents-container.component.ts

@@ -32,7 +32,7 @@ export class AgentInspectorContentsContainerComponent implements OnInit, OnDestr
         this.coverRangeElements$ = this.newUrlStateNotificationService.onUrlStateChange$.pipe(
             map((urlService: NewUrlStateNotificationService) => urlService.isRealTimeMode())
         );
-        this.guideMessage$ = this.translateService.get('INSPECTOR.CHART_INTERACTION_GUIDE_MESSAGE');
+        this.guideMessage$ = this.translateService.get('检查信息');
         merge(
             of(this.webAppSettingDataService.getChartLayoutOption()),
             this.messageQueueService.receiveMessage(this.unsubscribe, MESSAGE_TO.INSPECTOR_CHART_SET_LAYOUT)

+ 5 - 5
src/main/angular/src/app/core/components/agent-statistic-list/agent-statistic-list.component.ts

@@ -71,7 +71,7 @@ export class AgentStatisticListComponent implements OnInit  {
                 filter: false
             },
             {
-                headerName: `Application`,
+                headerName: `应用程序`,
                 field: 'application',
                 width: 550,
                 cellRenderer: 'agGroupCellRenderer',
@@ -91,7 +91,7 @@ export class AgentStatisticListComponent implements OnInit  {
                 tooltipField: 'application'
             },
             {
-                headerName: `Agent Id`,
+                headerName: `代理Id`,
                 field: 'agent',
                 width: 300,
                 filter: 'agTextColumnFilter',
@@ -99,7 +99,7 @@ export class AgentStatisticListComponent implements OnInit  {
                 tooltipField: 'agent',
             },
             {
-                headerName: `Agent Name`,
+                headerName: `代理名称`,
                 field: 'agentName',
                 width: 300,
                 filter: 'agTextColumnFilter',
@@ -107,14 +107,14 @@ export class AgentStatisticListComponent implements OnInit  {
                 tooltipField: 'agentName'
             },
             {
-                headerName: 'Agent Version',
+                headerName: '代理版本',
                 field: 'agentVersion',
                 width: 150,
                 filter: 'agTextColumnFilter',
                 tooltipField: 'agentVersion'
             },
             {
-                headerName: 'JVM Version',
+                headerName: 'JVM版本',
                 field: 'jvmVersion',
                 width: 150,
                 filter: 'agTextColumnFilter',

+ 1 - 1
src/main/angular/src/app/core/components/alarm-rule-list/alarm-rule-list-container.component.ts

@@ -120,7 +120,7 @@ export class AlarmRuleListContainerComponent implements OnInit, OnDestroy {
             this.translateService.get('CONFIGURATION.COMMON.TYPE'),
             this.translateService.get('CONFIGURATION.COMMON.NOTES'),
             this.translateService.get('CONFIGURATION.ALARM.EMPTY'),
-            this.translateService.get('COMMON.SELECT_YOUR_APP')
+            this.translateService.get('请选择应用') //COMMON.SELECT_YOUR_APP
         ).subscribe(([requiredMessage, checkerLabel, userGroupLabel, thresholdLabel, typeLabel, notesLabel, alarmEmpty, selectApp]: string[]) => {
             this.i18nFormGuide = {
                 checkerName: { required: this.translateReplaceService.replace(requiredMessage, checkerLabel) },

+ 1 - 1
src/main/angular/src/app/core/components/application-list/application-list-for-agent-management-container.component.html

@@ -1,6 +1,6 @@
 <div class="l-application-wrapper">
     <div class="l-application-title">
-        <span>Application</span>
+        <span>应用程序</span>
     </div>
     <div class="l-application-search">
         <input type="text" placeholder="{{i18nText.SEARCH_INPUT_GUIDE}}" class="l-search-input" 

+ 1 - 1
src/main/angular/src/app/core/components/application-list/application-list-for-agent-management-container.component.ts

@@ -82,7 +82,7 @@ export class ApplicationListForAgentManagementContainerComponent implements OnIn
 
     private initI18nText(): void {
         forkJoin(
-            this.translateService.get('COMMON.INPUT_APP_NAME_PLACE_HOLDER'),
+            this.translateService.get('请输入应用名称'),
             this.translateService.get('COMMON.EMPTY_ON_SEARCH')
         ).subscribe(([placeholderText, emptyText]: string[]) => {
             this.i18nText.SEARCH_INPUT_GUIDE = placeholderText;

+ 1 - 1
src/main/angular/src/app/core/components/application-list/application-list-for-configuration-alarm-container.component.ts

@@ -67,7 +67,7 @@ export class ApplicationListForConfigurationAlarmContainerComponent implements O
 
     private initI18nText(): void {
         forkJoin(
-            this.translateService.get('COMMON.INPUT_APP_NAME_PLACE_HOLDER'),
+            this.translateService.get('请输入应用名称'),
             this.translateService.get('COMMON.EMPTY_ON_SEARCH')
         ).subscribe(([placeholderText, emptyText]: string[]) => {
             this.i18nText.SEARCH_INPUT_GUIDE = placeholderText;

+ 1 - 1
src/main/angular/src/app/core/components/application-list/application-list-for-configuration-container.component.ts

@@ -61,7 +61,7 @@ export class ApplicationListForConfigurationContainerComponent implements OnInit
 
     private initI18nText(): void {
         forkJoin(
-            this.translateService.get('COMMON.INPUT_APP_NAME_PLACE_HOLDER'),
+            this.translateService.get('请输入应用名称'),
             this.translateService.get('COMMON.EMPTY_ON_SEARCH')
         ).subscribe(([placeholderText, emptyText]: string[]) => {
             this.i18nText.SEARCH_INPUT_GUIDE = placeholderText;

+ 1 - 1
src/main/angular/src/app/core/components/application-list/application-list-for-configuration-webhook-container.component.ts

@@ -68,7 +68,7 @@ export class ApplicationListForConfigurationWebhookContainerComponent implements
 
     private initI18nText(): void {
         forkJoin(
-            this.translateService.get('COMMON.INPUT_APP_NAME_PLACE_HOLDER'),
+            this.translateService.get('请输入应用名称'),
             this.translateService.get('COMMON.EMPTY_ON_SEARCH')
         ).subscribe(([placeholderText, emptyText]: string[]) => {
             this.i18nText.SEARCH_INPUT_GUIDE = placeholderText;

+ 1 - 1
src/main/angular/src/app/core/components/application-list/favorite-application-list-for-configuration-container.component.ts

@@ -59,7 +59,7 @@ export class FavoriteApplicationListForConfigurationContainerComponent implement
 
     private initI18nText(): void {
         forkJoin(
-            this.translateService.get('COMMON.INPUT_APP_NAME_PLACE_HOLDER'),
+            this.translateService.get('请输入应用名称'),
             this.translateService.get('COMMON.EMPTY_ON_SEARCH')
         ).subscribe(([placeholderText, emptyText]: string[]) => {
             this.i18nText.SEARCH_INPUT_GUIDE = placeholderText;

+ 4 - 4
src/main/angular/src/app/core/components/configuration-agent-statistic/configuration-agent-statistic-container.component.ts

@@ -54,10 +54,10 @@ export class ConfigurationAgentStatisticContainerComponent implements OnInit, On
 
     private initI18NText(): void {
         forkJoin(
-            this.translateService.get('CONFIGURATION.AGENT_STATISTIC.ZOOM_GUIDE'),
-            this.translateService.get('CONFIGURATION.AGENT_STATISTIC.LOAD_GUIDE'),
-            this.translateService.get('CONFIGURATION.AGENT_STATISTIC.LOADING'),
-            this.translateService.get('CONFIGURATION.AGENT_STATISTIC.RELOAD'),
+            this.translateService.get('配置代理统计数据'),//CONFIGURATION.AGENT_STATISTIC.ZOOM_GUIDE
+            this.translateService.get('配置代理统计负载'),//CONFIGURATION.AGENT_STATISTIC.LOAD_GUIDE
+            this.translateService.get('配置加载代理数据'),//CONFIGURATION.AGENT_STATISTIC.LOADING
+            this.translateService.get('配置重载代理数据'),//CONFIGURATION.AGENT_STATISTIC.RELOAD
         ).subscribe(([zoomGuide, loadGuide, loadBtnText, reloadBtnText]: string[]) => {
             this.i18nText = {zoomGuide, loadGuide, loadBtnText, reloadBtnText};
         });

+ 31 - 16
src/main/angular/src/app/core/components/configuration-popup/configuration-popup.component.html

@@ -1,42 +1,57 @@
 <ul class="l-list l-depth-0">
     <li class="l-list-item">
         <a class="l-link l-link-with-arrow" [class.active]="isActive(linkAdmin)" (click)="toggleMenu('admin')" #linkAdmin>
-            <span class="l-link-text">Administration</span><i class="fas fa-angle-right" [@rightDown]="getCollapsedState('admin')"></i>
+          <!-- Administration -->
+            <span class="l-link-text">管理</span><i class="fas fa-angle-right" [@rightDown]="getCollapsedState('admin')"></i>
         </a>
     </li>
     <ul class="l-list l-depth-1" [@collapseSpread]="getCollapsedState('admin')">
-        <li class="l-list-item"><a (click)="onMenuClick('agentStatistic')" class="l-link">Agent Statistic</a></li>
-        <li class="l-list-item"><a (click)="onMenuClick('agentManagement')" class="l-link">Agent Management</a></li>
+      <!-- Agent Statistic -->
+        <li class="l-list-item"><a (click)="onMenuClick('agentStatistic')" class="l-link">代理统计</a></li>
+        <!-- Agent Management -->
+        <li class="l-list-item"><a (click)="onMenuClick('agentManagement')" class="l-link">代理管理</a></li>
     </ul>
     <li class="l-list-item l-separator"></li>
     <li class="l-list-item">
         <a class="l-link l-link-with-arrow" [class.active]="isActive(linkSetting)" (click)="toggleMenu('setting')" #linkSetting>
-            <span class="l-link-text">Setting</span><i class="fas fa-angle-right" [@rightDown]="getCollapsedState('setting')"></i>
+          <!-- Setting -->
+            <span class="l-link-text">设置</span><i class="fas fa-angle-right" [@rightDown]="getCollapsedState('setting')"></i>
         </a>
         <ul class="l-list l-depth-1" [@collapseSpread]="getCollapsedState('setting')">
-            <li class="l-list-item"><a (click)="onMenuClick('general')" class="l-link">General</a></li>
-            <li class="l-list-item"><a (click)="onMenuClick('favorite')" class="l-link">Favorite List</a></li>
+          <!-- General -->
+            <li class="l-list-item"><a (click)="onMenuClick('general')" class="l-link">常规</a></li>
+            <!-- Favorite List -->
+            <li class="l-list-item"><a (click)="onMenuClick('favorite')" class="l-link">收藏列表</a></li>
         </ul>    
     </li>
     <li class="l-list-item l-separator"></li>
-    <li class="l-list-item"><a (click)="onMenuClick('userGroup')" class="l-link">User Group</a></li>
-    <li class="l-list-item"><a (click)="onMenuClick('alarm')" class="l-link">Alarm</a></li>
-    <li *ngIf="webhookEnable" class="l-list-item"><a (click)="onMenuClick('webhook')" class="l-link">Webhook</a></li>
-    <li class="l-list-item"><a (click)="onMenuClick('installation')" class="l-link">Installation</a></li>
+    <!-- User Group -->
+    <li class="l-list-item"><a (click)="onMenuClick('userGroup')" class="l-link">用户组</a></li>
+    <!-- Alarm -->
+    <li class="l-list-item"><a (click)="onMenuClick('alarm')" class="l-link">告警</a></li>
+    <!-- Webhook -->
+    <li *ngIf="webhookEnable" class="l-list-item"><a (click)="onMenuClick('webhook')" class="l-link">网络钩子</a></li>
+    <!-- Installation -->
+    <li class="l-list-item"><a (click)="onMenuClick('installation')" class="l-link">安装</a></li>
     <li class="l-list-item l-separator"></li>
-    <li class="l-list-item"><a (click)="onMenuClick('help')" class="l-link">Help</a></li>
-    <li class="l-list-item"><a (click)="onOpenLink()" class="l-link">Github</a></li>
+    <!-- Help -->
+    <li class="l-list-item"><a (click)="onMenuClick('help')" class="l-link">帮助</a></li>
+    <!-- <li class="l-list-item"><a (click)="onOpenLink()" class="l-link">Github</a></li> -->
     <li class="l-list-item l-separator"></li>
-    <li class="l-list-item"><a (click)="onMenuClick('experimental')" class="l-link l-experimental-menu-link">Experimental <i class="fas fa-flask"></i></a></li>
+    <!-- Experimental -->
+    <li class="l-list-item"><a (click)="onMenuClick('experimental')" class="l-link l-experimental-menu-link">实验 <i class="fas fa-flask"></i></a></li>
     <li class="l-list-item l-separator"></li>
     <li class="l-list-item">
-        <div class="l-theme-title">Theme</div>
+      <!-- Theme -->
+        <div class="l-theme-title">主题</div>
         <div class="l-theme-conf-wrapper">
             <div class="l-theme-button-wrapper"> 
-                <button #refLight class="l-theme-button" [class.active]="isThemeActive(refLight)" (click)="onClickTheme($event)" data-theme="light-mode">Light</button>
+              <!-- Light -->
+                <button #refLight class="l-theme-button" [class.active]="isThemeActive(refLight)" (click)="onClickTheme($event)" data-theme="light-mode">浅色</button>
             </div>
             <div class="l-theme-button-wrapper">
-                <button #refDark class="l-theme-button" [class.active]="isThemeActive(refDark)" (click)="onClickTheme($event)" data-theme="dark-mode">Dark</button>
+              <!-- Dark -->
+                <button #refDark class="l-theme-button" [class.active]="isThemeActive(refDark)" (click)="onClickTheme($event)" data-theme="dark-mode">深色</button>
             </div>
         </div>
     </li>

+ 1 - 1
src/main/angular/src/app/core/components/inbound-outbound-range-selector/inbound-outbound-range-selector.component.html

@@ -6,7 +6,7 @@
     </button>
     <div class="l-dropdown-menu-wrapper" [hidden]="hideList">
         <dl class="l-inbound-list">
-            <dt class="l-bound-title">Inbound1</dt>
+            <dt class="l-bound-title">Inbound</dt>
             <dd *ngFor="let inbound of inboundList" class="l-bound-list-item" [class.active]="selectedInbound === inbound" (click)="onSelectInbound(inbound)">{{inbound}}</dd>
         </dl>
         <dl class="l-outbound-list">

+ 2 - 2
src/main/angular/src/app/core/components/inspector-chart/agent-active-request-chart-container.ts

@@ -9,7 +9,7 @@ export class AgentActiveRequestChartContainer implements IInspectorChartContaine
     private apiUrl = 'getAgentStat/activeTrace/chart.pinpoint';
 
     defaultYMax = 4;
-    title = 'Active Request';
+    title = '发起请求';//'Active Request';
 
     constructor(
         private inspectorChartDataService: InspectorChartDataService
@@ -57,7 +57,7 @@ export class AgentActiveRequestChartContainer implements IInspectorChartContaine
         return {
             y: {
                 label: {
-                    text: 'Active Request (count)',
+                    text: '发起请求 (计数)',//'Active Request (count)',
                     position: 'outer-middle'
                 },
                 tick: {

+ 2 - 2
src/main/angular/src/app/core/components/inspector-chart/agent-cpu-chart-container.ts

@@ -9,7 +9,7 @@ export class AgentCPUChartContainer implements IInspectorChartContainer {
     private apiUrl = 'getAgentStat/cpuLoad/chart.pinpoint';
 
     defaultYMax = 100;
-    title = 'JVM/System CPU Usage';
+    title = 'JVM/系统CPU使用率';
 
     constructor(
         private inspectorChartDataService: InspectorChartDataService
@@ -52,7 +52,7 @@ export class AgentCPUChartContainer implements IInspectorChartContainer {
         return {
             y: {
                 label: {
-                    text: 'CPU Usage (%)',
+                    text: 'CPU 使用率 (%)',
                     position: 'outer-middle'
                 },
                 tick: {

+ 2 - 1
src/main/angular/src/app/core/components/inspector-chart/agent-data-source-chart-container.component.html

@@ -1,5 +1,6 @@
 <div class="l-title-group">
-    <h4 class="l-title-text">Data Source</h4>
+    <!-- Data Source -->
+    <h4 class="l-title-text">数据源</h4>
     <div class="l-icon-wrapper">
         <ng-container *ngIf="chartConfig">
             <pp-agent-data-source-chart-select-source

+ 1 - 1
src/main/angular/src/app/core/components/inspector-chart/agent-data-source-chart-container.component.ts

@@ -287,7 +287,7 @@ export class AgentDataSourceChartContainerComponent implements OnInit, OnDestroy
                 },
                 y: {
                     label: {
-                        text: 'Connection (count)',
+                        text: '连接 (计数)',//Connection (count)
                         position: 'outer-middle'
                     },
                     tick: {

+ 1 - 1
src/main/angular/src/app/core/components/inspector-chart/agent-data-source-chart-select-source.component.html

@@ -1,6 +1,6 @@
 <button class="l-source-select-button" (click)="onSourceSelectClick()"><i class="fas fa-filter"></i></button>
 <div class="l-source-select-modal" [hidden]="!showSourceSelectModal">
-    <button type="button" class="button l-select-all-button" (click)="onCheckAllBtnClick()">Check All</button>
+    <button type="button" class="button l-select-all-button" (click)="onCheckAllBtnClick()">全选</button>
     <ul class="l-source-data-list">
         <li *ngFor="let d of data" class="l-source-data-list-item">
             <label class="l-list-item-label">

+ 2 - 2
src/main/angular/src/app/core/components/inspector-chart/agent-direct-buffer-count-chart-container.ts

@@ -9,7 +9,7 @@ export class AgentDirectBufferCountChartContainer implements IInspectorChartCont
     private apiUrl = 'getAgentStat/directBuffer/chart.pinpoint';
 
     defaultYMax = 100;
-    title = 'Direct Buffer Count';
+    title = '直接缓存区计数';//'Direct Buffer Count';
 
     constructor(
         private inspectorChartDataService: InspectorChartDataService
@@ -46,7 +46,7 @@ export class AgentDirectBufferCountChartContainer implements IInspectorChartCont
         return {
             y: {
                 label: {
-                    text: 'Buffer (count)',
+                    text: '缓存 (计数)',//'Buffer (count)',
                     position: 'outer-middle'
                 },
                 tick: {

+ 2 - 2
src/main/angular/src/app/core/components/inspector-chart/agent-direct-buffer-memory-chart-container.ts

@@ -9,7 +9,7 @@ export class AgentDirectBufferMemoryChartContainer implements IInspectorChartCon
     private apiUrl = 'getAgentStat/directBuffer/chart.pinpoint';
 
     defaultYMax = 100;
-    title = 'Direct Buffer Memory';
+    title = '直接缓冲存储器'; //'Direct Buffer Memory';
 
     constructor(
         private inspectorChartDataService: InspectorChartDataService
@@ -46,7 +46,7 @@ export class AgentDirectBufferMemoryChartContainer implements IInspectorChartCon
         return {
             y: {
                 label: {
-                    text: 'Memory (bytes)',
+                    text: '内存 (字节)', //Memory (bytes)
                     position: 'outer-middle'
                 },
                 tick: {

+ 3 - 3
src/main/angular/src/app/core/components/inspector-chart/agent-jvm-heap-chart-container.ts

@@ -10,7 +10,7 @@ export class AgentJVMHeapChartContainer implements IInspectorChartContainer {
     private fgcCount: number[];
 
     defaultYMax = 100;
-    title = 'Heap Usage';
+    title = '堆使用情况'; //Heap Usage
 
     constructor(
         private inspectorChartDataService: InspectorChartDataService
@@ -83,7 +83,7 @@ export class AgentJVMHeapChartContainer implements IInspectorChartContainer {
         return {
             y: {
                 label: {
-                    text: 'Memory (bytes)',
+                    text: '内存 (字节)',
                     position: 'outer-middle'
                 },
                 tick: {
@@ -105,7 +105,7 @@ export class AgentJVMHeapChartContainer implements IInspectorChartContainer {
             y2: {
                 show: true,
                 label: {
-                    text: 'Full GC (ms)',
+                    text: '垃圾回收 (毫秒)',
                     position: 'outer-middle'
                 },
                 tick: {

+ 3 - 3
src/main/angular/src/app/core/components/inspector-chart/agent-jvm-non-heap-chart-container.ts

@@ -10,7 +10,7 @@ export class AgentJVMNonHeapChartContainer implements IInspectorChartContainer {
     private fgcCount: number[];
 
     defaultYMax = 100;
-    title = 'Non Heap Usage';
+    title = '栈使用情况'; //Non Heap Usage
 
     constructor(
         private inspectorChartDataService: InspectorChartDataService
@@ -83,7 +83,7 @@ export class AgentJVMNonHeapChartContainer implements IInspectorChartContainer {
         return {
             y: {
                 label: {
-                    text: 'Memory (bytes)',
+                    text: '内存 (字节)',
                     position: 'outer-middle'
                 },
                 tick: {
@@ -105,7 +105,7 @@ export class AgentJVMNonHeapChartContainer implements IInspectorChartContainer {
             y2: {
                 show: true,
                 label: {
-                    text: 'Full GC (ms)',
+                    text: '垃圾回收 (毫秒)',
                     position: 'outer-middle'
                 },
                 tick: {

+ 2 - 2
src/main/angular/src/app/core/components/inspector-chart/agent-loaded-class-count-chart-container.ts

@@ -9,7 +9,7 @@ export class AgentLoadedCLassCountChartContainer implements IInspectorChartConta
     private apiUrl = 'getAgentStat/loadedClass/chart.pinpoint';
 
     defaultYMax = 100;
-    title = 'Loaded Class Count';
+    title = '加载类计数';//'Loaded Class Count';
 
     constructor(
         private inspectorChartDataService: InspectorChartDataService
@@ -46,7 +46,7 @@ export class AgentLoadedCLassCountChartContainer implements IInspectorChartConta
         return {
             y: {
                 label: {
-                    text: 'Loaded Class (count)',
+                    text: '加载类 (计数)',//'Loaded Class (Count)',
                     position: 'outer-middle'
                 },
                 tick: {

+ 2 - 2
src/main/angular/src/app/core/components/inspector-chart/agent-mapped-buffer-count-chart-container.ts

@@ -9,7 +9,7 @@ export class AgentMappedBufferCountChartContainer implements IInspectorChartCont
     private apiUrl = 'getAgentStat/directBuffer/chart.pinpoint';
 
     defaultYMax = 100;
-    title = 'Mapped Buffer Count';
+    title = '映射缓冲区计数';//'Mapped Buffer Count';
 
     constructor(
         private inspectorChartDataService: InspectorChartDataService
@@ -46,7 +46,7 @@ export class AgentMappedBufferCountChartContainer implements IInspectorChartCont
         return {
             y: {
                 label: {
-                    text: 'Buffer (count)',
+                    text: '缓冲 (计数)',//'Buffer (count)',
                     position: 'outer-middle'
                 },
                 tick: {

+ 2 - 2
src/main/angular/src/app/core/components/inspector-chart/agent-mapped-buffer-memory-chart-container.ts

@@ -9,7 +9,7 @@ export class AgentMappedBufferMemoryChartContainer implements IInspectorChartCon
     private apiUrl = 'getAgentStat/directBuffer/chart.pinpoint';
 
     defaultYMax = 100;
-    title = 'Mapped Buffer Memory';
+    title = '映射缓冲存储器';//'Mapped Buffer Memory';
 
     constructor(
         private inspectorChartDataService: InspectorChartDataService
@@ -46,7 +46,7 @@ export class AgentMappedBufferMemoryChartContainer implements IInspectorChartCon
         return {
             y: {
                 label: {
-                    text: 'Memory (bytes)',
+                    text: '内存 (字节)',//Memory (bytes)
                     position: 'outer-middle'
                 },
                 tick: {

+ 2 - 2
src/main/angular/src/app/core/components/inspector-chart/agent-open-file-descriptor-chart-container.ts

@@ -9,7 +9,7 @@ export class AgentOpenFileDescriptorChartContainer implements IInspectorChartCon
     private apiUrl = 'getAgentStat/fileDescriptor/chart.pinpoint';
 
     defaultYMax = 100;
-    title = 'Open File Descriptor';
+    title = '打开文件描述';//Open File Descriptor
 
     constructor(
         private inspectorChartDataService: InspectorChartDataService
@@ -46,7 +46,7 @@ export class AgentOpenFileDescriptorChartContainer implements IInspectorChartCon
         return {
             y: {
                 label: {
-                    text: 'File Descriptor (count)',
+                    text: '文件描述 (计数)',//File Descriptor (count)
                     position: 'outer-middle'
                 },
                 tick: {

+ 2 - 2
src/main/angular/src/app/core/components/inspector-chart/agent-response-time-chart-container.ts

@@ -9,7 +9,7 @@ export class AgentResponseTimeChartContainer implements IInspectorChartContainer
     private apiUrl = 'getAgentStat/responseTime/chart.pinpoint';
 
     defaultYMax = 100;
-    title = 'Response Time';
+    title = '响应时间' //Response Time;
 
     constructor(
         private inspectorChartDataService: InspectorChartDataService
@@ -52,7 +52,7 @@ export class AgentResponseTimeChartContainer implements IInspectorChartContainer
         return {
             y: {
                 label: {
-                    text: 'Response Time (ms)',
+                    text: '响应时间 (毫秒)',// Response Time (ms)
                     position: 'outer-middle'
                 },
                 tick: {

+ 2 - 2
src/main/angular/src/app/core/components/inspector-chart/agent-total-thread-count-chart-container.ts

@@ -9,7 +9,7 @@ export class AgentTotalThreadCountChartContainer implements IInspectorChartConta
     private apiUrl = 'getAgentStat/totalThreadCount/chart.pinpoint';
 
     defaultYMax = 100;
-    title = 'Total Thread';
+    title = '总线程';//'Total Thread';
 
     constructor(
         private inspectorChartDataService: InspectorChartDataService
@@ -46,7 +46,7 @@ export class AgentTotalThreadCountChartContainer implements IInspectorChartConta
         return {
             y: {
                 label: {
-                    text: 'Total Thread (count)',
+                    text: '总线程数 (计数)',//'Total Thread (count)',
                     position: 'outer-middle'
                 },
                 tick: {

+ 2 - 2
src/main/angular/src/app/core/components/inspector-chart/agent-tps-chart-container.ts

@@ -9,7 +9,7 @@ export class AgentTPSChartContainer implements IInspectorChartContainer {
     private apiUrl = 'getAgentStat/transaction/chart.pinpoint';
 
     defaultYMax = 4;
-    title = 'Transactions Per Second';
+    title = '每秒事务处理'//'Transactions Per Second';
 
     constructor(
         private inspectorChartDataService: InspectorChartDataService
@@ -68,7 +68,7 @@ export class AgentTPSChartContainer implements IInspectorChartContainer {
         return {
             y: {
                 label: {
-                    text: 'Transaction (count)',
+                    text: '事务 (计数)',//'Transaction (count)',
                     position: 'outer-middle'
                 },
                 tick: {

+ 2 - 2
src/main/angular/src/app/core/components/inspector-chart/agent-unloaded-class-count-chart-container.ts

@@ -9,7 +9,7 @@ export class AgentUnloadedCLassCountChartContainer implements IInspectorChartCon
     private apiUrl = 'getAgentStat/loadedClass/chart.pinpoint';
 
     defaultYMax = 100;
-    title = 'Unloaded Class Count';
+    title = '未加载类计数'; //Unloaded Class Count
 
     constructor(
         private inspectorChartDataService: InspectorChartDataService
@@ -46,7 +46,7 @@ export class AgentUnloadedCLassCountChartContainer implements IInspectorChartCon
         return {
             y: {
                 label: {
-                    text: 'Unloaded Class (count)',
+                    text: '未加载类 (计数)',
                     position: 'outer-middle'
                 },
                 tick: {

+ 2 - 2
src/main/angular/src/app/core/components/inspector-chart/application-open-file-descriptor-chart-container.ts

@@ -12,7 +12,7 @@ export class ApplicationOpenFileDescriptorChartContainer implements IInspectorCh
     private maxAgentIdList: string[];
 
     defaultYMax = 100;
-    title = 'Open File Descriptor';
+    title = '打开文件描述';//Open File Descriptor
 
     constructor(
         private inspectorChartDataService: InspectorChartDataService
@@ -62,7 +62,7 @@ export class ApplicationOpenFileDescriptorChartContainer implements IInspectorCh
         return {
             y: {
                 label: {
-                    text: 'File Descriptor (count)',
+                    text: '文件描述 (count)',//File Descriptor (count)
                     position: 'outer-middle'
                 },
                 tick: {

+ 1 - 1
src/main/angular/src/app/core/components/period-selector/period-selector-using-calendar.component.css

@@ -118,7 +118,7 @@
     height: 34px;
     font-size: 12px;
     font-weight: 600;
-    padding: 0 8px;
+    padding: 0 4px;
     border-radius: 0px;
     border-bottom: 1px solid var(--border-primary);
     border-top: 1px solid var(--border-primary);

+ 2 - 2
src/main/angular/src/app/core/components/removable-agent-list/removable-agent-list-container.component.html

@@ -5,7 +5,7 @@
     <ng-container *ngIf="props.app; else guide">
         <section class="l-title-section">
             <span class="l-app-name">{{selectedApplication.getApplicationName()}}</span>
-            <button class="btn l-remove-app-btn" (click)="onRemoveApplication()">Remove Application</button>
+            <button class="btn l-remove-app-btn" (click)="onRemoveApplication()">删除应用程序</button>
         </section>
         <section class="l-contents-section">
             <pp-removable-agent-list
@@ -22,7 +22,7 @@
                     <ng-template #app>
                         <p class="l-remove-app-message">
                             {{i18nText.removeApplication}}
-                            <span class="l-remove-target-info">Application Name: <span class="l-key">{{selectedApplication.getApplicationName()}}</span></span>
+                            <span class="l-remove-target-info">应用程序名称: <span class="l-key">{{selectedApplication.getApplicationName()}}</span></span>
                         </p>
                     </ng-template>
                     <ng-template #agent>

+ 6 - 6
src/main/angular/src/app/core/components/removable-agent-list/removable-agent-list-container.component.ts

@@ -95,12 +95,12 @@ export class RemovableAgentListContainerComponent implements OnInit, OnDestroy {
 
     private getI18NText(): void {
         forkJoin(
-            this.translateService.get('COMMON.SELECT_YOUR_APP'),
-            this.translateService.get('COMMON.REMOVE'),
-            this.translateService.get('COMMON.CANCEL'),
-            this.translateService.get('CONFIGURATION.AGENT_MANAGEMENT.REMOVE_APPLICATION'),
-            this.translateService.get('CONFIGURATION.AGENT_MANAGEMENT.REMOVE_AGENT'),
-            this.translateService.get('CONFIGURATION.AGENT_MANAGEMENT.PASSWORD_GUIDE')
+            this.translateService.get('请选择应用'),//SELECT_YOUR_APP
+            this.translateService.get('删除'),//COMMON.REMOVE
+            this.translateService.get('取消'),//COMMON.CANCEL
+            this.translateService.get('代理管理删除应用程序'),//CONFIGURATION.AGENT_MANAGEMENT.REMOVE_APPLICATION
+            this.translateService.get('删除代理'),//CONFIGURATION.AGENT_MANAGEMENT.REMOVE_AGENT
+            this.translateService.get('代理管理密码')//CONFIGURATION.AGENT_MANAGEMENT.PASSWORD_GUIDE
         ).subscribe(([selectApp, removeBtnLabel, cancelBtnLabel, removeApp, removeAgent, passwordGuide]: string[]) => {
             this.i18nText.select = selectApp;
             this.i18nText.removeButton = removeBtnLabel;

+ 6 - 6
src/main/angular/src/app/core/components/removable-agent-list/removable-agent-list.component.ts

@@ -38,10 +38,10 @@ export class RemovableAgentListComponent implements OnInit {
     private makeColumnDefs(): {[key: string]: any} {
         return [
             {
-                headerName: 'Removable Agent List',
+                headerName: '代理列表',
                 children: [
                     {
-                        headerName: 'REMOVE',
+                        headerName: '删除',
                         field: 'agentId',
                         width: 110,
                         cellRenderer: (param: any) => {
@@ -50,25 +50,25 @@ export class RemovableAgentListComponent implements OnInit {
                         cellStyle: this.alignCenterPointCellStyle
                     },
                     {
-                        headerName: 'Host Name',
+                        headerName: '主机名称',
                         field: 'hostName',
                         width: 400,
                         cellStyle: this.alignCenterCellStyle
                     },
                     {
-                        headerName: 'Agent Id',
+                        headerName: '代理Id',
                         field: 'agentId',
                         width: 250,
                         cellStyle: this.alignCenterCellStyle
                     },
                     {
-                        headerName: 'Agent Name',
+                        headerName: '代理名称',
                         field: 'agentNameText',
                         width: 250,
                         cellStyle: this.alignCenterCellStyle
                     },
                     {
-                        headerName: 'Agent Version',
+                        headerName: '代理版本',
                         field: 'agentVersion',
                         width: 160,
                         cellStyle: this.alignCenterCellStyle

+ 2 - 2
src/main/angular/src/app/core/components/server-map-context-popup/server-map-context-popup.component.html

@@ -1,8 +1,8 @@
 <dl class="l-list">
-    <dt class="l-list-title"><span class="l-icon fas fa-compress"></span>Merge</dt>
+    <dt class="l-list-title"><span class="l-icon fas fa-compress"></span>合并</dt>
     <dd class="l-list-item" *ngFor="let item of mergeState | keyvalue">
         <input type="checkbox" class="l-checkbox-input" id="{{item.key}}" [checked]="item.value" (change)="onChangeMergeState(item)">
         <label class="l-item-label" for="{{item.key}}">{{item.key}}</label>
     </dd>
 </dl>
-<button class="l-refresh-btn" (click)="onClickRefresh()"><span class="l-icon fas fa-sync"></span>Refresh</button>
+<button class="l-refresh-btn" (click)="onClickRefresh()"><span class="l-icon fas fa-sync"></span>刷新</button>

+ 11 - 7
src/main/angular/src/app/core/components/server-map-options/server-map-options.component.html

@@ -1,6 +1,6 @@
 <div class="l-wrapper" (clickOutside)="onClose()">
     <button type="button" class="l-dropdown-button" (click)="toggleList()">
-        <span class="l-bound-text l-bound-double-text" [class.selected]="selectedWasOnly">WAS<br>ONLY</span>
+        <span class="l-bound-text l-bound-double-text" [class.selected]="selectedWasOnly">只选<br>WAS</span>
         <span class="l-bound-text"><img [src]="bidirectionalImgSrc" width="18px" height="18px"></span>
         <span>
             <span class="l-bound-text"><span class="fas fa-sign-in-alt"></span> {{selectedInbound}}</span>
@@ -10,26 +10,30 @@
     </button>
     <div class="l-dropdown-menu-wrapper" [hidden]="hideList">
         <dl class="l-inbound-list">
-            <dt class="l-bound-title">Inbound</dt>
+          <!-- Inbound -->
+            <dt class="l-bound-title">入站</dt>
             <dd *ngFor="let inbound of inboundList" class="l-bound-list-item" [class.active]="selectedInbound === inbound" (click)="onSelectInbound(inbound)">{{inbound}}</dd>
         </dl>
         <dl class="l-outbound-list">
-            <dt class="l-bound-title">Outbound</dt>
+          <!-- Outbound -->
+            <dt class="l-bound-title">出站</dt>
             <dd *ngFor="let outbound of outboundList" class="l-bound-list-item" [class.active]="selectedOutbound === outbound" (click)="onSelectOutbound(outbound)">{{outbound}}</dd>
         </dl>
         <dl class="l-inbound-list">
-            <dt class="l-bound-title l-last-title">WAS ONLY</dt>
+          <!-- WAS ONLY -->
+            <dt class="l-bound-title l-last-title">只选 WAS</dt>
             <dd class="l-was-only-selector" (click)="onChangeWasOnly()">
                 <i class="fas fa-check-square" [class.selected]="selectedWasOnly"></i>
             </dd>
         </dl>
         <dl class="l-outbound-list">
-            <dt class="l-bound-title l-last-title">Bidirectional</dt>
+          <!-- Bidirectional -->
+            <dt class="l-bound-title l-last-title">双向</dt>
             <dd class="l-bidirectional-selector" (click)="onChangeBidirectional()"><img [src]="bidirectionalImgSrc" width="22px" height="22px"></dd>
         </dl>
         <div class="l-button-group-wrapper">
-            <button class="btn l-cancel-button" (click)="onCancel()">Cancel</button>
-            <button class="btn l-apply-button" (click)="onApply()">Apply</button>
+            <button class="btn l-cancel-button" (click)="onCancel()">取消</button>
+            <button class="btn l-apply-button" (click)="onApply()">应用</button>
         </div>
     </div>
 </div>

+ 1 - 1
src/main/angular/src/app/core/components/server-map/server-map-container.component.html

@@ -21,7 +21,7 @@
             <article>
                 <div class="l-contents-group">
                     <dl class="l-sql-list">
-                        <dt>Notice</dt>
+                        <dt>注意</dt>
                         <dd>{{i18nText['NO_AGENTS']}}</dd>
                     </dl>
                 </div>

+ 1 - 1
src/main/angular/src/app/core/components/server-map/server-map-container.component.ts

@@ -197,7 +197,7 @@ export class ServerMapContainerComponent implements OnInit, OnDestroy {
     }
 
     private getI18NText(): void {
-        this.translateService.get('COMMON.NO_AGENTS').subscribe((i18n: string) => {
+        this.translateService.get('没有找到代理').subscribe((i18n: string) => {
             this.i18nText['NO_AGENTS'] = i18n;
         });
     }

+ 1 - 1
src/main/angular/src/app/core/components/side-bar-title/side-bar-title-container.component.ts

@@ -23,7 +23,7 @@ export class SideBarTitleContainerComponent implements OnInit, OnDestroy {
     @HostBinding('class.flex-container') flexContainerClass = true;
     @HostBinding('class.flex-row') flexRowClass = true;
 
-    private static AGENT_ALL = 'All';
+    private static AGENT_ALL = '全部';
     private unsubscribe = new Subject<void>();
 
     isWAS: boolean;

+ 1 - 1
src/main/angular/src/app/core/components/timeline-command-group/timeline-command-group.component.html

@@ -1,6 +1,6 @@
 <div class="l-command-group">
     <div class="l-current-time">
-        <label (click)="onClickNow()">现在</label>
+        <label (click)="onClickNow()">此刻</label>
         <input type="text" readonly value="{{pointingTime}}">
     </div>
 </div>

+ 12 - 12
src/main/angular/src/app/routes/config-page/config-page.component.html

@@ -7,32 +7,32 @@
         <ul class="l-list l-depth-0">
             <li class="l-list-item">
                 <a class="l-link l-link-with-arrow" [class.active]="isActive(linkAdmin)" (click)="toggleMenu('admin')" #linkAdmin>
-                    <span class="l-link-text">Administration</span><i class="fas fa-angle-right" [@rightDown]="getCollapsedState('admin')"></i>
+                    <span class="l-link-text">管理</span><i class="fas fa-angle-right" [@rightDown]="getCollapsedState('admin')"></i>
                 </a>
             </li>
             <ul class="l-list l-depth-1" [@collapseSpread]="getCollapsedState('admin')">
-                <li class="l-list-item"><a (click)="onMenuClick('agentStatistic')" routerLink="/config/agentStatistic" routerLinkActive="active" class="l-link">Agent Statistic</a></li>
-                <li class="l-list-item"><a (click)="onMenuClick('agentManagement')" routerLink="/config/agentManagement" routerLinkActive="active" class="l-link">Agent Management</a></li>
+                <li class="l-list-item"><a (click)="onMenuClick('agentStatistic')" routerLink="/config/agentStatistic" routerLinkActive="active" class="l-link">代理统计</a></li>
+                <li class="l-list-item"><a (click)="onMenuClick('agentManagement')" routerLink="/config/agentManagement" routerLinkActive="active" class="l-link">代理管理</a></li>
             </ul>
             <li class="l-list-item l-separator"></li>
             <li class="l-list-item">
                 <a class="l-link l-link-with-arrow" [class.active]="isActive(linkSetting)" (click)="toggleMenu('setting')" #linkSetting>
-                    <span class="l-link-text">Setting</span><i class="fas fa-angle-right" [@rightDown]="getCollapsedState('setting')"></i>
+                    <span class="l-link-text">设置</span><i class="fas fa-angle-right" [@rightDown]="getCollapsedState('setting')"></i>
                 </a>
                 <ul class="l-list l-depth-1" [@collapseSpread]="getCollapsedState('setting')">
-                    <li class="l-list-item"><a (click)="onMenuClick('general')" routerLink="/config/general" routerLinkActive="active" class="l-link">General</a></li>
-                    <li class="l-list-item"><a (click)="onMenuClick('favorite')" routerLink="/config/favorite" routerLinkActive="active" class="l-link">Favorite List</a></li>
+                    <li class="l-list-item"><a (click)="onMenuClick('general')" routerLink="/config/general" routerLinkActive="active" class="l-link">常规</a></li>
+                    <li class="l-list-item"><a (click)="onMenuClick('favorite')" routerLink="/config/favorite" routerLinkActive="active" class="l-link">收藏列表</a></li>
                 </ul>
             </li>
             <li class="l-list-item l-separator"></li>        
-            <li class="l-list-item"><a (click)="onMenuClick('userGroup')" routerLink="/config/userGroup" routerLinkActive="active" class="l-link">User Group</a></li>
-            <li class="l-list-item"><a (click)="onMenuClick('alarm')" routerLink="/config/alarm" routerLinkActive="active" class="l-link">Alarm</a></li>
-            <li *ngIf="webhookEnable" class="l-list-item"><a (click)="onMenuClick('webhook')" routerLink="/config/webhook" routerLinkActive="active" class="l-link">Webhook</a></li>
-            <li class="l-list-item"><a (click)="onMenuClick('installation')" routerLink="/config/installation" routerLinkActive="active" class="l-link">Installation</a></li>
+            <li class="l-list-item"><a (click)="onMenuClick('userGroup')" routerLink="/config/userGroup" routerLinkActive="active" class="l-link">用户组</a></li>
+            <li class="l-list-item"><a (click)="onMenuClick('alarm')" routerLink="/config/alarm" routerLinkActive="active" class="l-link">告警</a></li>
+            <li *ngIf="webhookEnable" class="l-list-item"><a (click)="onMenuClick('webhook')" routerLink="/config/webhook" routerLinkActive="active" class="l-link">网络钩子</a></li>
+            <li class="l-list-item"><a (click)="onMenuClick('installation')" routerLink="/config/installation" routerLinkActive="active" class="l-link">安装</a></li>
             <li class="l-list-item l-separator"></li>
-            <li class="l-list-item"><a (click)="onMenuClick('help')" routerLink="/config/help" routerLinkActive="active" class="l-link">Help</a></li>
+            <li class="l-list-item"><a (click)="onMenuClick('help')" routerLink="/config/help" routerLinkActive="active" class="l-link">帮助</a></li>
             <li class="l-list-item l-separator"></li>      
-            <li class="l-list-item"><a (click)="onMenuClick('experimental')" routerLink="/config/experimental" routerLinkActive="active" class="l-link l-experimental-menu-link">Experimental <i class="fas fa-flask"></i></a></li>
+            <li class="l-list-item"><a (click)="onMenuClick('experimental')" routerLink="/config/experimental" routerLinkActive="active" class="l-link l-experimental-menu-link">实验 <i class="fas fa-flask"></i></a></li>
         </ul>
     </section>
     <section class="l-main-section">