async function getCrowdinContributors()

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);
}