2011-12-14 12 views
17

Ecco il mio problema: abbiamo i file .ts per nove lingue diverse per il nostro prodotto. Abbiamo aggiunto circa 100 nuove stringhe che devono essere tradotte, ma alcune sono per la nostra prossima versione e altre per il rilascio successivo. Abbiamo incontrato problemi con i traduttori che hanno perso stringhe o che hanno tradotto stringhe in anticipo. Vogliamo essere in grado di inviare loro un file .ts più piccolo contenente solo le stringhe che vogliamo tradurre ora, e quindi unire il file .ts nel file .ts più grande contenente il resto della traduzione.Unisci file di traduzione (.ts) con file .ts esistenti utilizzando QT Utilities (lconvert)

I nostri traduttori sono tenuti a utilizzare QT Linguist (in precedenza li abbiamo lasciati modificare l'XML non elaborato con risultati meno stellari).

Una soluzione sarebbe utilizzare i contesti, ma il nostro team di sviluppo non è molto entusiasta di questa idea. Un altro sarebbe quello di unire i file .ts a mano, ma sembra una ricetta per tagliare gli errori di pasta &.

C'è un metodo con lupdate & il file di progetto per aggiungere o unire file .ts secondari? Ho letto i forum su QT-land senza trovare la risposta, ma gli switch in lupdate alludono alla possibilità di puntare ad altri file di traduzione. Nello specifico l'interruttore -PRO che dice:

-pro <filename> 
     Name of a .pro file. Useful for files with .pro file syntax but 
     different file suffix. Projects are recursed into and merged. 

Esempio 1: abbiamo un file .ts tedesco, vogliamo aggiungere 20 stringhe da un file separato traduzione tedesca in modo che il file di traduzione primario contiene tutte le stringhe tra cui il 20 nuovi.

Esempio2: abbiamo un file .ts tedesco, vogliamo aggiungere 20 stringhe da un file di traduzione tedesco separato in modo che il file di traduzione secondario venga unito al primario durante lupdate in modo stringhe incluse le 20 nuove.

Qualcuno ha fatto uno di questi (e potrebbe funzionare) e può darmi qualche informazione?

risposta

30

La risposta non utilizza lupdate, si trova in un'altra utility chiamata lconvert. E 'abbastanza facile per creare un file secondario che contiene solo le stringhe che ti interessa (e cancellare quelle stesse stringhe dal file primario), quindi eseguire:

lconvert -i primary.ts secondary.ts -o complete.ts

Questo richiederà tutte le stringhe dalla due file di input e metterli insieme nel file di output. Usando questo metodo sono stato in grado di creare un file di differenza zero (diverso dal timestamp) del file originale che avrei diviso i due file secondari principali da &.

Questa domanda non ha ricevuto molta attenzione, ma forse qualcuno avrà lo stesso problema e questo aiuterà.

2

grazie per questo suggerimento. Sembra funzionare correttamente per il mio caso: Ho provato ad estrarre stringhe aggiornate e nuove dal mio progetto, che è attualmente in traduzione in una versione/versione precedente che non ho ancora le stringhe tradotte.

Il problema era inviare le stringhe nuove/aggiornate solo ai traduttori.

Ho passato le stringhe più vecchie in stato risolto, aggiungendo una nuova stringa usando Lupdate, faccio una ricerca usando OxygenXML Editor con un XPath "/ TS/context/message [not (translation/@ type)]" per cancellare le stringhe più vecchie, e puliscilo da inutili spazi vuoti e ritorni a bordo.

Ho provato un'unione utilizzando lconvert con la soluzione, per unire stringhe tradotte: vecchie e nuove. Passa correttamente in lease e viene visualizzato correttamente.

+2

felice questo ha funzionato per voi. Come punto di riferimento dell'etichetta SO, in generale, se una risposta funziona per te, fai clic sulla freccia su di quella risposta e, facoltativamente, aggiungi un commento per chiarire come ha funzionato per te, invece di aggiungere una risposta che dovrebbe avere davvero solo stato un commento sulla risposta originale. Nessuna preoccupazione però. – delliottg

-3

Uso Molteplici traduzioni

più file di traduzione possono essere installati in un'applicazione. Le ricerche vengono ricercate nell'ordine inverso rispetto al quale sono state installate, quindi il file di traduzione installato più di recente viene ricercato per le traduzioni prima e il primo file di traduzione viene cercato per ultimo. La ricerca si interrompe non appena viene trovata una traduzione contenente una stringa corrispondente.

Questo meccanismo rende possibile che una specifica traduzione sia "selezionata" o data prioritaria rispetto alle altre; è sufficiente disinstallare il traduttore dall'applicazione passandolo alla funzione QApplication :: removeTranslator() e reinstallarlo con QApplication :: installTranslator(). Sarà quindi la prima traduzione da cercare per le stringhe corrispondenti.

collegamento prova: QTranslator Class Reference

+1

questo non risolve affatto la domanda - down down. – ndbd

Problemi correlati