Lingo.dev + .po (Gettext)

Lingo.dev CLI traduit les fichiers .po GNU gettext tout en préservant les références msgid, les métadonnées et les conventions de formatage spécifiques à gettext. Le CLI suit exactement la spécification GNU gettext, fonctionne avec les outils xgettext, msgfmt et Poedit, gère msgctxt pour la désambiguïsation, prend en charge les règles complexes de formes plurielles et préserve toutes les informations de traduction et de compilation.

Configuration rapide

Configuration pour les fichiers d'objets portables gettext :

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de"]
  },
  "buckets": {
    "po": {
      "include": ["locale/[locale]/LC_MESSAGES/messages.po"]
    }
  }
}

Rappel : [locale] est un placeholder qui doit rester littéralement dans la configuration, car il est remplacé par la locale réelle pendant l'exécution du CLI.

Traduire les fichiers PO

npx lingo.dev@latest i18n

Préserve les références msgid, les commentaires des traducteurs et les métadonnées gettext tout en mettant à jour les traductions msgstr.

Gestion de la structure Gettext

Traduction de message basique

#: src/main.c:42
msgid "Welcome to our application"
msgstr "Bienvenue dans notre application"

#: src/dialog.c:15
#, c-format
msgid "You have %d new messages"
msgstr "Vous avez %d nouveaux messages"

Formes plurielles

#: src/counter.c:28
msgid "One file selected"
msgid_plural "%d files selected"
msgstr[0] "Un fichier sélectionné"
msgstr[1] "%d fichiers sélectionnés"

Gestion du contexte

#: src/menu.c:12
msgctxt "menu item"
msgid "File"
msgstr "Fichier"

#: src/toolbar.c:8
msgctxt "document type"
msgid "File"
msgstr "Fichier"

Préservation des métadonnées

Informations d'en-tête PO


# Fichier de traduction pour MyApp

# Copyright (C) 2024 MyCompany

# Ce fichier est distribué sous la même licence que le package MyApp.

#
msgid ""

msgstr ""
"Project-Id-Version: MyApp 1.0\n"
"Report-Msgid-Bugs-To: bugs@example.com\n"
"POT-Creation-Date: 2024-01-15 10:30+0000\n"
"Language: fr\n"
"Content-Type: text/plain; charset=UTF-8\n"

Toutes les métadonnées d'en-tête et les commentaires des traducteurs sont préservés exactement.

Types de commentaires

  • Commentaires du traducteur : # Ceci nécessite un contexte
  • Commentaires extraits : #. Note du développeur concernant l'utilisation
  • Commentaires de référence : #: src/file.c:123
  • Commentaires d'indicateurs : #, c-format, fuzzy

Configuration avancée

Domaines multiples

"po": {
  "include": [
    "locale/[locale]/LC_MESSAGES/messages.po",
    "locale/[locale]/LC_MESSAGES/errors.po"
  ]
}

Verrouillage des identifiants de message

"po": {
  "include": ["locale/[locale]/LC_MESSAGES/messages.po"],
  "lockedKeys": ["version", "copyright"]
}