Skip to content

Commit 83d85f3

Browse files
committed
add language zh-cn
1 parent 6997ad1 commit 83d85f3

21 files changed

+278
-131
lines changed

src/app/app.component.html

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,37 +6,37 @@
66
#sidenav mode="side" opened="true" class="sidenav" role="navigation">
77
<mat-nav-list>
88

9-
<mat-list-item matTooltip="Certificate Management" [matTooltipPosition]="position">
9+
<mat-list-item i18n-matTooltip="@@cert_mgmt" matTooltip="Certificate Management" [matTooltipPosition]="position">
1010
<a routerLink="/certificates"><mat-icon>lock_outline</mat-icon></a>
1111
</mat-list-item>
1212

13-
<mat-list-item matTooltip="Application Management" [matTooltipPosition]="position">
13+
<mat-list-item i18n-matTooltip="@@app_mgmt" matTooltip="Application Management" [matTooltipPosition]="position">
1414
<a routerLink="/applications"><mat-icon>format_color_text</mat-icon></a>
1515
</mat-list-item>
1616

17-
<mat-list-item matTooltip="Node Management" [matTooltipPosition]="position">
17+
<mat-list-item i18n-matTooltip="@@node_mgmt" matTooltip="Node Management" [matTooltipPosition]="position">
1818
<a routerLink="/nodes"><mat-icon>games</mat-icon></a>
1919
</mat-list-item>
2020

21-
<mat-list-item matTooltip="User Management" [matTooltipPosition]="position">
21+
<mat-list-item i18n-matTooltip="@@user_mgmt" matTooltip="User Management" [matTooltipPosition]="position">
2222
<a routerLink="/usermgmt"><mat-icon>supervisor_account</mat-icon></a>
2323
</mat-list-item>
2424

2525
<mat-divider></mat-divider>
2626

27-
<mat-list-item matTooltip="Dashboard" [matTooltipPosition]="position">
27+
<mat-list-item i18n-matTooltip="@@dashboard" matTooltip="Dashboard" [matTooltipPosition]="position">
2828
<a routerLink="/dashboard"><mat-icon>dashboard</mat-icon></a>
2929
</mat-list-item>
3030

31-
<mat-list-item matTooltip="WAF Management" [matTooltipPosition]="position">
31+
<mat-list-item i18n-matTooltip="@@waf_mgmt" matTooltip="WAF Management" [matTooltipPosition]="position">
3232
<a routerLink="/waf"><mat-icon>security</mat-icon></a>
3333
</mat-list-item>
3434

35-
<mat-list-item matTooltip="WAF Logs" [matTooltipPosition]="position">
35+
<mat-list-item i18n-matTooltip="@@waf_logs" matTooltip="WAF Logs" [matTooltipPosition]="position">
3636
<a routerLink="/logs"><mat-icon>assignment</mat-icon></a>
3737
</mat-list-item>
3838

39-
<mat-list-item matTooltip="CC Logs" [matTooltipPosition]="position">
39+
<mat-list-item i18n-matTooltip="@@cc_logs" matTooltip="CC Logs" [matTooltipPosition]="position">
4040
<a routerLink="/cclogs"><mat-icon>assignment</mat-icon></a>
4141
</mat-list-item>
4242

src/app/application-detail/application-detail.component.css

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,9 @@ mat-form-field {
1010
margin-top:3px;
1111
margin-bottom:3px;
1212
background-color: #F0F0F0;
13+
}
14+
15+
.inner-container {
16+
border: 1px dashed;
17+
padding: 3px;
1318
}
Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,103 +1,104 @@
11
<div *ngIf="application">
22
<h2>
33
<mat-icon>details</mat-icon>
4-
Application Details
4+
<span i18n="@@app_detail">Application Detail</span>
55
</h2>
66

77
<div class="container">
88
<mat-form-field>
9-
<input matInput #app_name [(ngModel)]="application.name" placeholder="Application Name" [readonly]="readOnlyValue" required/>
9+
<input matInput i18n-placeholder="@@app_name" #app_name [(ngModel)]="application.name" placeholder="Application Name" [readonly]="readOnlyValue" required/>
1010
<mat-hint align="end">{{app_name.value?.length || 0}}/128</mat-hint>
1111
</mat-form-field>
1212
<mat-form-field>
13-
<mat-select [(ngModel)]="application.internal_scheme" placeholder="Backend or Internal Scheme" [disabled]="readOnlyValue">
13+
<mat-select i18n-placeholder="@@app_internal_scheme" [(ngModel)]="application.internal_scheme" placeholder="Backend or Internal Scheme" [disabled]="readOnlyValue">
1414
<mat-option value="http">http</mat-option>
1515
<mat-option value="https">https</mat-option>
1616
</mat-select>
1717
</mat-form-field>
1818

1919
<mat-form-field *ngFor="let dest of application.destinations;let i=index; trackBy:trackByFn">
20-
<input matInput [(ngModel)]="application.destinations[i].destination" [readonly]="readOnlyValue" placeholder="Destination( IPv4 Example: 10.10.10.10:80 , IPv6 Example: [::1%lo]:8080 )" required/>
21-
<mat-icon matSuffix matTooltip="Add new destination" matTooltipPosition="left" (click)="addDestination()">add_circle_outline</mat-icon>
20+
<input matInput i18n-placeholder="@@app_destination" [(ngModel)]="application.destinations[i].destination" [readonly]="readOnlyValue" placeholder="Destination( IPv4 Example: 10.10.10.10:80 , IPv6 Example: [::1%lo]:8080 )" required/>
21+
<mat-icon matSuffix i18n-matTooltip="@@add_destination" matTooltip="Add new destination" matTooltipPosition="left" (click)="addDestination()">add_circle_outline</mat-icon>
2222
<mat-icon *ngIf="application.destinations.length>1" matSuffix (click)="delDestination(i)">remove_circle_outline</mat-icon>
2323
</mat-form-field>
2424

2525
<div class="inner-container" *ngFor="let domain of application.domains; let i=index; trackBy:trackByFn">
2626
<mat-form-field>
2727
<mat-icon matPrefix>language</mat-icon>
28-
<input matInput placeholder="Domain name (editable)" [(ngModel)]="application.domains[i].name" [disabled]="readOnlyValue" list="domains" required>
28+
<input matInput i18n-placeholder="@@domain_name" placeholder="Domain name (editable)" [(ngModel)]="application.domains[i].name" [disabled]="readOnlyValue" list="domains" required>
2929
<datalist id="domains">
3030
<option *ngFor="let domain of applicationService.domains;">{{domain.name}}</option>
3131
</datalist>
3232
</mat-form-field>
3333

3434
<mat-form-field>
3535
<mat-icon matPrefix>lock_outline</mat-icon>
36-
<mat-select placeholder="Certificate" [(ngModel)]="application.domains[i].cert_id" [disabled]="readOnlyValue" required>
36+
<mat-select i18n-placeholder="@@certificate" placeholder="Certificate" [(ngModel)]="application.domains[i].cert_id" [disabled]="readOnlyValue" required>
3737
<mat-option *ngFor="let certificate of optionCertificates;" [value]="certificate.id">
3838
{{certificate.common_name}}
3939
</mat-option>
4040
</mat-select>
4141
</mat-form-field>
4242
<mat-form-field>
43-
<mat-checkbox matPrefix [(ngModel)]="application.domains[i].redirect" [disabled]="readOnlyValue">
43+
<mat-checkbox matPrefix i18n="@@redirect" [(ngModel)]="application.domains[i].redirect" [disabled]="readOnlyValue">
4444
Redirect to (301): &nbsp;
4545
</mat-checkbox>
4646
<input matInput placeholder="https://www.your-domain.com/" [(ngModel)]="application.domains[i].location" [disabled]="readOnlyValue">
4747
</mat-form-field>
4848
<div>
49-
<mat-icon matTooltip="Add new domain" matTooltipPosition="right" (click)="addDomain()">add_circle_outline</mat-icon>
49+
<mat-icon i18n-matTooltip="@@add_domain" matTooltip="Add new domain" matTooltipPosition="right" (click)="addDomain()">add_circle_outline</mat-icon>
5050
<mat-icon *ngIf="application.domains.length>1" (click)="delDomain(i)">remove_circle_outline</mat-icon>
5151
</div>
5252
</div>
5353

5454
<mat-form-field>
55-
<mat-select [(ngModel)]="application.ip_method" placeholder="Client IP for WAF" [disabled]="readOnlyValue">
55+
<mat-select [(ngModel)]="application.ip_method" i18n-placeholder="@@ip_for_waf"
56+
placeholder="Client IP for WAF" [disabled]="readOnlyValue">
5657
<mat-option *ngFor="let ip_method_value of enum_ip_method_values;" [value]="ip_method_value.value">
5758
{{ ip_method_value.name }}
5859
</mat-option>
5960
</mat-select>
6061
</mat-form-field>
6162

6263
<section>
63-
<mat-checkbox [(ngModel)]="application.redirect_https" [disabled]="readOnlyValue">
64+
<mat-checkbox i18n="@@redirect_https" [(ngModel)]="application.redirect_https" [disabled]="readOnlyValue">
6465
Redirect HTTP to HTTPS (301)
6566
</mat-checkbox>
6667
</section>
6768

6869
<section>
69-
<mat-checkbox [(ngModel)]="application.hsts_enabled" [disabled]="readOnlyValue">
70+
<mat-checkbox i18n="@@hsts_enabled" [(ngModel)]="application.hsts_enabled" [disabled]="readOnlyValue">
7071
Enable HSTS for HTTPS (Add Response Header: Strict-Transport-Security)
7172
</mat-checkbox>
7273
</section>
7374

7475
<section>
75-
<mat-checkbox [(ngModel)]="application.waf_enabled" [disabled]="readOnlyValue">
76+
<mat-checkbox i18n="@@waf_enabled" [(ngModel)]="application.waf_enabled" [disabled]="readOnlyValue">
7677
Enable WAF (Web Application Firewall)
7778
</mat-checkbox>
7879
</section>
7980

8081
<section>
81-
<mat-checkbox [(ngModel)]="application.oauth_required" [disabled]="readOnlyValue">
82+
<mat-checkbox i18n="@@oauth_required" [(ngModel)]="application.oauth_required" [disabled]="readOnlyValue">
8283
Enable OAuth2 (Only for Internal Employees and Internal Applications. {{ oauth.display_name }})
8384
</mat-checkbox>
8485
</section>
8586

8687
<mat-form-field>
87-
<input type="number" matInput [(ngModel)]="application.session_seconds" [readonly]="readOnlyValue" placeholder="Session Expire Seconds for OAuth2"/>
88+
<input i18n-placeholder="@@session_seconds" type="number" matInput [(ngModel)]="application.session_seconds" [readonly]="readOnlyValue" placeholder="Session Expire Seconds for OAuth2"/>
8889
</mat-form-field>
8990

9091
<mat-form-field>
91-
<input matInput [(ngModel)]="application.owner" [readonly]="readOnlyValue" placeholder="Application Owner"/>
92+
<input matInput i18n-placeholder="@@owner" [(ngModel)]="application.owner" [readonly]="readOnlyValue" placeholder="Application Owner"/>
9293
</mat-form-field>
9394

9495
<mat-form-field>
95-
<input matInput #description [(ngModel)]="application.description" [readonly]="readOnlyValue" placeholder="Description"/>
96+
<input matInput i18n-placeholder="@@description" #description [(ngModel)]="application.description" [readonly]="readOnlyValue" placeholder="Description"/>
9697
<mat-hint align="end">{{description.value?.length || 0}}/256</mat-hint>
9798
</mat-form-field>
9899
<div>
99-
<button mat-raised-button [disabled]="readOnlyValue" (click)="setApplication()" color="primary">Save</button>
100-
<button mat-raised-button (click)="changeEditable()" color="primary">{{readOnlyButtonText}}</button>
101-
<button mat-raised-button [disabled]="readOnlyValue" (click)="deleteApplication()" color="primary">Delete</button>
100+
<button i18n="@@save" mat-raised-button [disabled]="readOnlyValue" (click)="setApplication()" color="primary">Save</button>
101+
<button mat-raised-button (click)="changeEditable()" color="primary">{{readOnlyButtonText}}</button>
102+
<button i18n="@@delete" mat-raised-button [disabled]="readOnlyValue" (click)="deleteApplication()" color="primary">Delete</button>
102103
</div>
103104
</div>

src/app/application.service.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ export class ApplicationService {
111111
var self = this;
112112
this.getResponse('getnodes', function(obj: Node[]){
113113
self.nodes = obj;
114+
if(self.nodes == null) return;
114115
var now_ms = (new Date()).getTime();
115116
for(let node of self.nodes) {
116117
let ms_diff = now_ms - (new Date(node.last_req_time*1000)).getTime();

src/app/applications/applications.component.html

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
<div>
2-
<mat-card>Application Management</mat-card>
2+
<mat-card>
3+
<h2 i18n="@@app_mgmt">Application Management</h2>
4+
</mat-card>
35
</div>
46
<mat-list class="mat-list-item-list-stacked">
57
<mat-list-item (click)="addApplication()">
68
<mat-icon matListIcon>add_circle_outline</mat-icon>
7-
<h3 matLine>Add Application</h3>
9+
<h3 matLine i18n="@@add_app">Add Application</h3>
810
</mat-list-item>
911
<mat-list-item *ngFor="let application of applicationService.applications" (click)="onSelect(application)"
1012
[class.selected]="application === selectedApplication">

src/app/cclogs/cclogs.component.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
<div>
22
<mat-form-field>
3-
<mat-select [(ngModel)]="app_id" placeholder="Application">
3+
<mat-select i18n-placeholder="@@application" [(ngModel)]="app_id" placeholder="Application">
44
<mat-option *ngFor="let application of applicationService.applications;" [value]="application.id">
55
{{application.name}}
66
</mat-option>
77
</mat-select>
88
</mat-form-field>
99
<mat-form-field>
10-
<input matInput [(ngModel)]="start_date" [matDatepicker]="pickerStart" placeholder="Begin Time (00:00:00)">
10+
<input matInput i18n-placeholder="@@begin_time" [(ngModel)]="start_date" [matDatepicker]="pickerStart" placeholder="Begin Time (00:00:00)">
1111
<mat-datepicker-toggle matSuffix [for]="pickerStart"></mat-datepicker-toggle>
1212
<mat-datepicker #pickerStart></mat-datepicker>
1313
</mat-form-field>
1414
<mat-form-field>
15-
<input matInput [(ngModel)]="end_date" [matDatepicker]="pickerEnd" placeholder="End Time (23:59:59)">
15+
<input matInput i18n-placeholder="@@end_time" [(ngModel)]="end_date" [matDatepicker]="pickerEnd" placeholder="End Time (23:59:59)">
1616
<mat-datepicker-toggle matSuffix [for]="pickerEnd"></mat-datepicker-toggle>
1717
<mat-datepicker #pickerEnd></mat-datepicker>
1818
</mat-form-field>
19-
<button mat-raised-button (click)="queryCCLogs()" color="primary">Query CC Logs</button>
19+
<button mat-raised-button i18n="@@query_cc_logs" (click)="queryCCLogs()" color="primary">Query CC Logs</button>
2020
</div>
2121
<div class="mat-elevation-z8">
2222
<mat-table #table [dataSource]="ccLogDataSource">

src/app/certificate-detail/certificate-detail.component.html

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@
22

33
<h2>
44
<mat-icon>details</mat-icon>
5-
Certificate Details
5+
<span i18n="@@cert_detail_title">Certificate Details</span>
66
</h2>
77

88
<div class="container">
99
<mat-form-field>
10-
<input matInput #common_name [(ngModel)]="certificate.common_name" [readonly]="readOnlyValue"
10+
<input matInput i18n-placeholder="@@cert_common_name" #common_name [(ngModel)]="certificate.common_name" [readonly]="readOnlyValue"
1111
placeholder="Common Name or Subject Alternative Name" maxlength="128" required/>
1212
<mat-hint align="end">{{common_name.value?.length || 0}}/128</mat-hint>
1313
</mat-form-field>
1414

1515
<mat-form-field>
16-
<textarea matInput #cert_content [(ngModel)]="certificate.cert_content"
16+
<textarea matInput i18n-placeholder="@@cert_public" #cert_content [(ngModel)]="certificate.cert_content"
1717
placeholder="Public Certificate Content Begin with: -----BEGIN CERTIFICATE-----"
1818
rows="5" [readonly]="readOnlyValue" required>
1919
</textarea>
@@ -22,7 +22,7 @@ <h2>
2222
</mat-form-field>
2323

2424
<mat-form-field>
25-
<textarea matInput #priv_key_content [(ngModel)]="certificate.priv_key_content"
25+
<textarea matInput i18n-placeholder="@@cert_priv" #priv_key_content [(ngModel)]="certificate.priv_key_content"
2626
placeholder="Private Key Content (begin with: -----BEGIN PRIVATE KEY-----)"
2727
rows="5" [readonly]="readOnlyValue">
2828
</textarea>
@@ -31,22 +31,22 @@ <h2>
3131
</mat-form-field>
3232

3333
<mat-form-field *ngIf="certificate.id>0">
34-
<input matInput [value]="getDate(certificate.expire_time)"
34+
<input matInput i18n-placeholder="@@cert_expire" [value]="getDate(certificate.expire_time)"
3535
[readonly]="true"
3636
placeholder="Expire time" >
3737
</mat-form-field>
3838

3939
<mat-form-field>
40-
<input matInput [(ngModel)]="certificate.description" #description
40+
<input matInput i18n-placeholder="@@description" [(ngModel)]="certificate.description" #description
4141
placeholder="Description" required
4242
[readonly]="readOnlyValue" />
4343
<mat-hint align="end">{{description.value?.length || 0}}/256</mat-hint>
4444
</mat-form-field>
4545
<div>
46-
<button mat-raised-button [disabled]="readOnlyValue" (click)="setCertificate()" color="primary">Save</button>
46+
<button i18n="@@save" mat-raised-button [disabled]="readOnlyValue" (click)="setCertificate()" color="primary">Save</button>
4747
<button mat-raised-button *ngIf="applicationService.auth_user.is_super_admin==true" (click)="changeEditable()" color="primary">{{readOnlyButtonText}}</button>
48-
<button *ngIf="certificate.id>0" mat-raised-button [disabled]="readOnlyValue" (click)="deleteCertificate()" color="primary">Delete</button>
49-
<button *ngIf="certificate.id==0 && certificate.common_name" mat-raised-button (click)="selfSignCertificate()" color="primary">Self-Sign Certificate</button>
48+
<button i18n="@@delete" *ngIf="certificate.id>0" mat-raised-button [disabled]="readOnlyValue" (click)="deleteCertificate()" color="primary">Delete</button>
49+
<button i18n="@@cert_self_sign" *ngIf="certificate.id==0 && certificate.common_name" mat-raised-button (click)="selfSignCertificate()" color="primary">Self-Sign Certificate</button>
5050
</div>
5151
</div>
5252

src/app/certificates/certificates.component.html

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
<div>
2-
<mat-card>Certificate Management</mat-card>
2+
<mat-card>
3+
<h2 i18n="@@cert_mgmt">Certificate Management</h2>
4+
</mat-card>
35
</div>
46
<mat-list class="mat-list-item-list-stacked">
57
<mat-list-item *ngIf="applicationService.auth_user.is_cert_admin==true" (click)="addCertificate()">
68
<mat-icon matListIcon>add_circle_outline</mat-icon>
7-
<h3 matLine>Add Certificate</h3>
9+
<h3 matLine i18n="@@add_cert">Add Certificate</h3>
810
</mat-list-item>
911
<mat-list-item *ngFor="let certificate of applicationService.certificates"
1012
(click)="onSelect(certificate)">

src/app/dashboard/dashboard.component.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
11
<div *ngIf="applicationService.auth_user.logged">
22
<div>
33
<mat-form-field>
4-
<mat-select [(ngModel)]="selected_app_id" placeholder="Application">
5-
<mat-option [value]=0>All applications</mat-option>
4+
<mat-select i18n-placeholder="@@application" [(ngModel)]="selected_app_id" placeholder="Application">
5+
<mat-option i18n="@@all" [value]=0>All applications</mat-option>
66
<mat-option *ngFor="let application of applicationService.applications;" [value]="application.id">
77
{{application.name}}
88
</mat-option>
99
</mat-select>
1010
</mat-form-field>
11-
<button mat-raised-button (click)="stat_by_app_id()" color="primary">View</button>
11+
<button mat-raised-button i18n="@@view" (click)="stat_by_app_id()" color="primary">View</button>
1212
</div>
1313
<div class="myChart">
1414
<canvas id="todayCanvas">{{ todayVulnChart }}</canvas>
1515
</div>
1616

1717
<div>
1818
<mat-form-field>
19-
<mat-select [(ngModel)]="selected_vuln_id" placeholder="Vulnerability">
20-
<mat-option [value]=0>All</mat-option>
19+
<mat-select i18n-placeholder="@@vulnerability" [(ngModel)]="selected_vuln_id" placeholder="Vulnerability">
20+
<mat-option i18n="@@all" [value]=0>All</mat-option>
2121
<mat-option *ngFor="let vulntype of applicationService.vulntypes;" [value]="vulntype.id">
2222
{{vulntype.name}}
2323
</mat-option>
2424
</mat-select>
2525
</mat-form-field>
26-
<button mat-raised-button (click)="stat_by_app_and_vuln()" color="primary">View</button>
26+
<button mat-raised-button i18n="@@view" (click)="stat_by_app_and_vuln()" color="primary">View</button>
2727
</div>
2828
<div class="myChart">
2929
<canvas id="week_canvas">{{ weekCountChart }}</canvas>

0 commit comments

Comments
 (0)