diff --git a/src/app/elements/setting/setting.component.css b/src/app/elements/setting/setting.component.css
index 79430cb90..7540efb92 100644
--- a/src/app/elements/setting/setting.component.css
+++ b/src/app/elements/setting/setting.component.css
@@ -5,3 +5,7 @@
}
.mat-form-field { width: 100%;}
+
+.space {
+ padding-top: 15px;
+}
diff --git a/src/app/elements/setting/setting.component.html b/src/app/elements/setting/setting.component.html
index ae867bc24..437165073 100644
--- a/src/app/elements/setting/setting.component.html
+++ b/src/app/elements/setting/setting.component.html
@@ -11,7 +11,7 @@
-
+
{{s}}
@@ -19,20 +19,31 @@
-
-
- {{ 'Full screen'| translate}}
- {{ 'Driver redirect'| translate}}
-
+
+
+ {{ 'Full screen'| translate}}
+ {{ 'Driver redirect'| translate}}
+
+
+
+
+ Web
+ {{ 'Client' | translate }}
+
-
-
- Web
- {{ 'Client' | translate }}
-
+
+
+
+
+ {{item.label}}
+
+
+
@@ -48,7 +59,6 @@
-
diff --git a/src/app/elements/setting/setting.component.ts b/src/app/elements/setting/setting.component.ts
index 7895fec98..b8c59087f 100644
--- a/src/app/elements/setting/setting.component.ts
+++ b/src/app/elements/setting/setting.component.ts
@@ -14,6 +14,7 @@ import {MAT_DIALOG_DATA} from '@angular/material/dialog';
export class ElementSettingComponent implements OnInit {
resolutionsChoices = ['Auto', '1024x768', '1366x768', '1600x900', '1920x1080'];
public boolChoices: any[];
+ public keyboardLayoutOptions: any[];
setting: Setting;
globalSetting: GlobalSetting;
type = 'general';
@@ -26,6 +27,14 @@ export class ElementSettingComponent implements OnInit {
{name: _i18n.instant('Yes'), value: '1'},
{name: _i18n.instant('No'), value: '0'}
];
+ this.keyboardLayoutOptions = [
+ { value: 'en-us-qwerty', label: _i18n.instant('US English keyboard layout') },
+ { value: 'en-gb-qwerty', label: _i18n.instant('UK English keyboard layout') },
+ { value: 'ja-jp-qwerty', label: _i18n.instant('Japanese keyboard layout') },
+ { value: 'fr-fr-azerty', label: _i18n.instant('French keyboard layout') },
+ { value: 'fr-ch-qwertz', label: _i18n.instant('Swiss French keyboard layout') },
+ { value: 'fr-be-azerty', label: _i18n.instant('Belgian French keyboard layout') }
+ ];
}
hasLicense() {
diff --git a/src/app/model.ts b/src/app/model.ts
index a44d45225..695b3ee0d 100644
--- a/src/app/model.ts
+++ b/src/app/model.ts
@@ -281,6 +281,7 @@ export class Setting {
sqlClient = '1';
commandExecution: boolean = true;
appletConnectMethod: string = 'web';
+ keyboardLayout: string = '';
}
diff --git a/src/app/services/setting.ts b/src/app/services/setting.ts
index adf426790..de5100265 100644
--- a/src/app/services/setting.ts
+++ b/src/app/services/setting.ts
@@ -14,6 +14,8 @@ export class SettingService {
private inited = false;
public isLoadTreeAsync$ = new BehaviorSubject(true);
public appletConnectMethod$ = new BehaviorSubject('');
+ public keyboardLayout$ = new BehaviorSubject('');
+
constructor(
private _localStorage: LocalStorageService,
@@ -25,6 +27,7 @@ export class SettingService {
this.setting = settingData;
this.setIsLoadTreeAsync();
this.setAppletConnectMethod();
+ this.setKeyboardLayout();
} else {
this.setting = new Setting();
}
@@ -93,6 +96,7 @@ export class SettingService {
this._localStorage.set(this.settingKey, this.setting);
this.setIsLoadTreeAsync();
this.setAppletConnectMethod();
+ this.setKeyboardLayout();
}
setIsLoadTreeAsync() {
@@ -103,6 +107,10 @@ export class SettingService {
this.appletConnectMethod$.next(this.setting.appletConnectMethod);
}
+ setKeyboardLayout() {
+ this.keyboardLayout$.next(this.setting.keyboardLayout);
+ }
+
// 全局跳过手动输入windows账号密码
globalSkipAllManualPassword(): boolean {
return this.globalSetting.WINDOWS_SKIP_ALL_MANUAL_PASSWORD;
diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json
index 35ac81a30..82b31e6f5 100644
--- a/src/assets/i18n/en.json
+++ b/src/assets/i18n/en.json
@@ -120,7 +120,16 @@
"General": "General",
"GUI": "GUI",
"CLI": "CLI",
+ "Applet connect method": "Applet connect method",
+ "Client": "Client",
+ "Keyboard layout": "Keyboard layout",
+ "UK English keyboard layout": "UK English (Qwerty)",
+ "US English keyboard layout": "US English (Qwerty)",
+ "Japanese keyboard layout": "Japanese (Qwerty)",
+ "French keyboard layout": "French (Azerty)",
+ "Swiss French keyboard layout": "Swiss French (Qwertz)",
+ "Belgian French keyboard layout": "Belgian French (Azerty)",
"Login reminder": "Login reminder",
"ACL reject login asset": "This login has been rejected due to access control policy restrictions",
"Need review for login asset": "This login needs manual review. Do you want to continue?",
diff --git a/src/assets/i18n/ja.json b/src/assets/i18n/ja.json
index edb6d904c..10e23b227 100644
--- a/src/assets/i18n/ja.json
+++ b/src/assets/i18n/ja.json
@@ -123,6 +123,16 @@
"Normal accounts": "通常のログインアカウント",
"Special accounts": "特別ログインアカウント",
"Tips": "ヒント",
+ "Applet connect method": "アプレット接続方法",
+ "Client": "お客様",
+
+ "Keyboard layout": "キーボードレイアウト",
+ "UK English keyboard layout": "UK English (Qwerty)",
+ "US English keyboard layout": "US English (Qwerty)",
+ "Japanese keyboard layout": "Japanese (Qwerty)",
+ "French keyboard layout": "French (Azerty)",
+ "Swiss French keyboard layout": "Swiss French (Qwertz)",
+ "Belgian French keyboard layout": "Belgian French (Azerty)",
"Login reminder": "ログインリマインダー",
"ACL reject login asset": "アクセス制御ポリシーの制限により、このログインは拒否されました",
"Need review for login asset": "このログインは手動で確認する必要があります。続行しますか?",
diff --git a/src/assets/i18n/zh.json b/src/assets/i18n/zh.json
index 8705c7daf..9a31a32a9 100644
--- a/src/assets/i18n/zh.json
+++ b/src/assets/i18n/zh.json
@@ -124,7 +124,14 @@
"General": "基本配置",
"Applet connect method": "远程应用连接方式",
"Client": "客户端",
-
+
+ "Keyboard layout": "键盘布局",
+ "UK English keyboard layout": "UK English (Qwerty)",
+ "US English keyboard layout": "US English (Qwerty)",
+ "Japanese keyboard layout": "Japanese (Qwerty)",
+ "French keyboard layout": "French (Azerty)",
+ "Swiss French keyboard layout": "Swiss French (Qwertz)",
+ "Belgian French keyboard layout": "Belgian French (Azerty)",
"Login reminder": "登录提醒",
"ACL reject login asset": "本次登录已拒绝,原因是访问控制策略的限制",
"Need review for login asset": "本次登录需要进行人工审核,是否继续?",