feat(tool): Script to mark translated strings on Crowdin as "Done" (#41241)
This commit is contained in:
@@ -128,9 +128,97 @@ const updateFileString = async ({
|
||||
}
|
||||
};
|
||||
|
||||
const getStringTranslations = async ({ projectId, stringId, languageId }) => {
|
||||
let headers = { ...authHeader };
|
||||
let done = false;
|
||||
let offset = 0;
|
||||
let translations = [];
|
||||
while (!done) {
|
||||
let endPoint = `projects/${projectId}/translations?stringId=${stringId}&languageId=${languageId}&limit=500&offset=${offset}`;
|
||||
const response = await makeRequest({ method: 'get', endPoint, headers });
|
||||
if (response.data) {
|
||||
if (response.data.length) {
|
||||
translations = [...translations, ...response.data];
|
||||
offset += 500;
|
||||
} else {
|
||||
done = true;
|
||||
return translations;
|
||||
}
|
||||
} else {
|
||||
const { error, errors } = response;
|
||||
console.error(
|
||||
error ? JSON.stringify(error, null, 2) : JSON.stringify(errors, null, 2)
|
||||
);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
const deleteTranslation = async (projectId, translationId) => {
|
||||
let headers = { ...authHeader };
|
||||
const endPoint = `projects/${projectId}/translations/${translationId}`;
|
||||
await makeRequest({
|
||||
method: 'delete',
|
||||
endPoint,
|
||||
headers
|
||||
});
|
||||
console.log(`Deleted translationId ${translationId} from Crowdin project`);
|
||||
return null;
|
||||
};
|
||||
|
||||
const addTranslation = async (projectId, stringId, languageId, text) => {
|
||||
let headers = { ...authHeader };
|
||||
const endPoint = `projects/${projectId}/translations`;
|
||||
const body = {
|
||||
stringId,
|
||||
languageId,
|
||||
text
|
||||
};
|
||||
const response = await makeRequest({
|
||||
method: 'post',
|
||||
endPoint,
|
||||
headers,
|
||||
body
|
||||
});
|
||||
if (response.data) {
|
||||
return response.data;
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
const getLanguageTranslations = async ({ projectId, languageId }) => {
|
||||
let headers = { ...authHeader };
|
||||
let done = false;
|
||||
let offset = 0;
|
||||
let translations = [];
|
||||
while (!done) {
|
||||
let endPoint = `projects/${projectId}/languages/${languageId}/translations?limit=500&offset=${offset}`;
|
||||
const response = await makeRequest({ method: 'get', endPoint, headers });
|
||||
if (response.data) {
|
||||
if (response.data.length) {
|
||||
translations = [...translations, ...response.data];
|
||||
offset += 500;
|
||||
} else {
|
||||
done = true;
|
||||
return translations;
|
||||
}
|
||||
} else {
|
||||
const { error, errors } = response;
|
||||
console.error(
|
||||
error ? JSON.stringify(error, null, 2) : JSON.stringify(errors, null, 2)
|
||||
);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
getStrings,
|
||||
updateString,
|
||||
updateFileStrings,
|
||||
updateFileString
|
||||
updateFileString,
|
||||
getStringTranslations,
|
||||
addTranslation,
|
||||
deleteTranslation,
|
||||
getLanguageTranslations
|
||||
};
|
||||
|
Reference in New Issue
Block a user