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
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ npmx.dev uses [@nuxtjs/i18n](https://i18n.nuxtjs.org/) for internationalization.
### Approach

- All user-facing strings should use translation keys via `$t()` in templates and script
- Translation files live in `i18n/locales/` (e.g., `en-US.json`)
- Translation files live in [`i18n/locales/`](i18n/locales) (e.g., `en-US.json`)
- We use the `no_prefix` strategy (no `/en-US/` or `/fr-FR/` in URLs)
- Locale preference is stored in cookies and respected on subsequent visits

Expand Down
18 changes: 12 additions & 6 deletions app/pages/about.vue
Original file line number Diff line number Diff line change
Expand Up @@ -212,8 +212,11 @@ const { data: contributors, status: contributorsStatus } = useFetch<GitHubContri
rel="noopener noreferrer"
class="group flex flex-col gap-3 p-4 rounded-lg bg-bg-subtle hover:bg-bg-elevated border border-border hover:border-border-hover transition-all duration-200"
>
<div class="flex items-center gap-2">
<span class="i-carbon:logo-github w-5 h-5 text-fg" aria-hidden="true" />
<div class="flex gap-2">
<span
class="i-carbon:logo-github shrink-0 mt-1 w-5 h-5 text-fg"
aria-hidden="true"
/>
<span class="font-medium text-fg">{{
$t('about.get_involved.contribute.title')
}}</span>
Expand All @@ -236,8 +239,8 @@ const { data: contributors, status: contributorsStatus } = useFetch<GitHubContri
rel="noopener noreferrer"
class="group flex flex-col gap-3 p-4 rounded-lg bg-bg-subtle hover:bg-bg-elevated border border-border hover:border-border-hover transition-all duration-200"
>
<div class="flex items-center gap-2">
<span class="i-carbon:chat w-5 h-5 text-fg" aria-hidden="true" />
<div class="flex gap-2">
<span class="i-carbon:chat shrink-0 mt-1 w-5 h-5 text-fg" aria-hidden="true" />
<span class="font-medium text-fg">{{
$t('about.get_involved.community.title')
}}</span>
Expand All @@ -260,8 +263,11 @@ const { data: contributors, status: contributorsStatus } = useFetch<GitHubContri
rel="noopener noreferrer"
class="group flex flex-col gap-3 p-4 rounded-lg bg-bg-subtle hover:bg-bg-elevated border border-border hover:border-border-hover transition-all duration-200"
>
<div class="flex items-center gap-2">
<span class="i-simple-icons:bluesky w-5 h-5 text-fg" aria-hidden="true" />
<div class="flex gap-2">
<span
class="i-simple-icons:bluesky shrink-0 mt-1 w-5 h-5 text-fg"
aria-hidden="true"
/>
<span class="font-medium text-fg">{{ $t('about.get_involved.follow.title') }}</span>
</div>
<p class="text-sm text-fg-muted leading-relaxed">
Expand Down
84 changes: 80 additions & 4 deletions i18n/locales/fr-FR.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
"found_packages": "{count} paquets trouvés",
"updating": "(mise à jour...)",
"no_results": "Aucun paquet trouvé pour « {query} »",
"results": "Résultats de recherche",
"not_taken": "{name} n'est pas pris",
"claim_prompt": "Réserver ce nom de paquet sur npm",
"claim_button": "Réserver « {name} »",
Expand All @@ -38,20 +39,44 @@
}
},
"nav": {
"main_navigation": "Barre de navigation",
"popular_packages": "Paquets populaires",
"search": "recherche",
"settings": "paramètres",
"back": "Retour"
},
"settings": {
"title": "paramètres",
"tagline": "personnalisez votre expérience npmx",
"meta_description": "Personnalisez votre expérience npmx.dev avec votre thème, langage et préférences d'affichage.",
"sections": {
"appearance": "Apparence",
"display": "Affichage",
"language": "Langue"
},
"relative_dates": "Dates relatives",
"relative_dates_description": "Afficher « il y a 3 jours » au lieu des dates complètes",
"include_types": "Inclure {'@'}types à la commande d'installation",
"include_types_description": "Inclure les paquets {'@'}types à la commande d'installation pour les paquets non typés",
"hide_platform_packages": "Masquer les paquets spécifiques à la plateforme dans la recherche",
"hide_platform_packages_description": "Masquer les paquets binaires natifs comme {'@'}esbuild/linux-x64 des résultats",
"theme": "Thème",
"theme_light": "Clair",
"theme_dark": "Sombre",
"theme_system": "Système",
"language": "Langue de l'interface",
"help_translate": "Aidez à traduire npmx"
"help_translate": "Aidez à traduire npmx",
"accent_colors": "Couleurs d'accentuation",
"clear_accent": "Supprimer la couleur d'accentuation",
"translation_progress": "Progression de la traduction"
},
"i18n": {
"missing_keys": "{count} traduction manquante | {count} traductions manquantes",
"copy_keys": "Copier les noms",
"show_more_keys": "Afficher {count} de plus...",
"contribute_hint": "Aidez à améliorer cette traduction en ajoutant les entrées manquantes.",
"edit_on_github": "Modifier sur GitHub",
"view_guide": "Guide de traduction"
Comment on lines +73 to +79
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Un peu ironique 😄

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment ça ?

},
"common": {
"loading": "Chargement...",
Expand All @@ -63,6 +88,8 @@
"retry": "Réessayer",
"copy": "copier",
"copied": "copié !",
"skip_link": "Passer au contenu principal",
"close_modal": "Fermer la fenêtre",
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Est-ce qu'il y a un mot plus précis pour "modal" en français? 🤔

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oui, sûrement, mais j’ai voulu garder la traduction que @jycouet avait faite pour d’autres modales

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comme beaucoup de traduction, l'IA a fait une bonne partie ☺️. J'ai fait une passe complète, mais j'suis sûr qu'il y a des améliorations possibles 👍

N'hésitez pas.
On peut se ping sur le sujet

"show_more": "afficher plus",
"warnings": "Avertissements :",
"go_back_home": "Retour à l'accueil",
Expand All @@ -83,6 +110,7 @@
"not_latest": "(pas la dernière)",
"verified_provenance": "Provenance vérifiée",
"view_permalink": "Voir le lien permanent pour cette version",
"navigation": "Navigation du paquet",
"deprecation": {
"package": "Ce paquet a été déprécié.",
"version": "Cette version a été dépréciée.",
Expand All @@ -91,7 +119,8 @@
"stats": {
"license": "Licence",
"deps": "Dépendances",
"install_size": "Taille d'installation",
"install_size": "Taille d'install.",
"vulns": "Vulnérabilités",
"updated": "Mis à jour",
"view_dependency_graph": "Voir le graphe de dépendances",
"inspect_dependency_tree": "Inspecter l'arbre de dépendances"
Expand All @@ -102,14 +131,27 @@
"issues": "issues",
"jsr": "jsr",
"code": "code",
"docs": "docs"
"docs": "docs",
"fund": "donner"
},
"docs": {
"not_available": "Documentation non disponible",
"not_available_detail": "Nous n'avons pas pu générer la documentation pour cette version."
},
"get_started": {
"title": "Commencer",
"pm_label": "Gestionnaire de paquets",
"copy_command": "Copier la commande d'installation",
"view_types": "Voir {package}"
},
"create": {
"title": "Créer un nouveau projet",
"copy_command": "Copier la commande de création"
},
"run": {
"title": "Exécuter",
"locally": "Exécuter localement"
},
"readme": {
"title": "Readme",
"no_readme": "Aucun README disponible.",
Expand Down Expand Up @@ -141,7 +183,8 @@
"title": "Dépendances ({count})",
"list_label": "Dépendances du paquet",
"show_all": "afficher les {count} dépendances",
"optional": "optionnelle"
"optional": "optionnelle",
"view_vulnerabilities": "Voir les vulnérabilités"
},
"peer_dependencies": {
"title": "Dépendances peer ({count})",
Expand Down Expand Up @@ -195,6 +238,14 @@
"title": "Essayer",
"choose": "choisir un playground"
},
"metrics": {
"esm": "ES Modules supportés",
"cjs": "CommonJS supporté",
"no_esm": "Pas de support des ES Modules",
"types_included": "Types inclus",
"types_available": "Types disponibles via {package}",
"no_types": "Pas de types TypeScript"
},
"license": {
"view_spdx": "Voir le texte de la licence sur SPDX"
},
Expand Down Expand Up @@ -627,6 +678,31 @@
"package": "super",
"managers": "gestionnaires de paquets"
}
},
"contributors": {
"title": "Contributeurs",
"description": "npmx est entièrement open source, construit par une incroyable communauté de contributeurs. Rejoignez-nous et construisons l'expérience de navigation pour npm dont nous avons toujours rêvés, ensemble.",
"loading": "Chargement des contributeurs...",
"error": "Échec du chargement des contributeurs",
"view_profile": "Voir le profil GitHub de {name}"
},
"get_involved": {
"title": "Participer",
"contribute": {
"title": "Contribuer",
"description": "Aidez-nous à créer une meilleure expérience npm.",
"cta": "Voir sur GitHub"
},
"community": {
"title": "Rejoindre la communauté",
"description": "Discutez, posez des questions et partagez des idées.",
"cta": "Joindre le Discord"
},
"follow": {
"title": "Rester à jour",
"description": "Découvrez les dernières nouveautés de npmx.",
"cta": "Suivre sur Bluesky"
}
}
},
"header": {
Expand Down
84 changes: 80 additions & 4 deletions lunaria/files/fr-FR.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
"found_packages": "{count} paquets trouvés",
"updating": "(mise à jour...)",
"no_results": "Aucun paquet trouvé pour « {query} »",
"results": "Résultats de recherche",
"not_taken": "{name} n'est pas pris",
"claim_prompt": "Réserver ce nom de paquet sur npm",
"claim_button": "Réserver « {name} »",
Expand All @@ -38,20 +39,44 @@
}
},
"nav": {
"main_navigation": "Barre de navigation",
"popular_packages": "Paquets populaires",
"search": "recherche",
"settings": "paramètres",
"back": "Retour"
},
"settings": {
"title": "paramètres",
"tagline": "personnalisez votre expérience npmx",
"meta_description": "Personnalisez votre expérience npmx.dev avec votre thème, langage et préférences d'affichage.",
"sections": {
"appearance": "Apparence",
"display": "Affichage",
"language": "Langue"
},
"relative_dates": "Dates relatives",
"relative_dates_description": "Afficher « il y a 3 jours » au lieu des dates complètes",
"include_types": "Inclure {'@'}types à la commande d'installation",
"include_types_description": "Inclure les paquets {'@'}types à la commande d'installation pour les paquets non typés",
"hide_platform_packages": "Masquer les paquets spécifiques à la plateforme dans la recherche",
"hide_platform_packages_description": "Masquer les paquets binaires natifs comme {'@'}esbuild/linux-x64 des résultats",
"theme": "Thème",
"theme_light": "Clair",
"theme_dark": "Sombre",
"theme_system": "Système",
"language": "Langue de l'interface",
"help_translate": "Aidez à traduire npmx"
"help_translate": "Aidez à traduire npmx",
"accent_colors": "Couleurs d'accentuation",
"clear_accent": "Supprimer la couleur d'accentuation",
"translation_progress": "Progression de la traduction"
},
"i18n": {
"missing_keys": "{count} traduction manquante | {count} traductions manquantes",
"copy_keys": "Copier les noms",
"show_more_keys": "Afficher {count} de plus...",
"contribute_hint": "Aidez à améliorer cette traduction en ajoutant les entrées manquantes.",
"edit_on_github": "Modifier sur GitHub",
"view_guide": "Guide de traduction"
},
"common": {
"loading": "Chargement...",
Expand All @@ -63,6 +88,8 @@
"retry": "Réessayer",
"copy": "copier",
"copied": "copié !",
"skip_link": "Passer au contenu principal",
"close_modal": "Fermer la fenêtre",
"show_more": "afficher plus",
"warnings": "Avertissements :",
"go_back_home": "Retour à l'accueil",
Expand All @@ -83,6 +110,7 @@
"not_latest": "(pas la dernière)",
"verified_provenance": "Provenance vérifiée",
"view_permalink": "Voir le lien permanent pour cette version",
"navigation": "Navigation du paquet",
"deprecation": {
"package": "Ce paquet a été déprécié.",
"version": "Cette version a été dépréciée.",
Expand All @@ -91,7 +119,8 @@
"stats": {
"license": "Licence",
"deps": "Dépendances",
"install_size": "Taille d'installation",
"install_size": "Taille d'install.",
"vulns": "Vulnérabilités",
"updated": "Mis à jour",
"view_dependency_graph": "Voir le graphe de dépendances",
"inspect_dependency_tree": "Inspecter l'arbre de dépendances"
Expand All @@ -102,14 +131,27 @@
"issues": "issues",
"jsr": "jsr",
"code": "code",
"docs": "docs"
"docs": "docs",
"fund": "donner"
},
"docs": {
"not_available": "Documentation non disponible",
"not_available_detail": "Nous n'avons pas pu générer la documentation pour cette version."
},
"get_started": {
"title": "Commencer",
"pm_label": "Gestionnaire de paquets",
"copy_command": "Copier la commande d'installation",
"view_types": "Voir {package}"
},
"create": {
"title": "Créer un nouveau projet",
"copy_command": "Copier la commande de création"
},
"run": {
"title": "Exécuter",
"locally": "Exécuter localement"
},
"readme": {
"title": "Readme",
"no_readme": "Aucun README disponible.",
Expand Down Expand Up @@ -141,7 +183,8 @@
"title": "Dépendances ({count})",
"list_label": "Dépendances du paquet",
"show_all": "afficher les {count} dépendances",
"optional": "optionnelle"
"optional": "optionnelle",
"view_vulnerabilities": "Voir les vulnérabilités"
},
"peer_dependencies": {
"title": "Dépendances peer ({count})",
Expand Down Expand Up @@ -195,6 +238,14 @@
"title": "Essayer",
"choose": "choisir un playground"
},
"metrics": {
"esm": "ES Modules supportés",
"cjs": "CommonJS supporté",
"no_esm": "Pas de support des ES Modules",
"types_included": "Types inclus",
"types_available": "Types disponibles via {package}",
"no_types": "Pas de types TypeScript"
},
"license": {
"view_spdx": "Voir le texte de la licence sur SPDX"
},
Expand Down Expand Up @@ -627,6 +678,31 @@
"package": "super",
"managers": "gestionnaires de paquets"
}
},
"contributors": {
"title": "Contributeurs",
"description": "npmx est entièrement open source, construit par une incroyable communauté de contributeurs. Rejoignez-nous et construisons l'expérience de navigation pour npm dont nous avons toujours rêvés, ensemble.",
"loading": "Chargement des contributeurs...",
"error": "Échec du chargement des contributeurs",
"view_profile": "Voir le profil GitHub de {name}"
},
"get_involved": {
"title": "Participer",
"contribute": {
"title": "Contribuer",
"description": "Aidez-nous à créer une meilleure expérience npm.",
"cta": "Voir sur GitHub"
},
"community": {
"title": "Rejoindre la communauté",
"description": "Discutez, posez des questions et partagez des idées.",
"cta": "Joindre le Discord"
},
"follow": {
"title": "Rester à jour",
"description": "Découvrez les dernières nouveautés de npmx.",
"cta": "Suivre sur Bluesky"
}
}
},
"header": {
Expand Down