Passer au contenu principal

Intégration des frameworks

Configuration étape par étape de i18n-rosetta avec les frameworks populaires.

Hugo (TOML / YAML / Markdown)

Structure du projet

Hugo utilise i18n/ pour les traductions de chaînes de caractères et content/ pour le contenu des pages :

my-hugo-site/
├── i18n/
│ ├── en.toml ← source of truth
│ ├── fr.toml
│ └── ja.toml
├── content/
│ ├── posts/
│ │ ├── hello.md ← source (English)
│ │ ├── hello.fr.md
│ │ └── hello.ja.md
│ └── about.md
└── .env.local

Configuration

npm install --save-dev i18n-rosetta
i18n-rosetta.config.json
{
"version": 3,
"inputLocale": "en",
"localesDir": "./i18n",
"contentDir": "./content",
"format": "auto",
"languages": ["fr", "de", "ja", "es", "ko", "zh"]
}
i18n-rosetta sync # sync i18n string files + content files
i18n-rosetta sync --dry # preview changes without writing

Détails de la traduction du contenu

Front matter : Prend en charge les délimiteurs YAML (---) et TOML (+++). Traduit title, description, summary, subtitle, caption et linkTitle par défaut. Tous les autres champs (date, draft, tags, weight, slug, etc.) sont préservés. Personnalisez avec translatableFields dans votre configuration.

Protection des blocs : Les blocs de code, les shortcodes Hugo, le code en ligne et le HTML brut sont automatiquement protégés à l'aide d'espaces réservés sentinelles Unicode. Ils sont conservés intacts.

Convention de nommage des fichiers : Suit le modèle de traduction par nom de fichier de Hugo :

  • my-post.mdmy-post.fr.md
  • my-post.en.mdmy-post.fr.md (supprime le suffixe source)

Ignorer l'existant : Les fichiers traduits existants ne sont jamais écrasés. Supprimez un fichier cible pour forcer une nouvelle traduction.

Formes plurielles

Les paramètres régionaux TOML et YAML prennent en charge les formes plurielles CLDR :

[items]
one = "{{ .Count }} item"
other = "{{ .Count }} items"

Représentées en interne par items.one et items.other pour la comparaison, puis re-sérialisées dans le format sectionné correct lors de l'écriture.