Che cos'è il formato di file PO?
I file .po sono file GNU gettext Portable Object - il formato sorgente modificabile dall'uomo per le traduzioni software. Il formato è utilizzato in una vasta gamma di progetti: utility GNU/Linux, applicazioni PHP, pacchetti Python, temi e plugin WordPress e molte altre applicazioni open-source.
Un file .po è un testo semplice in UTF-8 organizzato in voci accoppiate: msgid (la stringa originale nella lingua sorgente) e msgstr (l'equivalente tradotto). Le righe di commento precedute da # contengono note del traduttore, commenti estratti dal codice sorgente, riferimenti ai file e flag «fuzzy». Le voci con forme plurali utilizzano le varianti msgid_plural e msgstr[n] indicizzate, regolate da un'espressione Plural-Forms nell'intestazione del file.
Il flusso di lavoro della traduzione segue tre tipi di file: gli sviluppatori estraggono le stringhe traducibili in un modello .pot, i traduttori lo copiano per ogni lingua e compilano i valori msgstr, quindi msgfmt compila ogni .po in un file binario .mo che l'applicazione carica all'avvio. Il file .mo è leggibile solo dalla macchina - si modifica sempre il .po, mai l'output compilato.
I file .po possono essere modificati in un editor di testo semplice, ma strumenti dedicati come Poedit offrono il controllo degli errori, suggerimenti per le corrispondenze parziali (fuzzy) e assistenti per le forme plurali. Piattaforme web come Weblate supportano la traduzione collaborativa. Il formato è stabile e retrocompatibile da quando GNU gettext è stato introdotto nel 1995.
Sicurezza e incolumità
RISCHIO: LOWUn file .po contiene solo testo di traduzione e commenti - non c'è codice eseguibile, quindi il file stesso è innocuo. L'unica cautela pratica: un file di traduzione malevolo inserito in un tema/plugin potrebbe iniettare testo di interfaccia fuorviante (es. link o istruzioni alterati), quindi utilizzare file di lingua solo dal tema/plugin ufficiale o dalla sorgente di traduzione, non download di «traduzioni» casuali.
Dettagli del formato
in sintesi- Immagine disco / immagine partizione (raro) - Il nome legacy del database «Disk image file» riflette un'etichettatura rara o errata; .po non è un'estensione standard per le immagini disco.
Programmi che aprono file PO
Dettagli tecnici
specifiche approfondite| Tipo di formato | Testo semplice, orientato alle righe (sintassi GNU gettext PO) |
| Codifica | UTF-8 (charset dichiarato nel campo Content-Type dell'intestazione); i cataloghi legacy possono utilizzare codifiche ISO-8859-x |
| Tipo MIME | text/x-gettext-translation |
| Struttura della voce | Coppie msgid / msgstr; msgctxt opzionale per la disambiguazione contestuale di stringhe sorgente identiche |
| Voce di intestazione | La prima voce ha un msgid vuoto; il suo blocco msgstr contiene Project-Id-Version, Content-Type, Plural-Forms e altri metadati del catalogo |
| Forme plurali | msgid_plural con varianti msgstr[0], msgstr[1], ... indicizzate; l'espressione dell'intestazione Plural-Forms controlla quale forma applicare per un dato conteggio |
| Tipi di commento | # (commento del traduttore), #. (commento estratto dal sorgente), #: (riferimento al file sorgente), #, (flag come fuzzy o c-format) |
| Flag fuzzy | #, fuzzy contrassegna una traduzione che necessita di revisione dopo che la stringa sorgente è cambiata; msgfmt esclude le voci fuzzy dall'output .mo compilato |
| Output compilato | Convertito in .mo binario (Machine Object) da msgfmt; il .mo è ciò che l'applicazione in esecuzione carica tramite gettext() |
| File modello | .pot (Portable Object Template) - lo scheletro non tradotto; tutti i file .po delle lingue derivano da esso tramite msginit o msgmerge |
| Dimensione tipica del file | 5 KB - 5 MB; varia in base al numero di stringhe traducibili nel progetto |
| Catena di strumenti | xgettext (estrazione stringhe dal sorgente), msginit (creazione nuovo .po), msgmerge (aggiornamento .po esistente), msgfmt (compilazione in .mo) |
| Piattaforma | Qualsiasi - Linux, macOS, Windows, BSD; ovunque sia disponibile GNU gettext o un'implementazione libintl compatibile |
| Ecosistema | Utilizzato da WordPress, Drupal, GNOME, KDE, Python gettext, PHP gettext e molti altri framework per l'internazionalizzazione (i18n) |
| Rilasciato | 1995 (GNU gettext) |
| Ultima versione | PO file syntax is stable; defined in the current GNU gettext manual |
| Standard aperto | Sì · royalty-free |
| Specifica | www.gnu.org |
Conversioni PO
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file PO.