Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 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