2010-06-03 3 views
8

Cercare suggerimenti e/o strumenti su come lavorare efficientemente con i file PO gettext quando si effettuano piccole modifiche a valori msgid di grandi dimensioni.Come lavorare efficientemente con i file PO gettext quando si effettuano piccole modifiche a valori di testo grandi

Esempio: abbiamo molti messaggi multi-frase/multi-paragrafo che sono memorizzati nei nostri file di catalogo dei messaggi PO. Se apportiamo una modifica molto piccola a un messaggio, magari modificando una singola frase o addirittura correggendo la punteggiatura, perdiamo la nostra traduzione originale quando eseguiamo l'utilità msgmerge.

Invece di ri-tradurre i messaggi lunghi (che sono già passati attraverso un processo di approvazione editoriale) da zero, i nostri traduttori tornano alle copie di backup dei loro file PO e cercano manualmente il testo dell'ultima coppia di traduzione msgid/msgstr che quindi differiscono rispetto ai valori msgid correnti per vedere cosa è cambiato, seguito da una copia e incolla dell'ultima traduzione che poi modificano per riflettere il valore msgid aggiornato.

Questo è un sacco di lavoro! Certamente ci deve essere un modo migliore per gestire questo tipo di flusso di lavoro?

Esiste un modo migliore per archiviare e trovare le traduzioni precedenti che non sono più in un file PO? Un'idea che viene in mente è quella di memorizzare un ID di messaggio unico nel testo dei nostri messaggi o nei commenti che precedono il nostro messaggio e utilizzare questo ID per recuperare le precedenti coppie di traduzione msgid/msgstr per la revisione. O ci sono editori o servizi online che rendono questo processo più efficiente?

Grazie, Malcolm

risposta

5

s' Virtaal supporto di memoria di traduzione probabilmente può aiutare con questo. Se le tue unità originali sono nella memoria di traduzione, verranno mostrate (con differenze) entro un certo margine di cambiamento (in base alla distanza di Levenshtein). Conterrà comunque la traduzione originale (non modificata), ma almeno il testo originale è più facilmente accessibile e le differenze evidenziate.

Non sono sicuro al 100%, ma Pootle potrebbe anche offrire una soluzione basata sul Web. Se hai bisogno di aiuto, chiedi in #pootle su FreeNode.

Il miglioramento più generale è, ovviamente, per separare/segmentare le unità il più lontano possibile.

+0

Grazie Walter. Cordiali saluti, Malcolm – Malcolm

9

Ho cercato un modo per apportare modifiche minori agli msgids senza disturbare le traduzioni esistenti - ad esempio, correzioni di errori di battitura nel testo di origine. Ecco una ricetta che ho appena lavorato fuori che non coinvolge siti web:

  1. Utilizzare msgen da GNU gettext per generare un file po Inglese-a-Inglese:

    msgen project.pot >corrections.po

  2. manualmente modifica lo msgstr s in "corrections.po" per riflettere le correzioni di errore effettuate nel testo di origine, quindi abbiamo una mappatura da stringhe non corrette a corretti. (Non ho pensato a come automatizzare questo bit.)

  3. Per ogni traduzione "reale" (ad esempio ca.po): abusare poswap dal Toolkit Tradurre (translate-toolkit in Ubuntu) per modificare le msgid:

    poswap -i corrections.po -t ca.po -o ca.new.po

Questo sembra perdi i commenti di intestazione e le stringhe obsolete dai file GNU gettext po, ma aggiustarli manualmente è molto meno lavoro che modificare manualmente i msgid in ogni traduzione (e potrebbe probabilmente essere facilmente script).

(Ovviamente, questo dovrebbe essere usato solo in circostanze eccezionali, in cui siete assolutamente sicuri che nessuno dei traduttori devono avere l'opportunità di ri-rivedere le loro traduzioni.)

+0

Molto intelligente. Grazie JTN. Saluti, Malcolm – Malcolm