Come tradurre file Excel contenenti tag HTML

(3 voti)
Come tradurre file Excel contenenti tag HTML

Molto spesso capita di ricevere file Excel contenenti testo da tradurre copiato e incollato da altre fonti. Alcuni committenti pensano, più o meno ingenuamente, di favorire il lavoro del traduttore fornendo i testi incolonnati in un foglio di calcolo. La questione si complica quando il testo inserito nelle celle a sua volta contiene tag HTML o XML.

Nonostante sia possibile tradurre direttamente i file Excel in qualunque programma di traduzione assistita, di default i tag interni alle celle non appariranno come tali, ma verranno visualizzati come testo semplice. Si corre dunque il rischio di eliminarne qualcuno durante la traduzione. Ciò deriva dal fatto che i filtri usati per importare Excel nella maggior parte dei CAT non sono predisposti per l’analisi dei tag, come invece succede per i filtri dei formati strutturati, come HTML o XML. Alcuni programmi, fra cui memoQ, permettono di impostare più di un filtro ricorsivamente (memoQ chiama questa funzione "cascading filters"), mentre altri, come SDL Trados Studio, consentono di aggiungere espressioni regolari per catturare il contenuto cosiddetto "embedded". Chi lavora con OmegaT o con altri strumenti che non dispongono di una funzione analoga dovrà eseguire una serie di operazioni preliminari.

Il problema posto da questo tipo di file è noto nel settore ed è stato oggetto di vari altri articoli da parte di colleghi e altri specialisti. Segnaliamo per lo meno l’articolo "Dealing with embedded XML and HTML in an Excel file" di Kevin Lossner, la discussione "Embedded HTML in .xlsx file" del forum SDL Trados support di ProZ e l’articolo "HTML Data in Spreadsheet Files" sul blog Lockblock.

A scopo illustrativo abbiamo creato un semplice file d’esempio con alcuni tag HTML, visibile nella seguente schermata:
excel-html-01

Se si apre il file in OmegaT, i tag vengono visualizzati come testo semplice, poiché OmegaT utilizza il filtro Microsoft Open XML per importare il contenuto dell’Excel:


excel-html-01b

Per bloccare questi tag è necessario ricorrere a Rainbow (la GUI per Okapi Framework), strumento gratuito di cui abbiamo scritto in altre occasioni. Rainbow possiede un filtro per il formato *.xlsx, però attualmente questo filtro non ha la funzione di "inline code recognition", ovvero non dispone di un’opzione da interfaccia per taggare il codice non traducibile. Altri filtri invece hanno quest’opzione, come il filtro XML Stream, di solito utilizzato per lavorare su file XML complessi. Occorre dunque salvare prima il file Excel come XML e successivamente convertirlo con Rainbow (Okapi Framework). Ecco il procedimento passo per passo:

  1. Aprire il file in Excel
  2. Salvare il file come Microsoft XML ("Save as XML Spreadsheet").
  3. Aprire Rainbow
  4. Trascinare il file XML nella scheda Input List 1.
  5. Scegliere il filtro XML Stream Filter.
  6. Creare una copia di questo filtro.
  7. Fare clic su Edit.
  8. Aggiungere il seguente codice in coda a quello già presente e salvare la configurazione del filtro, in modo da poterla riutilizzare per progetti successivi.
useCodeFinder: true
codeFinderRules: |-
  #v1
  count.i=3
  rule0=(\A[^<]*?>)|(<[\w!?/].*?(>|\Z))
  rule1=(\{.*\})
  rule2=\[[\w_=]+\]
  sample=
  useAllRulesWhenTesting.b=true

La rule0 è un’espressione regolare che cattura tutti i tag HTML, a prescindere se sono scritti in modo esplicito (cioè con le parentesi angolari, i segni di maggiore e minore), o codificati come caratteri escape. Quando si salva il file Excel nel formato Microsoft XML i segni di maggiore e minore vengono infatti convertiti nei rispettivi caratteri codificati. A volte questa conversione è già presente a monte, nel testo contenuto nel file Excel. Ciò nonostante, l’espressione regolare alla base del CodeFinder interviene sul file XML dopo il parsing, operazione che converte tutti i caratteri codificati nella loro rappresentazione grafica, quindi non è necessario indicare i tag nelle due varianti, escaped e un-escaped. La rule1 invece trova tutti i segnaposto per variabili, elementi abbastanza abituali nei progetti di localizzazione. La regola presuppone che i placeholder siano del tipo "codice alfanumerico racchiuso fra parentesi graffe", come {count_videos}. La terza regola (indicata come rule2, perché si parte sempre dallo zero) trova i placeholder del tipo [customer_1=acme]. Chiaramente, la regex va modificata a seconda delle esigenze, trovando l’espressione che corrisponde ai pattern da non tradurre.

  1. Chiudere le due finestre di dialogo facendo clic su OK.
  2. Impostare le lingue, la codifica e le cartelle nelle schede Languages and Encodings e Other Settings.
  3. Dal menu Utilities, scegliere Translation Kit Creation.
  4. Scegliere il formato desiderato. Se si lavora con OmegaT si può creare il progetto completo oppure un file XLIFF
  5. In corrispondenza dello step Segmentation, si consiglia di attivare la segmentazione sul file marcando la casella Segment the source text using the following SRX rule e indicando il file SRX da utilizzare (il file defaultSegmentation.srx,  presente nella cartella Okapi/config). Questo passaggio è estremamente importante: così facendo si otterranno migliori coincidenze interne. Per ulteriori dettagli si rimanda a questo messaggio sul forum di OmegaT: http://tech.groups.yahoo.com/group/OmegaT/message/28640.
  6. Fare clic su Execute.
  7. Aprire il file XLIFF appena creato in OmegaT.


excel-html-02

I tag bloccati con questo procedimento nel file XLIFF hanno l’aspetto <x id="0"/> che OmegaT visualizza come <x0/> (dove 0 è un numero progressivo a seconda del numero di tag di ogni paragrafo; per limitarne il numero è conveniente segmentare durante la conversione e non lasciare che lo faccia OmegaT). Non è possibile sapere qual è il codice sottostante che è stato bloccato. In OmegaT il tag esplicito viene visualizzato come tooltip, passando il mouse sul tag, ma in questo caso il tooltip visualizza il tag del file XML (cioè <x id="0"/> nell’esempio), non il tag HTML bloccato da Rainbow. Si consiglia dunque di tenere aperta una copia del file originale durante la traduzione per risolvere eventuali dubbi. Ad esempio, non si saprà come tradurre una stringa come questa, "<x39/> has posted a new comment on <x40/>" senza sapere che il tag 40 corrisponde al placeholder "[datetime]", ovvero alla data in cui è stato pubblicato il commento.

  1. Dopo aver tradotto il file, creare il file d’arrivo.
  2. Aprire Rainbow.
  3. Trascinare il file manifest.xml in Rainbow nella scheda Input 1.
  4. Dal menu Utilities scegliere il comando Translation Kit Post-processing...
  5. Aprire il file XML in Excel e, se necessario, risalvarlo come *.xlsx.

Segnaliamo che con la versione di Rainbow disponibile alla data in cui scriviamo (la 6.0.22) i tag HTML escaped nell’XML originale vengono ripristinati come unescaped. Ciò provoca un errore quando si cerca di riaprire il file XML in Excel. Tuttavia, a seconda dei casi, è relativamente agevole convertire i tag (per esempio aprendo il file in Notepad++ e usando la funzione Encode Entities). In ogni caso, sappiamo che i programmatori degli Okapi Tools stanno lavorando su questo problema ed è assai probabile che al momento della pubblicazione di questo articolo sia già disponibile la versione aggiornata con il problema risolto.

Come spesso accade quando c’è di mezzo Rainbow, strumento molto potente ma in apparenza complicato, anche questo procedimento può apparire complesso a una prima lettura. Tuttavia, una volta che se ne ha compreso il funzionamento, non presenta particolari difficoltà e risulta assai utile per minimizzare gli errori, soprattutto nel caso di progetti di una certa portata.

Indichiamo comunque anche un altro procedimento, utile se le celle di Excel contenenti HTML contengono interi file HTML e non solo frammenti. In tal caso si può esportare ciascuna cella in un file a sé stante per mezzo di una macro. Riportiamo un esempio di macro, che andrà adattata a ciascun caso particolare. Questa macro crea un file di testo con estensione HTML per ogni cella della colonna B, usando il testo contenuto nella colonna A come nome del file.

Sub Export_Files()
    Dim sExportFolder, sFN
    Dim rName As Range
    Dim rHTML As Range
    Dim oSh As Worksheet
    Dim oFS As Object
    Dim oTxt As Object

    'sExportFolder = path to the folder you want to export to
    'oSh = The sheet where your data is stored
    sExportFolder = "C:\HTML"
    Set oSh = Sheet1

    Set oFS = CreateObject("Scripting.Filesystemobject")

    For Each rName In oSh.UsedRange.Columns("A").Cells
        Set rHTML = rName.Offset(, 1)

        'Add .txt to the article name as a file name
        sFN = rName.Value & ".html"
        Set oTxt = oFS.OpenTextFile(sExportFolder & "\" & sFN, 2, True)
        oTxt.Write rHTML.Value
        oTxt.Close
    Next
End Sub

Naturalmente, sarà poi necessaria una macro analoga per reimportare i file di testo tradotti nell’Excel. Ne segnaliamo una, solo a titolo di esempio: http://stackoverflow.com/questions/9833121/importing-multiple-text-files-to-excel.

Come di consueto, siamo a disposizione per eventuali chiarimenti e aperti a critiche e contributi che si possono lasciare come commenti all’articolo.

Qabiria white logo

Crediamo nell’aumento della produttività attraverso l’uso creativo della tecnologia.

Ultime notizie

Contatti

Qabiria Studio SLNE
Carrer Lleida, 3 1-2
08912 Badalona
(Barcelona)
SPAGNA

+34 675 800 826

qabiria

Inviaci un messaggio

Ricevi la newsletter

Vuoi leggere gli articoli e le novità di Qabiria direttamente nella posta?