diff options
author | Starfall <us@starfall.systems> | 2023-01-17 11:41:05 -0600 |
---|---|---|
committer | Starfall <us@starfall.systems> | 2023-01-17 11:41:05 -0600 |
commit | 1f9c919b8769f5b0a3424ef343e0049d33d656e3 (patch) | |
tree | 1853486629da4b3b76192fe8756e8d4f6d71adcb /config/webpack/translationRunner.js | |
parent | 957c21273ff42d5b2b4a5e16b7869bbb09aeb865 (diff) | |
parent | 13227e1dafd308dfe1a3effc3379b766274809b3 (diff) |
Merge remote-tracking branch 'glitch/main'
Diffstat (limited to 'config/webpack/translationRunner.js')
-rw-r--r-- | config/webpack/translationRunner.js | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/config/webpack/translationRunner.js b/config/webpack/translationRunner.js index 38050baf8..c7f84cc7e 100644 --- a/config/webpack/translationRunner.js +++ b/config/webpack/translationRunner.js @@ -1,11 +1,12 @@ const fs = require('fs'); const path = require('path'); -const { default: manageTranslations } = require('react-intl-translations-manager'); +const { default: manageTranslations, readMessageFiles } = require('react-intl-translations-manager'); const RFC5646_REGEXP = /^[a-z]{2,3}(?:-(?:x|[A-Za-z]{2,4}))*$/; const rootDirectory = path.resolve(__dirname, '..', '..'); -const translationsDirectory = path.resolve(rootDirectory, 'app', 'javascript', 'mastodon', 'locales'); +const externalDefaultMessages = path.resolve(rootDirectory, 'app', 'javascript', 'mastodon', 'locales', 'defaultMessages.json'); +const translationsDirectory = path.resolve(rootDirectory, 'app', 'javascript', 'flavours', 'glitch', 'locales'); const messagesDirectory = path.resolve(rootDirectory, 'build', 'messages'); const availableLanguages = fs.readdirSync(translationsDirectory).reduce((languages, filename) => { const basename = path.basename(filename, '.json'); @@ -86,6 +87,25 @@ validateLanguages(languages, [ !argv.force && testAvailability, ].filter(Boolean)); +// Override `provideExtractedMessages` to ignore translation strings provided upstream already +const provideExtractedMessages = () => { + const extractedMessages = readMessageFiles(messagesDirectory); + const originalExtractedMessages = JSON.parse(fs.readFileSync(externalDefaultMessages, 'utf8')); + const originalKeys = new Set(); + + originalExtractedMessages.forEach(file => { + file.descriptors.forEach(descriptor => { + originalKeys.add(descriptor.id) + }); + }); + + extractedMessages.forEach(file => { + file.descriptors = file.descriptors.filter((descriptor) => !originalKeys.has(descriptor.id)); + }); + + return extractedMessages.filter((file) => file.descriptors.length > 0); +}; + // manage translations manageTranslations({ messagesDirectory, @@ -96,4 +116,7 @@ manageTranslations({ jsonOptions: { trailingNewline: true, }, + overrideCoreMethods: { + provideExtractedMessages, + }, }); |