Pentru a putea vota, modifica pagini sau abona la modificările unei pagini trebuie să fiți autentificați. Cu această ocazie scăpați și de acest mesaj deranjant.

Localizarea in Visual C++

De la l10n.ro
Versiunea din 4 decembrie 2007 11:06, autor: 89.38.7.2 (Discuție) (Extragerea textelor)
Salt la: navigare, căutare

Introducere

Dupa 7 ani de zile am putut sa renuntam la suportul pentru Win9x si am inceput portarea aplicatiei, scrisa in MFC, pe unicode.

Acum pot sa recomand oricum vrea sa internationalizeze/localizeze sa foloseasca libraria gettext din urmatoarele motive:

  • mentenanta fisierelor de localizare este net superioara
  • poate fi folosita si in aplicatii comerciale (este LGPL)

Gettext

Descarcati:

Ar trebui sa stiti ca implicit gettext intoarce textele in UTF-8 ceea ce este foarte bine, mai putin pentru Windows care foloseste in modul Unicode (UTF16-LE), asa ca trebuie sa le convertiti la runtime (oricum e suficient de rapida conversia).

#include "../contrib/gettext-runtime/include/libintl.h"

CString strDomain=CString(textdomain("myproject")); // if you put "" will default to "messages"
CString strBinded = CString(bindtextdomain("myproject","d:\\dev\\pbxtools\\src\\debug\\locale\\")); // put you path here

// later
AfxMessageBox(_("Hello World!"), (UINT)MB_OK, (UINT)0);


Extragerea textelor

Extragerea textelor din fisierele .C si .CPP este extrem de usoara folosing xgettext, dar cand veti ajunge la fisierele .RC o sa descoperiti ca nu sunt suportate. Din fericire dupa multe incercari nereusite am gasit singur o solutie simpla

xgettext --from-code=UTF-8 --add-comments --omit-header --no-location --keyword=MENUITEM --keyword=LTEXT --keyword=DEFPUSHBUTTON --keyword=PUSHBUTTON --keyword=CAPTION --language=Tcl -o resources.po project.rc

Sau pe scurt: intrucat sintaxa Tcl e destul de compatibila cu cea din .RC, folosind keyword-urile respective obtinei un parser de .RC in xgettext. Cool?... o sa trimit si un mail ca sa modifice sa recunoasca fisierele rc direct.

Legături