in scripts/translator.js [21:49]
async function getCrowdinContributors(token) {
let allContributors = [];
for (const { id, name } of CROWDIN_PROJECTS) {
const url = `https://api.crowdin.com/api/v2/projects/${id}/members`;
const response = await fetch(url, {
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
}
});
if (!response.ok) {
throw new Error(`HTTP error ${response.status} for project ${name}`);
}
const { data: contributors } = await response.json();
allContributors = allContributors.concat(contributors.map(contributor => ({
name: contributor.data.username,
github: `https://crowdin.com/profile/${contributor.data.username}`,
avatar: contributor.data.avatarUrl
}))).sort(function(a, b) {
return a.name.localeCompare(b.name);
});;
}
// Deduplicate contributors
return [...new Set(allContributors.map(JSON.stringify))].map(JSON.parse);
}