Skip to content

Commit c7ed2a2

Browse files
author
Alberto Iannaccone
committed
wait for language packs to be deployed
1 parent f22be3c commit c7ed2a2

File tree

3 files changed

+75
-29
lines changed

3 files changed

+75
-29
lines changed

Diff for: arduino-ide-extension/src/node/arduino-ide-backend-module.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ import {
8282
} from '../common/protocol/authentication-service';
8383
import { ArduinoFirmwareUploaderImpl } from './arduino-firmware-uploader-impl';
8484
import { PlotterBackendContribution } from './plotter/plotter-backend-contribution';
85-
import { ArduinoLocalizationContribution } from './arduino-localization-contribution';
85+
import { ArduinoLocalizationContribution } from './i18n/arduino-localization-contribution';
8686
import { LocalizationContribution } from '@theia/core/lib/node/i18n/localization-contribution';
8787
import { MonitorManagerProxyImpl } from './monitor-manager-proxy-impl';
8888
import { MonitorManager, MonitorManagerName } from './monitor-manager';
@@ -102,6 +102,8 @@ import WebSocketProviderImpl from './web-socket/web-socket-provider-impl';
102102
import { WebSocketProvider } from './web-socket/web-socket-provider';
103103
import { ClangFormatter } from './clang-formatter';
104104
import { FormatterPath } from '../common/protocol/formatter';
105+
import { LocalizationBackendContribution } from './i18n/localization-backend-contribution';
106+
import { LocalizationBackendContribution as TheiaLocalizationBackendContribution } from '@theia/core/lib/node/i18n/localization-backend-contribution';
105107

106108
export default new ContainerModule((bind, unbind, isBound, rebind) => {
107109
bind(BackendApplication).toSelf().inSingletonScope();
@@ -395,4 +397,8 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
395397
bind(BackendApplicationContribution).toService(PlotterBackendContribution);
396398
bind(ArduinoLocalizationContribution).toSelf().inSingletonScope();
397399
bind(LocalizationContribution).toService(ArduinoLocalizationContribution);
400+
bind(LocalizationBackendContribution).toSelf().inSingletonScope();
401+
rebind(TheiaLocalizationBackendContribution).toService(
402+
LocalizationBackendContribution
403+
);
398404
});

Diff for: arduino-ide-extension/src/node/arduino-localization-contribution.ts renamed to arduino-ide-extension/src/node/i18n/arduino-localization-contribution.ts

+28-28
Original file line numberDiff line numberDiff line change
@@ -11,142 +11,142 @@ export class ArduinoLocalizationContribution
1111
async registerLocalizations(registry: LocalizationRegistry): Promise<void> {
1212
registry.registerLocalizationFromRequire(
1313
'af',
14-
require('../../build/i18n/af.json')
14+
require('../../../build/i18n/af.json')
1515
);
1616

1717
registry.registerLocalizationFromRequire(
1818
'en',
19-
require('../../build/i18n/en.json')
19+
require('../../../build/i18n/en.json')
2020
);
2121

2222
registry.registerLocalizationFromRequire(
2323
'fr',
24-
require('../../build/i18n/fr.json')
24+
require('../../../build/i18n/fr.json')
2525
);
2626

2727
registry.registerLocalizationFromRequire(
2828
'ko',
29-
require('../../build/i18n/ko.json')
29+
require('../../../build/i18n/ko.json')
3030
);
3131

3232
registry.registerLocalizationFromRequire(
3333
'pt-br',
34-
require('../../build/i18n/pt.json')
34+
require('../../../build/i18n/pt.json')
3535
);
3636

3737
registry.registerLocalizationFromRequire(
3838
'uk_UA',
39-
require('../../build/i18n/uk_UA.json')
39+
require('../../../build/i18n/uk_UA.json')
4040
);
4141

4242
registry.registerLocalizationFromRequire(
4343
'ar',
44-
require('../../build/i18n/ar.json')
44+
require('../../../build/i18n/ar.json')
4545
);
4646

4747
registry.registerLocalizationFromRequire(
4848
'es',
49-
require('../../build/i18n/es.json')
49+
require('../../../build/i18n/es.json')
5050
);
5151

5252
registry.registerLocalizationFromRequire(
5353
'he',
54-
require('../../build/i18n/he.json')
54+
require('../../../build/i18n/he.json')
5555
);
5656

5757
registry.registerLocalizationFromRequire(
5858
'my_MM',
59-
require('../../build/i18n/my_MM.json')
59+
require('../../../build/i18n/my_MM.json')
6060
);
6161

6262
registry.registerLocalizationFromRequire(
6363
'ro',
64-
require('../../build/i18n/ro.json')
64+
require('../../../build/i18n/ro.json')
6565
);
6666

6767
registry.registerLocalizationFromRequire(
6868
'zh-cn',
69-
require('../../build/i18n/zh.json')
69+
require('../../../build/i18n/zh.json')
7070
);
7171

7272
registry.registerLocalizationFromRequire(
7373
'bg',
74-
require('../../build/i18n/bg.json')
74+
require('../../../build/i18n/bg.json')
7575
);
7676

7777
registry.registerLocalizationFromRequire(
7878
'eu',
79-
require('../../build/i18n/eu.json')
79+
require('../../../build/i18n/eu.json')
8080
);
8181

8282
registry.registerLocalizationFromRequire(
8383
'hu',
84-
require('../../build/i18n/hu.json')
84+
require('../../../build/i18n/hu.json')
8585
);
8686

8787
registry.registerLocalizationFromRequire(
8888
'ne',
89-
require('../../build/i18n/ne.json')
89+
require('../../../build/i18n/ne.json')
9090
);
9191

9292
registry.registerLocalizationFromRequire(
9393
'ru',
94-
require('../../build/i18n/ru.json')
94+
require('../../../build/i18n/ru.json')
9595
);
9696

9797
registry.registerLocalizationFromRequire(
9898
'zh_TW',
99-
require('../../build/i18n/zh_TW.json')
99+
require('../../../build/i18n/zh_TW.json')
100100
);
101101

102102
registry.registerLocalizationFromRequire(
103103
'de',
104-
require('../../build/i18n/de.json')
104+
require('../../../build/i18n/de.json')
105105
);
106106

107107
registry.registerLocalizationFromRequire(
108108
'fa',
109-
require('../../build/i18n/fa.json')
109+
require('../../../build/i18n/fa.json')
110110
);
111111

112112
registry.registerLocalizationFromRequire(
113113
'it',
114-
require('../../build/i18n/it.json')
114+
require('../../../build/i18n/it.json')
115115
);
116116

117117
registry.registerLocalizationFromRequire(
118118
'nl',
119-
require('../../build/i18n/nl.json')
119+
require('../../../build/i18n/nl.json')
120120
);
121121

122122
registry.registerLocalizationFromRequire(
123123
'sv_SE',
124-
require('../../build/i18n/sv_SE.json')
124+
require('../../../build/i18n/sv_SE.json')
125125
);
126126

127127
registry.registerLocalizationFromRequire(
128128
'el',
129-
require('../../build/i18n/el.json')
129+
require('../../../build/i18n/el.json')
130130
);
131131

132132
registry.registerLocalizationFromRequire(
133133
'fil',
134-
require('../../build/i18n/fil.json')
134+
require('../../../build/i18n/fil.json')
135135
);
136136

137137
registry.registerLocalizationFromRequire(
138138
'ja',
139-
require('../../build/i18n/ja.json')
139+
require('../../../build/i18n/ja.json')
140140
);
141141

142142
registry.registerLocalizationFromRequire(
143143
'pl',
144-
require('../../build/i18n/pl.json')
144+
require('../../../build/i18n/pl.json')
145145
);
146146

147147
registry.registerLocalizationFromRequire(
148148
'tr',
149-
require('../../build/i18n/tr.json')
149+
require('../../../build/i18n/tr.json')
150150
);
151151
}
152152
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import * as express from 'express';
2+
import { inject, injectable } from '@theia/core/shared/inversify';
3+
import { LocalizationBackendContribution as TheiaLocalizationBackendContribution } from '@theia/core/lib/node/i18n/localization-backend-contribution';
4+
import { PluginDeployer } from '@theia/plugin-ext/lib/common/plugin-protocol';
5+
import { PluginDeployerImpl } from '@theia/plugin-ext/lib/main/node/plugin-deployer-impl';
6+
import { Deferred } from '@theia/core/lib/common/promise-util';
7+
8+
@injectable()
9+
export class LocalizationBackendContribution extends TheiaLocalizationBackendContribution {
10+
@inject(PluginDeployer)
11+
private readonly pluginDeployer: PluginDeployerImpl;
12+
13+
private readonly initialized = new Deferred<void>();
14+
15+
override async initialize(): Promise<void> {
16+
this.pluginDeployer.onDidDeploy(() => {
17+
this.initialized.resolve();
18+
});
19+
super.initialize();
20+
await this.localizationRegistry.initialize();
21+
}
22+
23+
override configure(app: express.Application): void {
24+
app.get('/i18n/:locale', async (req, res) => {
25+
let locale = req.params.locale;
26+
/*
27+
Waiting for the deploy of the language plugins is neecessary to avoid checking the available
28+
languages before they're finished to be loaded: https://github.com/eclipse-theia/theia/issues/11471
29+
*/
30+
await this.initialized.promise;
31+
locale = this.localizationProvider
32+
.getAvailableLanguages()
33+
.some((e) => e.languageId === locale)
34+
? locale
35+
: 'en';
36+
this.localizationProvider.setCurrentLanguage(locale);
37+
res.send(this.localizationProvider.loadLocalization(locale));
38+
});
39+
}
40+
}

0 commit comments

Comments
 (0)