Skip to content

Commit 5a68d8f

Browse files
Merge pull request #684 from zowe/MVD-6749
MVD 6749: i18n Fix for Zowe latest version
2 parents 8e2c9be + 2d9e9d2 commit 5a68d8f

File tree

14 files changed

+422
-418
lines changed

14 files changed

+422
-418
lines changed

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22

33
All notable changes to the Zlux App Manager will be documented in this file.
44

5+
## `3.5.0`
6+
- Enhancement: i18n functionality from the Zowe v2 Desktop has been added to v3. ([#684](https://github.com/zowe/zlux-app-manager/pull/684))
57

6-
## `3.4.0`
78

9+
## `3.4.0`
810
- Enhancement: 'Change Password' component's visibility now depends upon `enablePasswordChange` flag from zowe.yaml. (#672)[https://github.com/zowe/zlux-app-manager/pull/672]
911
- Enhancement: Enabled Personalization Component, with fixes.
1012
- Enhancement: Upgraded some old dependencies to the newest-acceptable versions. (#679)[https://github.com/zowe/zlux-app-manager/pull/679]

system-apps/system-settings-preferences/pluginDefinition.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@
1919
"defaultWindowStyle": {
2020
"width": 500,
2121
"height": 500
22+
},
23+
"entryPoint": {
24+
"2.0": "main.js",
25+
"3.0": "v3/main.js"
2226
}
2327
}
2428
}

system-apps/system-settings-preferences/webClient/package-lock.json

Lines changed: 319 additions & 283 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

system-apps/system-settings-preferences/webClient/package.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
{
22
"name": "org.zowe.zlux.ng2desktop.settings",
33
"version": "2.0.0",
4+
"repository": {
5+
"type": "git",
6+
"url": "https://github.com/zowe/zlux-app-manager.git"
7+
},
48
"scripts": {
59
"start": "webpack --progress --watch",
610
"build": "set NODE_OPTIONS=--openssl-legacy-provider && webpack --progress",
@@ -21,8 +25,9 @@
2125
"@angular/platform-browser": "~18.0.0",
2226
"@angular/platform-browser-dynamic": "~18.0.0",
2327
"@angular/router": "~18.0.0",
28+
"@zlux/widgets": "github:zowe/zlux-widgets#v3.x/master",
2429
"@ngtools/webpack": "~18.0.0",
25-
"angular-l10n": "~16.0.0",
30+
"angular-l10n": "~17.0.1",
2631
"angular2-template-loader": "~0.6.2",
2732
"codelyzer": "~6.0.2",
2833
"copy-webpack-plugin": "~11.0.0",

system-apps/system-settings-preferences/webClient/src/app/app.component.html

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,8 @@
1212
the desired component will display based on what the user chose in the Personalization panel. -->
1313

1414
@if(isLanguagesComponentActive){
15-
<language-component></language-component>
15+
<language-component></language-component>
1616
}
17-
<language-component></language-component>
1817

1918
<!--
2019
This program and the accompanying materials are

system-apps/system-settings-preferences/webClient/src/app/app.module.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { CommonModule } from '@angular/common';
1212
import { NgModule, provideExperimentalZonelessChangeDetection } from '@angular/core';
1313
import { FormsModule } from '@angular/forms';
1414
import { LanguageLocaleService } from '../../../../../virtual-desktop/src/app/i18n/language-locale.service';
15-
// import { ZluxPopupWindowModule, ZluxButtonModule } from '@zlux/widgets';
15+
import { ZluxPopupWindowModule, ZluxButtonModule } from '@zlux/widgets';
1616

1717
// import libraries modules
1818

@@ -26,8 +26,8 @@ import { LanguageComponent } from './language/language.component';
2626
imports: [
2727
CommonModule,
2828
FormsModule,
29-
// ZluxPopupWindowModule,
30-
// ZluxButtonModule
29+
ZluxPopupWindowModule,
30+
ZluxButtonModule
3131
],
3232
providers: [LanguageLocaleService, provideExperimentalZonelessChangeDetection()],
3333
bootstrap: [AppComponent]

system-apps/system-settings-preferences/webClient/src/app/language/language.component.html

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,38 +11,38 @@
1111
<div class="language-content-left">
1212
<img class="language-icon" alt=""><hr class="language-separator-hor">
1313
<button
14-
class="language-button"
15-
(click)="selectEnglish()"
14+
class="language-button"
15+
(click)="selectLanguage('en')"
1616
title="{{Select}}"
1717
id="ZAP_Languages_SelectEnglish">English</button>
1818
<hr class="language-separator-hor">
1919
<button
20-
class="language-button"
21-
(click)="selectChinese()"
20+
class="language-button"
21+
(click)="selectLanguage('zh')"
2222
title="{{Select}}"
2323
id="ZAP_Languages_SelectChinese">中文</button>
2424
<hr class="language-separator-hor">
2525
<button
26-
class="language-button"
27-
(click)="selectFrench()"
26+
class="language-button"
27+
(click)="selectLanguage('fr')"
2828
title="{{Select}}"
2929
id="ZAP_Languages_SelectFrench">Français</button>
3030
<hr class="language-separator-hor">
3131
<button
32-
class="language-button"
33-
(click)="selectJapanese()"
32+
class="language-button"
33+
(click)="selectLanguage('ja')"
3434
title="{{Select}}"
3535
id="ZAP_Languages_SelectJapanese">日本語</button>
3636
<hr class="language-separator-hor">
3737
<button
38-
class="language-button"
39-
(click)="selectRussian()"
38+
class="language-button"
39+
(click)="selectLanguage('ru')"
4040
title="{{Select}}"
4141
id="ZAP_Languages_SelectRussian">Pусский</button>
4242
<hr class="language-separator-hor">
4343
<button
44-
class="language-button"
45-
(click)="selectGerman()"
44+
class="language-button"
45+
(click)="selectLanguage('de')"
4646
title="{{Select}}"
4747
id="ZAP_Languages_SelectGerman">Deutsch</button>
4848
<hr class="language-separator-hor">

system-apps/system-settings-preferences/webClient/src/app/language/language.component.ts

Lines changed: 41 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
*/
1111
import { Component, Inject, Optional } from '@angular/core';
1212
import { BaseLogger } from '../../../../../../virtual-desktop/src/app/shared/logger';
13-
// import { LanguageLocaleService } from '../../../../../../virtual-desktop/src/app/i18n/language-locale.service';
13+
import { LanguageLocaleService } from '../../../../../../virtual-desktop/src/app/i18n/language-locale.service';
1414
import { Angular2InjectionTokens, Angular2PluginWindowActions } from 'pluginlib/inject-resources';
15-
// import { L10nTranslationService } from 'angular-l10n';
15+
import { L10nTranslationService } from 'angular-l10n';
1616

1717
@Component({
1818
selector: 'language-component',
@@ -39,31 +39,39 @@ export class LanguageComponent {
3939
public LanguageChanges: string;
4040
public Select: string;
4141

42+
private languageMap: { [key: string]: string } = {
43+
en: 'English',
44+
fr: 'French',
45+
ru: 'Russian',
46+
zh: 'Chinese',
47+
ja: 'Japanese',
48+
de: 'German'
49+
};
50+
4251
constructor(
43-
// private languageLocaleService: LanguageLocaleService,
44-
// private translation: L10nTranslationService,
52+
private languageLocaleService: LanguageLocaleService,
53+
private translation: L10nTranslationService,
4554
@Optional() @Inject(Angular2InjectionTokens.WINDOW_ACTIONS) private windowActions: Angular2PluginWindowActions,
4655

4756
) {
4857
this.isRestartWindowVisible = false;
4958
this.isVeilVisible = false;
5059
this.updateLanguageSelection();
5160
this.updateLanguageStrings();
52-
if (this.windowActions) {this.windowActions.setTitle(this.Languages);}
61+
if (this.windowActions) {this.windowActions.setTitle(this.Languages); }
5362
}
5463

5564
applyLanguage(): void {
56-
this.logger.debug("hello")
57-
// this.languageLocaleService.setLanguage(this.idLanguage).subscribe(
58-
// arg => {
59-
// this.logger.debug("ZWED5323I",arg); //this.logger.debug(`setLanguage, arg=`,arg);
60-
// this.isRestartWindowVisible = true;
61-
// this.isVeilVisible = true;
62-
// },
63-
// err => {
64-
// this.logger.warn("ZWED5192W",err); //this.logger.warn("setLanguage error=",err);
65-
// }
66-
// )
65+
this.languageLocaleService.setLanguage(this.idLanguage).subscribe(
66+
arg => {
67+
this.logger.debug('ZWED5323I', arg); // this.logger.debug(`setLanguage, arg=`,arg);
68+
this.isRestartWindowVisible = true;
69+
this.isVeilVisible = true;
70+
},
71+
err => {
72+
this.logger.warn('ZWED5192W', err); // this.logger.warn("setLanguage error=",err);
73+
}
74+
)
6775
}
6876

6977
closeRestartWindow(): void {
@@ -75,93 +83,30 @@ export class LanguageComponent {
7583
window.location.reload();
7684
}
7785

78-
//TODO: Ideally, when selecting a language in the panel we would adjust the language strings to the chosen
79-
//language in real-time (contrary to restarting the desktop) but this doesn't work yet as this.translation
80-
//only loads translations for the currently loaded language (that of which data is coming from a cookie)
81-
82-
selectEnglish(): void {
83-
this.selectedLanguage = "English";
84-
this.selectedLanguage = "English";
85-
this.idLanguage = "en";
86-
}
87-
88-
selectFrench(): void {
89-
this.selectedLanguage = "French";
90-
this.selectedLanguage = "English";
91-
this.idLanguage = "fr";
92-
}
86+
// TODO: Ideally, when selecting a language in the panel we would adjust the language strings to the chosen
87+
// language in real-time (contrary to restarting the desktop) but this doesn't work yet as this.translation
88+
// only loads translations for the currently loaded language (that of which data is coming from a cookie)
9389

94-
selectRussian(): void {
95-
this.selectedLanguage = "Russian";
96-
this.selectedLanguage = "English";
97-
this.idLanguage = "ru";
98-
}
99-
100-
selectChinese(): void {
101-
this.selectedLanguage = "Chinese";
102-
this.selectedLanguage = "English";
103-
this.idLanguage = "zh";
104-
}
105-
106-
selectJapanese(): void {
107-
this.selectedLanguage = "Japanese";
108-
this.selectedLanguage = "English";
109-
this.idLanguage = "ja";
110-
}
111-
112-
selectGerman(): void {
113-
this.selectedLanguage = "German";
114-
this.selectedLanguage = "English";
115-
this.idLanguage = "de";
90+
selectLanguage(langCode: string): void {
91+
this.selectedLanguage = this.languageMap[langCode] || 'English';
92+
this.idLanguage = langCode in this.languageMap ? langCode : 'en';
11693
}
11794

11895
updateLanguageSelection(): void {
119-
this.idLanguage = "en";
120-
121-
switch(this.idLanguage) {
122-
case "en": {
123-
this.selectEnglish();
124-
break;
125-
}
126-
case "fr": {
127-
this.selectFrench();
128-
break;
129-
}
130-
case "ja": {
131-
this.selectJapanese();
132-
break;
133-
}
134-
case "ru": {
135-
this.selectRussian();
136-
break;
137-
}
138-
case "zh": {
139-
this.selectChinese();
140-
break;
141-
}
142-
case "de": {
143-
this.selectGerman();
144-
break;
145-
}
146-
default: {
147-
this.selectEnglish();
148-
break;
149-
}
150-
}
96+
this.selectLanguage(this.idLanguage);
15197
}
15298

15399
updateLanguageStrings(): void {
154-
// this.selectedLanguage = this.translation?.translate(this.selectedLanguage, null, this.idLanguage);
155-
// this.Languages = this.translation?.translate('Languages', null, this.idLanguage);
156-
// this.Apply = this.translation?.translate('Apply', null, this.idLanguage);
157-
// this.LanguageChanges = this.translation?.translate('Language Changes', null, this.idLanguage);
158-
// this.LanguageSelected = this.translation?.translate('Language Selected', null, this.idLanguage);
159-
// this.RestartDescr1 = this.translation?.translate('For language changes to take effect, Zowe must be restarted.', null, this.idLanguage);
160-
// this.RestartDescr2 = this.translation?.translate('Would you like to restart the desktop?', null, this.idLanguage);
161-
// this.RestartLater = this.translation?.translate('Restart Later', null, this.idLanguage);
162-
// this.RestartNow = this.translation?.translate('Restart Now', null, this.idLanguage);
163-
// this.Select = this.translation?.translate('Select', null, this.idLanguage);
164-
100+
this.selectedLanguage = this.translation?.translate(this.selectedLanguage, null, this.idLanguage);
101+
this.Languages = this.translation?.translate('Languages', null, this.idLanguage);
102+
this.Apply = this.translation?.translate('Apply', null, this.idLanguage);
103+
this.LanguageChanges = this.translation?.translate('Language Changes', null, this.idLanguage);
104+
this.LanguageSelected = this.translation?.translate('Language Selected', null, this.idLanguage);
105+
this.RestartDescr1 = this.translation?.translate('For language changes to take effect, Zowe must be restarted.', null, this.idLanguage);
106+
this.RestartDescr2 = this.translation?.translate('Would you like to restart the desktop?', null, this.idLanguage);
107+
this.RestartLater = this.translation?.translate('Restart Later', null, this.idLanguage);
108+
this.RestartNow = this.translation?.translate('Restart Now', null, this.idLanguage);
109+
this.Select = this.translation?.translate('Select', null, this.idLanguage);
165110
}
166111

167112
}

system-apps/system-settings-preferences/webClient/webpack.config.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ var config = {
2828
path: path.resolve(__dirname, '../web/v3'),
2929
filename: 'main.js',
3030
},
31+
resolve: {
32+
alias: {
33+
'@zlux/widgets': path.resolve(__dirname, 'node_modules/@zlux/widgets/dist/zlux-widgets/fesm2022/zlux-widgets.mjs'),
34+
'zlux-widgets': path.resolve(__dirname, 'node_modules/@zlux/widgets/dist/zlux-widgets/fesm2022/zlux-widgets.mjs')
35+
}
36+
},
3137
'plugins': [
3238
new CopyWebpackPlugin({
3339
patterns: [

virtual-desktop/angular.json

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,24 @@
2121
"browser": "src/desktop.ts",
2222
"polyfills": [
2323
"zone.js"
24-
],
24+
],
2525
"baseHref": "./",
2626
"tsConfig": "tsconfig.json",
2727
"assets": [
2828
{
2929
"glob": "**/*",
3030
"input": "src/assets",
3131
"output": "assets"
32+
},
33+
{
34+
"glob": "**/*",
35+
"input": "node_modules/@angular/common/locales",
36+
"output": "locales"
3237
}
3338
],
3439
"styles": [],
35-
"scripts": []
40+
"scripts": [],
41+
"sourceMap": { "scripts": true, "styles": true, "vendor": true }
3642
},
3743
"configurations": {
3844
"production": {
@@ -48,12 +54,13 @@
4854
"maximumError": "500kB"
4955
}
5056
],
57+
"sourceMap": { "scripts": true, "styles": true, "vendor": true },
5158
"outputHashing": "none"
5259
},
5360
"development": {
5461
"optimization": false,
5562
"extractLicenses": false,
56-
"sourceMap": true
63+
"sourceMap": { "scripts": true, "styles": true, "vendor": true }
5764
}
5865
},
5966
"defaultConfiguration": "production"
@@ -99,4 +106,4 @@
99106
"cli": {
100107
"analytics": "22a0771c-93b6-4386-9f7d-c356f9d84550"
101108
}
102-
}
109+
}

0 commit comments

Comments
 (0)