From 1a3aa64c200c6aeefc2510a9c56fdee42499a84d Mon Sep 17 00:00:00 2001 From: Stas Vilchik Date: Wed, 11 Oct 2017 11:03:40 +0200 Subject: [PATCH] serve l10n messages from dev server --- server/sonar-web/scripts/start.js | 4 ++ server/sonar-web/scripts/utils/getMessages.js | 45 +++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 server/sonar-web/scripts/utils/getMessages.js diff --git a/server/sonar-web/scripts/start.js b/server/sonar-web/scripts/start.js index 3049119cf79..c34df111987 100644 --- a/server/sonar-web/scripts/start.js +++ b/server/sonar-web/scripts/start.js @@ -28,6 +28,7 @@ const formatWebpackMessages = require('react-dev-utils/formatWebpackMessages'); const errorOverlayMiddleware = require('react-error-overlay/middleware'); const getConfig = require('../config/webpack.config'); const paths = require('../config/paths'); +const getMessages = require('./utils/getMessages'); const config = getConfig({ production: false }); @@ -104,6 +105,9 @@ function runDevServer(compiler, host, port, protocol) { }, setup(app) { app.use(errorOverlayMiddleware()); + app.get('/api/l10n/index', (req, res) => { + getMessages().then(messages => res.json({ effectiveLocale: 'en', messages })); + }); } }); diff --git a/server/sonar-web/scripts/utils/getMessages.js b/server/sonar-web/scripts/utils/getMessages.js new file mode 100644 index 00000000000..aa36cad29bb --- /dev/null +++ b/server/sonar-web/scripts/utils/getMessages.js @@ -0,0 +1,45 @@ +/* + * SonarQube + * Copyright (C) 2009-2016 SonarSource SA + * mailto:contact AT sonarsource DOT com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +const fs = require('fs'); +const path = require('path'); +const { promisify } = require('util'); + +const readFileAsync = promisify(fs.readFile); + +const filename = path.resolve( + __dirname, + '../../../../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 === 2) { + messages[parts[0]] = parts[1]; + } + }); + return messages; + }); +} + +module.exports = getMessages; -- 2.39.5