Traduci file .po gettext
Un file .po è basato su chiavi di testo: la frase in inglese è la chiave. Contesti, slot per plurali e variabili in stile Python si trovano attorno a quel testo. KAERIS li conserva e scrive gli slot per plurali necessari alla lingua di destinazione.
KAERIS ha tradotto questa pagina e controllato ogni riga ritraducendola. Un madrelingua non l'ha ancora revisionata. Originale in inglese
Come viene costruito un file .po
Ogni voce ha un msgid (il testo sorgente) e un msgstr (la traduzione). msgctxt distingue due frasi identiche. I plurali usano msgid_plural e uno msgstr[n] per ogni forma, e la riga Plural-Forms nell'header indica quante forme ha la lingua.
msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: app/views.py:12
msgid "Welcome back, %(name)s!"
msgstr ""
#: app/views.py:20
msgid "%(count)d file"
msgid_plural "%(count)d files"
msgstr[0] ""
msgstr[1] ""
msgctxt "menu"
msgid "Open"
msgstr ""
msgctxt "verb"
msgid "Open"
msgstr ""
Cosa osservare nelle traduzioni .po
Il contesto cambia la parola
"Apri" come voce di menu e "Apri" come verbo si traducono diversamente. KAERIS legge il contesto insieme al testo e lo segnala quando la stessa parola sorgente viene tradotta in due modi. Nell'esecuzione reale sottostante, entrambi sono stati restituiti come "Öffnen", che è corretto in tedesco, e i contesti sono rimasti nel file.
Gli slot per plurali differiscono per lingua
L'inglese ne ha due, il russo tre, l'arabo sei. In un'esecuzione in russo, l'header diventa
nplurals=3e ogni voce plurale ottiene tre slotmsgstr.Variabili in stile Python e C
%(name)s,%d,{name}devono essere restituiti invariati, altrimenti l'app genera un errore a runtime.L'header e i riferimenti
L'header viene ricostruito con la lingua e la regola dei plurali. I commenti di riferimento sorgente (
#:) non vengono riportati nel file tradotto.
Un'esecuzione reale: tradotto in tedesco e controllato
Un'esecuzione reale, 27 ottobre 2026, nulla modificato manualmente: kaeris translate en.po --langs de con kaeris 0.2.35, 3,9 secondi, modello google/gemini-2.5-flash-lite, il predefinito del piano gratuito. Sotto, il file tedesco che ha scritto e cosa dice kaeris check al riguardo.
# Generated by KAERIS i18n Tool # Language: de msgid "" msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Language: de\n" msgid "Welcome back, %(name)s!" msgstr "Willkommen zurück, %(name)s!" msgid "%(count)d file" msgid_plural "%(count)d files" msgstr[0] "%(count)d Datei" msgstr[1] "%(count)d Dateien" msgctxt "menu" msgid "Open" msgstr "Öffnen" msgctxt "verb" msgid "Open" msgstr "Öffnen"
$ kaeris check --source en.po --langs de ✓ de: complete & placeholder-safe ✓ all locales complete & placeholder-safe
Cosa fa KAERIS con esso
Voci e contesti conservati
Le chiavi di testo,
msgctxte le coppie di plurali vengono restituiti nello stesso ordine.Slot per plurali dalla lingua di destinazione
Il numero di slot
msgstr[n]segue la lingua, verificato in un'esecuzione con il russo.Controllo gratuito per questo formato
Il controllo gratuito su /check legge questo formato e viene eseguito senza chiave o account. Anche il comando da terminale
kaeris checklo legge: gestisce tutti i 13 formati da kaeris 0.2.35, con le stesse regole e nulla inviato da nessuna parte.
Eseguilo in tre passaggi
Installa la CLI
Esegui
pip install kaeris.Traduci il catalogo
Esegui
kaeris translate django.po --langs de,ja. I file di output sono nominati per lingua.Controlla il risultato
Carica il sorgente e un .po tradotto sulla pagina di controllo gratuita per vedere variabili perse e termini incoerenti.
pip install kaeris kaeris translate locale/en/LC_MESSAGES/django.po --langs de,ja --verify
Domande
Gestisce le forme plurali per russo o arabo?
L'header per i plurali e il numero di slot msgstr[n] vengono scritti per la lingua di destinazione. In un'esecuzione con il russo, l'esempio sorgente ha prodotto nplurals=3 e tre slot.
E per msgctxt?
Il contesto rimane collegato alla voce, quindi due sorgenti identici con contesti diversi sono stringhe separate. Il controllo avvisa quando vengono restituiti tradotti in modo diverso.
È gratuito?
Sì, senza account: 10.000 caratteri per file e fino a 8 lingue per esecuzione. Una chiave API gratuita aumenta il limite di file a 50.000 caratteri. A vita costa $79 una tantum, sulla tua chiave OpenRouter; i piani mensili partono da $19. Prezzi
Posso eseguirlo dal terminale o in CI?
Sì. pip install kaeris, quindi kaeris translate django.po --langs de,ja. Vedi anche Django. La GitHub Action esegue la stessa traduzione in una pull request. Documentazione CLI · GitHub Action
Continua
Riferimento CLI · Riferimento Check · Traduci nel browser · Controllo gratuito · Converti formati · Pseudo-localizzazione
Altri formati: JSON · YAML · ARB · XLIFF · .strings · .xcstrings · .properties · .resx · CSV · Markdown · Fluent · Android XML