diff options
author | Jeremy Davis <jeremy.davis@sonarsource.com> | 2021-10-01 11:18:27 +0200 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2021-10-01 20:03:19 +0000 |
commit | c40e4dfbc335b14880572f8f53f75f3c0c7e0c70 (patch) | |
tree | 2c5b976bc1fd274de5dc153ece78f89ec55ab498 /server/sonar-web/scripts/utils.js | |
parent | f2b73dc3de44424f07cbc0d02ed6acfc61ba4c6c (diff) | |
download | sonarqube-c40e4dfbc335b14880572f8f53f75f3c0c7e0c70.tar.gz sonarqube-c40e4dfbc335b14880572f8f53f75f3c0c7e0c70.zip |
[NO-JIRA] FE Dev Server handles translations
Diffstat (limited to 'server/sonar-web/scripts/utils.js')
-rw-r--r-- | server/sonar-web/scripts/utils.js | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/server/sonar-web/scripts/utils.js b/server/sonar-web/scripts/utils.js new file mode 100644 index 00000000000..054fe7efb98 --- /dev/null +++ b/server/sonar-web/scripts/utils.js @@ -0,0 +1,58 @@ +/* + * SonarQube + * Copyright (C) 2009-2021 SonarSource SA + * mailto:info 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 l10nFilePath = '../../../sonar-core/src/main/resources/org/sonar/l10n/core.properties'; + +const extensionsL10nFilepaths = [ + '../../../private/core-extension-governance/src/main/resources/org/sonar/l10n/governance.properties', + '../../../private/core-extension-license/src/main/resources/org/sonar/l10n/license.properties', + '../../../private/core-extension-developer-server/src/main/resources/org/sonar/l10n/developer-server.properties', + '../../../private/core-extension-securityreport/src/main/resources/org/sonar/l10n/securityreport.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() { + return Promise.all( + [l10nFilePath, ...extensionsL10nFilepaths].map(filename => getFileMessage(filename)) + ).then(filesMessages => filesMessages.reduce((acc, messages) => ({ ...acc, ...messages }), {})); +} + +module.exports = { getMessages }; |