Lingo.dev + .po (Gettext)

Lingo.dev CLI übersetzt GNU gettext .po-Dateien unter Beibehaltung von msgid-Referenzen, Metadaten und gettext-spezifischen Formatierungskonventionen. Die CLI folgt exakt der GNU gettext-Spezifikation, arbeitet mit xgettext, msgfmt und Poedit-Tools, verarbeitet msgctxt zur Disambiguierung, unterstützt komplexe Pluralformregeln und bewahrt alle Übersetzer- und Build-Informationen.

Schnelle Einrichtung

Konfiguration für gettext portable object Dateien:

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

Hinweis: [locale] ist ein Platzhalter, der wörtlich in der Konfiguration verbleiben sollte, da er während der CLI-Ausführung durch die tatsächliche Locale ersetzt wird.

PO-Dateien übersetzen

npx lingo.dev@latest i18n

Bewahrt msgid-Referenzen, Übersetzerkommentare und gettext-Metadaten, während msgstr-Übersetzungen aktualisiert werden.

Gettext-Strukturverarbeitung

Grundlegende Nachrichtenübersetzung

#: src/main.c:42
msgid "Welcome to our application"
msgstr "Willkommen in unserer Anwendung"

#: src/dialog.c:15
#, c-format
msgid "You have %d new messages"
msgstr "Sie haben %d neue Nachrichten"

Pluralformen

#: src/counter.c:28
msgid "One file selected"
msgid_plural "%d files selected"
msgstr[0] "Eine Datei ausgewählt"
msgstr[1] "%d Dateien ausgewählt"

Kontextverarbeitung

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

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

Metadaten-Erhaltung

PO-Header-Informationen


# Übersetzungsdatei für MyApp

# Copyright (C) 2024 MyCompany

# Diese Datei wird unter derselben Lizenz wie das MyApp-Paket verteilt.

#
msgid ""

msgstr ""
"Project-Id-Version: MyApp 1.0\n"
"Report-Msgid-Bugs-To: [email protected]\n"
"POT-Creation-Date: 2024-01-15 10:30+0000\n"
"Language: de\n"
"Content-Type: text/plain; charset=UTF-8\n"

Alle Header-Metadaten und Übersetzerkommentare werden exakt beibehalten.

Kommentartypen

  • Übersetzerkommentare: # Dies benötigt Kontext
  • Extrahierte Kommentare: #. Entwicklerhinweis zur Verwendung
  • Referenzkommentare: #: src/file.c:123
  • Flag-Kommentare: #, c-format, fuzzy

Erweiterte Konfiguration

Mehrere Domains

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

Message-IDs sperren

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