Quale tecnica sarebbe il minimo sforzo per internazionalizzare (almeno in più lingue) le applicazioni Delphi esistenti?
-
04-07-2019 - |
Domanda
Ho sviluppato circa 300 applicazioni che vorrei fornire con funzionalità multilingua indipendenti dal sistema operativo. Ho scritto un traduttore just-in-time, ma è troppo lento nelle applicazioni con molti componenti. Cosa suggeriresti di fare?
Soluzione
Ho sentito che i componenti TsiLang sono belli, ma stai guardando un soluzione sul posto ...
Ho usato GNU gettext per Delphi che fa esattamente quello che vuoi, carica le traduzioni da un file di testo e sostituisce il testo nei componenti. Ha anche uno scanner pas / dfm per generare automaticamente il file di traduzione in inglese.
È anche possibile modificare automaticamente il codice sorgente pascal per iniettare la procedura gettext al posto delle stringhe statiche. Se non sbaglio, aggiunge semplicemente un carattere di sottolineatura come funzione, come di seguito.
ShowMessage('Hello'); // before
ShowMessage(_('Hello')); // after
Devo dire che sono passati 2 anni dall'ultimo utilizzo di questo metodo.
Una cosa rimarrà problematica, i componenti Delphi non sono abilitati all'unicode (D2009 lo risolve), quindi quando non cambi i componenti avrai comunque un supporto limitato per altre lingue.
Altri suggerimenti
Stiamo usando TsiLang e ne siamo molto soddisfatti.
Uno dei punti migliori è che puoi pre-tradurre il progetto con un dizionario (che hai compilato da traduzioni esistenti).
Una buona soluzione gratuita sarebbe GNU gettext per Delphi . Ha alcune capacità non presenti in TsiLang - ad esempio, puoi mettere le conoscenze su come contare le cose (finali diversi per uno, due, quattro, centodue, molti ...) nel file di traduzione in modo da non " devo insegnare ad ogni programma a conoscere queste cose.
La licenza per la parte Delphi è molto permissiva, ma non sono sicuro di quanto le cose GNU incluse influenzeranno la tua applicazione.
Ottieni Multilizer . È realizzato in Delphi e può gestire programmi Delphi come nessun altro con un supporto speciale per VCL. Puoi anche rifare gli schermi facilmente per ogni lingua. Con Multilizer puoi utilizzare diverse tecniche per tradurre ed eseguire il tuo programma.
Delphi 2009 ha aggiunto un Integrated Translation Environment / External Translation Manager ITE ed ETM sono ora disponibili sia per Delphi che per C ++ Builder.
Nell'articolo di Codegear: Novità in Delphi e C ++ Builder 2009 , dichiarano :
L'ambiente di traduzione integrato (ITE) è una parte dell'IDE che semplifica la localizzazione dei tuoi progetti. ITE può creare un nuovo progetto localizzato da un progetto esistente. ITE no tradurre automaticamente il testo, ma fornisce una finestra di dialogo che elenca tutto il testo che deve essere localizzato e campi in cui inserire il corrispondente testo tradotto. Una volta entrato il testo tradotto e costruito il progetto localizzato, puoi impostarne un altro lingua attiva e visualizza un modulo in il testo localizzato; non devi cambia locale e riavvia il sistema. Questo ti permette di esibirti localizzazione senza richiedere a sistema localizzato.
The External Translation Manager (ETM) è un'applicazione autonoma che funziona con file DFM e stringhe di testo in codice sorgente. Anche se ETM no consentire di creare un nuovo localizzato progetto, fornisce una finestra di dialogo elencando il testo localizzato e il testo tradotto, in modo simile a ITE.
Questo è quello che ho intenzione di provare prima una volta che sono arrivato al punto in cui voglio internazionalizzare il mio prodotto.
Tuttavia, per me la parte facile è tradurre il programma. La parte difficile è tradurre il file della guida.
Direi GNU gettext per Delphi in combinazione con TMS Unicode Component Pack (precedentemente gratuito sotto TntWare) per ottenere il supporto Unicode nei componenti.
Per lavorare con, o far lavorare i traduttori, i file gettext che consiglio di consultare la multipiattaforma gratuita Poedit che può modificare i file .po.
Solo per citare cxLocalizer se possiedi componenti DexExpress.