PDA

Visualizza la versione completa : [c++]traduzione applicazione


giuseppe500
16-02-2010, 15:42
ciao.
Devo tradurre un sorgente c++ molto esteso in italiano in inglese.
Attualmente tutte le stringhe sono sparse qua e la per i sorgenti , del tipo :
afxmessagebox("attenzione parametro non corretto");

Ho creato un progetto che legge tutte le stringhe e le mette in un db con la posizione e poi nella string table di vc++ mfc 2003.
Il problema trovare e sostituire le stringhe senza rovinare troppo il codice , ho fatto qualcosa del genere:

afxmessagebox(loadstringdallastringtable(idnumeric ostringa));

in questo caso l'ideale sarebbe creare una funzione che mi restituisce una stringa con un parametro id numerico.e tutte le operazioni relative al caricamento delle stringhe vengono effettuate all'interno della funzione.

Ho letto che possibile utilizzare una dll in cui sono "impacchettate" tutte le stringhe dello string table .

attualmente riconosco le stringhe nell applicazione con le espressioni regolari , solo che molto lento e complesso.
Sarebbe possibile e corretto utilizzare un automa a stati per effettuare il parsing delle stringhe miste al codice?
me lo consigliate?
link sull argomento?
Grazie.

menphisx
16-02-2010, 18:14
gettext, molto utile :)

http://it.wikipedia.org/wiki/Gettext
http://www.gnu.org/software/gettext/

Marco...

giuseppe500
17-02-2010, 12:55
grazie menphisx.
E' quello che fa per me , solo che ho scaricato la versione per win ma non sono riuscito ad utilizzare l'utility xgettext.exe per estrarre le stringhe.
E' giusto utilizzare xgettext?
Mi puoi fare un esempio?
vorrei estrarre le stringhe da tutti i file .cpp e .h di una cartella xxx.
Uso win , non linux.
grazie

giuseppe500
17-02-2010, 15:22
il problema che quando lancio il programma con la stringa di parametri corretta(ho provato 1000 volte) non da nessun errore , aspetta 5/10 sec e poi termina non generando nessun file .po e senza toccare i sorgenti c++.
Ho 2000 file .cpp da tradurre e glieli passo con l'opzione -f cosi:
xgettext -f files.txt -o output.po

dove files.txt un file contenente tutti i file cpp della cartella che voglio tradurre ad es:

>type files.txt

2NodeElement.cpp
2NodeElRigData.cpp
3DPlaneMesh.cpp
3DPoint.cpp
AboutGridDlg.cpp
Add2NodeElementDlg.cpp
AddBeamDlg.cpp
AddBrickDlg.cpp
AddElemRigidDlg.cpp
AddEntity2DEditModeDlg.cpp
AddEntityBaseDlg.cpp
AddJointDlg.cpp
AddLineDlg.cpp
AddPolygonDlg.cpp
AddPolygonMeshDlg.cpp
AddShellDlg.cpp
AddSlabDlg.cpp
AddTrussDlg.cpp
Align1Dlg.cpp

cosa puo essere?
grazie.

giuseppe500
18-02-2010, 12:08
up

giuseppe500
19-02-2010, 12:41
up

menphisx
21-02-2010, 23:35
Credo tu debba scaricare i sorgenti e compilartelo:
http://gnuwin32.sourceforge.net/packages/gettext.htm

:)

P.S: Non ho trovato molto al rigurado su windows. :)

menphisx
21-02-2010, 23:37
xgettext sembra andare: ho trovato questo:
http://onlamp.com/pub/a/php/2002/06/13/php.html :=)

giuseppe500
22-02-2010, 09:47
grazie menphisx.
Il problema che per problemi aziiendali devo salvare tutte le stringhe trovate in un db e utilizzarle poi in c++ per popolare le string table(roba win )e mi trovo quindi davanti a un bivio : modificare i sorgenti di gettext e aggiungere i dati ad un db da c++ o gestire tutto in vb.net.
Cosa mi consigli?
E ' difficile modificare un progetto come gettext ?
il gioco non vale la candela?
Pensavo di utilizzare un automa a stati per il parsing del file da tradurre se scelgo la soluzione vb.net.
tu cosa mi consigli?
Inoltre come faccio a compilare sotto win con vs 2008 il progetto?
cosa devo includere ?
non ho trovato i file di soluzione vc++
Grazie.

Loading