// Force start script to proxy l10n request to the server (can be useful when working with plugins/extensions)
const l10nCompiledFlag = process.argv.findIndex(val => val === 'l10nCompiled') >= 0;
+const l10nExtensions = process.argv.findIndex(val => val === 'l10nExtensions') >= 0;
const compiler = setupCompiler(host, port, protocol);
runDevServer(compiler, host, port, protocol);
app.use(errorOverlayMiddleware());
if (!l10nCompiledFlag) {
app.get('/api/l10n/index', (req, res) => {
- getMessages()
+ getMessages(l10nExtensions)
.then(messages => res.json({ effectiveLocale: 'en', messages }))
.catch(() => res.status(500));
});
const readFileAsync = promisify(fs.readFile);
-const filename = path.resolve(
- __dirname,
- '../../../../sonar-core/src/main/resources/org/sonar/l10n/core.properties'
-);
+const filename = '../../../../sonar-core/src/main/resources/org/sonar/l10n/core.properties';
-function getMessages() {
- return readFileAsync(filename, 'utf-8').then(content => {
- const messages = {};
- const lines = content.split('\n');
- lines.forEach(line => {
- const parts = line.split('=');
- if (parts.length > 1) {
- messages[parts[0]] = parts.slice(1).join('=');
- }
- });
- return messages;
- });
+const extensionsFilenames = [
+ '../../../../private/core-extension-billing/src/main/resources/org/sonar/l10n/billing.properties',
+ '../../../../private/core-extension-governance/src/main/resources/org/sonar/l10n/governance.properties',
+ '../../../../private/core-extension-license/src/main/resources/org/sonar/l10n/license.properties'
+];
+
+function getFileMessage(filename) {
+ return readFileAsync(path.resolve(__dirname, filename), 'utf-8').then(
+ content => {
+ const messages = {};
+ const lines = content.split('\n');
+ lines.forEach(line => {
+ const parts = line.split('=');
+ if (parts.length > 1) {
+ messages[parts[0]] = parts.slice(1).join('=');
+ }
+ });
+ return messages;
+ },
+ () => ({})
+ );
+}
+
+function getMessages(l10nExtensions) {
+ return Promise.all(
+ [filename, ...extensionsFilenames].map(filename => getFileMessage(filename))
+ ).then(filesMessages => filesMessages.reduce((acc, messages) => ({ ...acc, ...messages }), {}));
}
module.exports = getMessages;