Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions scripts/site_i18n.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -44,17 +44,17 @@ const dynamicKeys = [
"time.updatedPrefix", "time.year", "time.years", "time.yesterday", "title.issue", "title.issues",
];

test("English, Spanish, Hindi, Portuguese and German define every site message", () => {
test("English, Spanish, Hindi, Portuguese, German and French define every site message", () => {
const keys = [...new Set([...staticKeys(), ...dynamicKeys])];
for (const locale of ["en", "es", "hi", "pt", "de"]) {
for (const locale of ["en", "es", "hi", "pt", "de", "fr"]) {
const i18n = loadI18n(locale);
assert.equal(i18n.locale, locale);
for (const key of keys) assert.notEqual(i18n.t(key), key, `${locale} is missing ${key}`);
}
});

test("unsupported locales fall back to English", () => {
const i18n = loadI18n("fr");
const i18n = loadI18n("zh");
assert.equal(i18n.locale, "en");
assert.equal(i18n.t("query.copy"), "Copy");
});
Expand All @@ -63,6 +63,7 @@ test("messages interpolate values", () => {
assert.equal(loadI18n("es").t("repo.stars", { count: "25" }), "25 estrellas");
assert.equal(loadI18n("hi").t("repo.stars", { count: "25" }), "25 स्टार्स");
assert.equal(loadI18n("pt").t("repo.stars", { count: "25" }), "25 estrelas");
assert.equal(loadI18n("fr").t("repo.stars", { count: "25" }), "25 étoiles");
});

test("every locale has the same keys as English", () => {
Expand Down
126 changes: 126 additions & 0 deletions site/assets/i18n.js
Original file line number Diff line number Diff line change
Expand Up @@ -628,6 +628,132 @@
"load.error": "Die Issue-Liste konnte nicht geladen werden. Lade die Seite neu oder durchsuche die Listen auf GitHub.",
"footer.updated": "Issues wurden am {date} UTC über die GitHub-API gesammelt. Die Liste wird alle 12 Stunden aktualisiert.",
},
fr: {
"meta.title": "Open Source Radar : trouvez une issue open source à commencer dès aujourd'hui",
"meta.description": "Des issues ouvertes, sans responsable et adaptées aux débutants, issues de projets open source actifs, triées par langage et par thème et actualisées automatiquement. Plus un guide complet pour votre première contribution.",
"meta.ogDescription": "Trouvez une issue open source à commencer dès aujourd'hui : des issues sans responsable et adaptées aux débutants, issues de projets actifs, actualisées automatiquement.",
"meta.imageAlt": "Open Source Radar : trouvez une issue open source à commencer dès aujourd'hui.",
"skip": "Passer aux issues",
"brandHome": "Accueil d'Open Source Radar",
"mainNav": "Principal",
"nav.guide": "Guide de contribution",
"nav.projects": "Annuaire des projets",
"nav.quickstarts": "Guides par langage",
"locale.label": "Langue de l'interface",
"theme": "Changer le thème de couleur",
"hero.title": "Trouvez une issue open source à commencer dès aujourd'hui.",
"hero.lede": "Chaque issue ci-dessous est ouverte, n'a pas de responsable ni de pull request liée, et provient d'un projet actif au cours des deux derniers mois. Choisissez-en une, lisez le guide de contribution du projet et faites votre première pull request.",
"query.label": "Recherche GitHub équivalente",
"query.copy": "Copier",
"query.copied": "Copié",
"query.run": "Lancer cette recherche sur GitHub",
"filters.label": "Filtrer les issues",
"filters.search": "Rechercher",
"filters.searchPlaceholder": "Titre, dépôt, étiquette ou licence (appuyez sur /; Échap pour effacer)",
"filters.language": "Langage",
"filters.allLanguages": "Tous les langages",
"filters.topic": "Thème",
"filters.allTopics": "Tous les thèmes",
"topic.web": "Développement web",
"topic.devtools": "Outils pour développeurs",
"topic.ai-ml": "IA et apprentissage automatique",
"topic.data": "Données et bases de données",
"topic.cloud-devops": "Cloud, DevOps et infrastructure",
"topic.security": "Sécurité et confidentialité",
"topic.mobile": "Applications mobiles et de bureau",
"topic.games-graphics": "Jeux et graphismes",
"topic.systems": "Systèmes et embarqué",
"topic.docs-education": "Documentation et éducation",
"topic.science": "Science et recherche",
"topic.robotics": "Robotique",
"topic.finance-web3": "Finance et Web3",
"topic.accessibility": "Accessibilité",
"filters.level": "Niveau",
"filters.anyLabel": "Toute étiquette",
"filters.beginner": "Étiquettes pour débutants",
"filters.helpWanted": "Help wanted",
"filters.rules": "Règles du projet",
"filters.any": "Tous",
"filters.noAi": "Aucune restriction d'IA détectée",
"filters.noCla": "Aucun CLA détecté",
"filters.simple": "Aucune règle d'IA, CLA ou DCO détectée",
"filters.hasGuide": "Possède un guide de contribution",
"filters.sort": "Trier",
"filters.recent": "Récemment mis à jour",
"filters.newest": "Issues les plus récentes",
"filters.stars": "Projet le plus étoilé",
"filters.quiet": "Moins de commentaires",
"filters.open": "Le plus d'issues ouvertes",
"filters.activity": "Dernière activité",
"filters.anyTime": "À tout moment",
"filters.days7": "7 derniers jours",
"filters.days30": "30 derniers jours",
"filters.days90": "90 derniers jours",
"filters.signals": "Signaux",
"filters.noComments": "Aucun commentaire pour l'instant",
"filters.replied": "Un mainteneur a répondu",
"filters.noClosedPr": "Aucun PR fermé antérieur",
"filters.clear": "Effacer les filtres",
"results.label": "Issues",
"results.empty": "Aucune issue ne correspond à ces filtres.",
"before.title": "Avant de choisir une issue",
"before.free": "<strong>Vérifiez qu'elle est toujours libre.</strong> Ouvrez l'issue et cherchez de nouveaux commentaires, responsables ou pull requests liées. Cette page se met à jour toutes les 12 heures.",
"before.rules": "<strong>Lisez les règles du projet.</strong> Consultez son guide de contribution, son modèle de pull request et sa politique concernant l'IA. Les badges ici sont détectés automatiquement et peuvent être erronés.",
"before.reproduce": "<strong>Reproduisez avant de corriger.</strong> Confirmez le problème sur votre machine, puis écrivez un test qui échoue avant votre modification.",
"before.small": "<strong>Gardez la modification petite.</strong> Changez uniquement ce dont l'issue a besoin, exécutez les vérifications du projet et expliquez en termes simples ce que vous avez changé.",
"before.readGuide": "Lire le guide complet de contribution",
"footer.loading": "Les données sont collectées depuis l'API GitHub par un workflow open source.",
"footer.suggest": "Suggérer un projet ou améliorer le guide",
"footer.selection": "Comment les issues sont sélectionnées",
"footer.feeds": "Flux RSS des issues pour débutants",
"footer.built": "Créé par <a href=\"https://www.tanbirramim.com\">Tanbir Hossain Ramim</a> (<a href=\"https://github.com/TanbirRamim\">GitHub</a>)",
"footer.star": "<a href=\"https://github.com/TanbirRamim/open-source-radar\">Mettez une étoile sur GitHub</a> si cela vous a aidé",
"footer.license": "Sous licence MIT",
"issue.onlyProject": "Uniquement ce projet",
"issue.labels": "Étiquettes de l'issue",
"issue.rules": "Règles du projet",
"time.today": "mis à jour aujourd'hui",
"time.yesterday": "mis à jour hier",
"time.days": "mis à jour il y a {count} jours",
"time.year": "mis à jour il y a {count} an",
"time.years": "mis à jour il y a {count} ans",
"time.months": "mis à jour il y a {count} mois",
"time.updatedPrefix": "mis à jour",
"time.openedPrefix": "ouverte",
"time.pushedPrefix": "dernier push",
"title.issue": "issue",
"title.issues": "issues",
"summary.match": "<strong>{issues}</strong> issues dans <strong>{projects}</strong> projets correspondent.",
"summary.loading": "Chargement des issues…",
"feed.language": "Flux RSS des issues pour débutants en {name}",
"feed.topic": "Flux RSS des issues pour débutants sur {name}",
"repo.stars": "{count} étoiles",
"repo.forks": "{count} forks",
"repo.openOne": "{count} issue ouverte pour débutants",
"repo.openMany": "{count} issues ouvertes pour débutants",
"repo.guide": "Guide de contribution",
"repo.showAll": "Afficher tous les projets",
"issue.onlyAria": "Afficher uniquement les issues de {name}",
"issue.searchLabel": "Rechercher « {name} »",
"issue.moreLabels": "+{count} autres",
"issue.beginner": "Étiquette pour débutants",
"issue.helpWanted": "Help wanted",
"issue.oneComment": "1 commentaire",
"issue.comments": "{count} commentaires",
"issue.maintainerReplied": "Un mainteneur a répondu",
"issue.maintainerRepliedTitle": "Le commentaire le plus récent provient d'un propriétaire, membre ou collaborateur du dépôt.",
"badge.aiRestricted": "IA restreinte",
"badge.aiDisclose": "Déclarer l'utilisation de l'IA",
"badge.aiPolicy": "Politique sur l'IA",
"badge.dco": "Signature DCO",
"badge.guide": "Guide de contribution",
"badge.closedPr": "PR antérieur fermé",
"more": "Afficher encore {shown} sur {remaining}",
"more.initial": "Afficher plus d'issues",
"load.error": "La liste des issues n'a pas pu être chargée. Rechargez la page ou consultez les listes sur GitHub.",
"footer.updated": "Issues collectées depuis l'API GitHub le {date} UTC. La liste est actualisée toutes les 12 heures.",
},

};

function storedLocale() {
Expand Down
1 change: 1 addition & 0 deletions site/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@
<option value="es">Español</option>
<option value="hi">हिन्दी</option>
<option value="pt">Português</option>
<option value="fr">Français</option>
</select>
</label>
<button class="theme-toggle" type="button" aria-label="Switch color theme" title="Switch color theme"
Expand Down
Loading