Communitygithub.com

YepAPI/compétences-i18n

Modèles next-intl et react-i18next, routage localisé, extraction de messages, pluriel, RTL et formatage Intl API.

Qu'est-ce que compétences-i18n ?

Cette compétence est un guide complet pour implémenter l'internationalisation (i18n) dans les applications React, en couvrant à la fois Next.js App Router (via next-intl) et les React SPA (via react-i18next). Elle fournit des règles claires pour la détection de la langue, le routage par locale (ex : /en/about, /fr/about), la gestion des fichiers de traduction JSON namespaceés, et l'extraction de messages. Elle explique l'utilisation des formats ICU pour la pluralisation et l'interpolation, ainsi que le formatage des dates, nombres et devises avec les API Intl standard, évitant les formats codés en dur. La compétence met également l'accent sur le support RTL (Right-to-Left) avec des propriétés CSS logiques et une directive dir="rtl" sur l'élément HTML, et recommande le stockage de la locale dans l'URL pour le SEO et le partage. Enfin, elle liste les anti-patrons à éviter, comme la concaténation de chaînes traduites, le chargement de toutes les locales upfront et l'utilisation de CSS left/right pour la mise en page.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/YepAPI/skills/tree/HEAD/skills/i18n

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

i18n

Règles

  • Next.js App Router : utilisez next-intl — hook useTranslations(), NextIntlClientProvider, middleware pour la détection de la langue
  • React SPA : utilisez react-i18next — hook useTranslation(), i18n.init() avec i18next-http-backend pour le chargement paresseux
  • Routage tenant compte de la locale : /en/about, /fr/about — utilisez un middleware pour détecter l'en-tête Accept-Language et rediriger
  • Fichiers de traduction : JSON par locale et par namespace — messages/en/common.json, messages/fr/common.json
  • Découpage par namespace : un namespace par fonctionnalité/page — auth.json, dashboard.json, settings.json — ne charger que ce dont la page a besoin
  • Pluriel : utilisez le format de message ICU — {count, plural, one {# élément} other {# éléments}}
  • Interpolation : t('salutation', { nom }) — ne concaténez jamais les chaînes traduites
  • Formatage des dates/nombres/monnaies : utilisez Intl.DateTimeFormat, Intl.NumberFormat — ne codez jamais les formats en dur
  • Support RTL : utilisez dir="rtl" sur <html>, propriétés CSS logiques (margin-inline-start pas margin-left), testez avec de l'arabe ou de l'hébreu

Modèles

// next-intl: middleware.ts
import createMiddleware from "next-intl/middleware";
export default createMiddleware({
  locales: ["en", "fr", "de", "ar"],
  defaultLocale: "en",
});

// next-intl: utilisation dans un composant
import { useTranslations } from "next-intl";
function ProductCard({ prix, date }: { prix: number; date: Date }) {
  const t = useTranslations("products");
  const format = useFormatter();
  return (
    <div>
      <h2>{t("titre")}</h2>
      <p>{format.number(prix, { style: "currency", currency: "USD" })}</p>
      <p>{format.dateTime(date, { dateStyle: "medium" })}</p>
    </div>
  );
}

À éviter

  • Coder en dur des chaînes destinées à l'utilisateur — chaque chaîne doit passer par t()
  • Concaténer des chaînes pour le texte traduit — utilisez l'interpolation ou le format ICU
  • Charger toutes les locales upfront — chargez paresseusement par locale et namespace
  • Utiliser left/right en CSS pour la mise en page — utilisez des propriétés logiques pour la compatibilité RTL
  • Stocker la locale uniquement dans localStorage — utilisez une locale basée sur l'URL pour le SEO et la partageabilité

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

YepAPI/skills

WCAG 2.1 AA — semantic HTML, keyboard navigation, screen readers.

YepAPI/skills

Experiment setup, variant splitting, statistical significance, and feature flag integration.

YepAPI/skills

CRUD generators, data tables, user management, role-based access, and bulk operations.

YepAPI/skills

Monitor what ChatGPT and Gemini say about your brand using YepAPI.

YepAPI/skills

Queue workers with BullMQ/Inngest/Trigger.dev, job retries, dead letter queues, concurrency.

YepAPI/skills

Commander.js, interactive prompts with Clack, spinners, colors, config files, exit codes, and npm publishing.

YepAPI/skills

cmdk integration, Cmd+K trigger, fuzzy search, grouped actions, keyboard navigation, and dynamic action registration.

YepAPI/skills

Content planning with trend and sentiment data from YepAPI.

YepAPI/skills

Content calendar, keyword-driven planning, and content briefs.

YepAPI/skills

Theme switching with CSS variables, system preference detection, next-themes, and persistence.

YepAPI/skills

Threaded comments, @mentions, reactions, moderation queue, optimistic UI, and cursor pagination.

YepAPI/skills

Competitive analysis between domains using YepAPI.

YepAPI/skills

Layout grids, KPI cards, data tables with sorting/filtering, sidebar navigation, and responsive breakpoints.

YepAPI/skills

Data encryption — TLS everywhere, AES-256-GCM for PII, bcrypt passwords, encrypted backups.

YepAPI/skills

Chart patterns with Recharts/Nivo/D3, responsive containers, color scales, and accessibility.

YepAPI/skills

Drizzle schema definition, push vs migrate, type-safe queries, relations, transactions, and prepared statements.

YepAPI/skills

Upload handling, resize/compress, CDN delivery, blur placeholders, and next/image patterns.

YepAPI/skills

Local business and Google Maps research using YepAPI.

YepAPI/skills

Cursor-based pagination, IntersectionObserver, virtualized lists with @tanstack/react-virtual, and scroll position restoration.

YepAPI/skills

Chat UI components, streaming responses with AI SDK, context window management, and RAG patterns.

Skills associés