diff --git a/tools/crowdin/one-off-scripts/delete-all-translations-for-a-language.js b/tools/crowdin/one-off-scripts/delete-all-translations-for-a-language.js new file mode 100644 index 0000000000..b316904dfc --- /dev/null +++ b/tools/crowdin/one-off-scripts/delete-all-translations-for-a-language.js @@ -0,0 +1,30 @@ +/* +This one-off script can be used to delete all existing translations for a specified language on Crowdin. + +Specifying a projectId and lanaguageId in the .env file allows the script to accomplish this task. +*/ + +require('dotenv').config({ path: `${__dirname}/../.env` }); + +const { + getLanguageTranslations, + deleteLanguageTranslations +} = require('../utils/strings'); + +const projectId = process.env.CROWDIN_PROJECT_ID; +const languageId = process.env.CROWDIN_LANGUAGE_ID; + +(async (projectId, languageId) => { + console.log('starting script...'); + const translations = await getLanguageTranslations({ + projectId, + languageId + }); + if (translations && translations.length) { + for (let translation of translations) { + const { stringId } = translation.data; + await deleteLanguageTranslations(projectId, languageId, stringId); + } + } + console.log('complete'); +})(projectId, languageId); diff --git a/tools/crowdin/sample.env b/tools/crowdin/sample.env new file mode 100644 index 0000000000..19149dbfe7 --- /dev/null +++ b/tools/crowdin/sample.env @@ -0,0 +1,4 @@ +CROWDIN_PROJECT_ID= +CROWDIN_PERSONAL_TOKEN= +CROWDIN_API_URL='https://freecodecamp.crowdin.com/api/v2/' +CROWDIN_LANGUAGE_ID= \ No newline at end of file diff --git a/tools/crowdin/utils/strings.js b/tools/crowdin/utils/strings.js index 2268e68aa7..090efa0c63 100644 --- a/tools/crowdin/utils/strings.js +++ b/tools/crowdin/utils/strings.js @@ -212,6 +212,18 @@ const getLanguageTranslations = async ({ projectId, languageId }) => { return null; }; +const deleteLanguageTranslations = async (projectId, languageId, stringId) => { + let headers = { ...authHeader }; + const endPoint = `projects/${projectId}/translations?languageId=${languageId}&stringId=${stringId}`; + console.log(`deleting ${stringId}...`); + await makeRequest({ + method: 'delete', + endPoint, + headers + }); + return null; +}; + module.exports = { getStrings, updateString, @@ -220,5 +232,6 @@ module.exports = { getStringTranslations, addTranslation, deleteTranslation, - getLanguageTranslations + getLanguageTranslations, + deleteLanguageTranslations };