Se connecter avec
S'enregistrer | Connectez-vous

[wxWidgets] problème avec les multi-wxString::Format() ; wxT() et _T()

Dernière réponse : dans Programmation

Bonjour à tous,

Voila, j'ai un petit soucis.
Je m'occupe actuellement de rendre compatible le code source d'un projet qui n'a pas prévu le multi-langue, et je rencontre un soucis, du moins une meilleur façon pour ne traduire que ce qui est voulu.

Voila, nous voulons traduire un string de ce style :

  1. #ifdef WIN32
  2. /*only used with xgettext to be picked up as translatable string.
  3. win32 does not have wx on its path, the provided wxALL_FILES
  4. translation does not work there.*/
  5.  
  6. #define unusedALL_FILES wxTRANSLATE("All files (*.*)|*.*");
  7. #endif


Nous donc les strings suivants
  1. wxString::Format(wxT("apploader (.img)|*.img|All files (%s)|%s"), wxFileSelectorDefaultWildcardStr, wxFileSelectorDefaultWildcardStr),
  2.  
  3. et
  4.  
  5. wxString::Format(wxT("All Games images (gcm, iso, ciso, gcz)|*.gcm;*.iso;*.ciso;*.gcz|All files (%s)|%s"), wxFileSelectorDefaultWildcardStr, wxFileSelectorDefaultWildcardStr),


Nous avons apportés naturellement :
  1. _("apploader (.img)") + wxString::Format(wxT("|*.img|%s"), wxGetTranslation(wxALL_FILES)),
  2.  
  3. et
  4.  
  5. _("All Game images (gcm, iso, ciso, gcz)") + wxString::Format(wxT("|*.gcm;*.iso;*.ciso;*.gcz|%s"), wxGetTranslation(wxALL_FILES)),



Mais nous voulons une autre manière moins laborieuse pour permettre que ce qui est traduisible.
En trouvant une autre solution que _("a") + wxString::Format(wxT("b")

Voila, on propose, en gros :
  1. wxString::Format(wxT("b"), _("a"))



Qu'en pensez vous?
Nous en avons plein à modifier.

Merci
Lassé par la pub ? Créez un compte
Expert Programmation

Oui, utilise la macro _() seulement pour ce qui est à traduire.
_T() ou wxT() n'est que pour le codage de la chaîne de caractères (ASCII et autres).

La macro _() fait un appel à une fonction qui te retourne la chaine déjà traduite, donc tu peux effectivement concaténer des chaines traduites et non traduites sans problème.

Bonjour merci de ta réponse.
J'ai aussi pensé à cette idée

Prenons l'exemple suivant : (souligné = à traduire)
wxString::Format(wxT("All Games images (gcm, iso, ciso, gcz)|*.gcm;*.iso;*.ciso;*.gcz|All files (%s)|%s" ), wxFileSelectorDefaultWildcardStr, wxFileSelectorDefaultWildcardStr),

L'idée est de mettre en string _("All Games images")
de sorte que

wxString allStr = _("All Games images (gcm, iso, ciso, gcz)")
wxString all2Str = wxT("|*.gcm;*.iso;*.ciso;*.gcz|%s" )

J'ai finalement :

wxString::Format(allStr + all2Str, wxGetTranslation(wxALL_FILES)),

Je sais pas si c'est fonctionnel je suis pas sur mon pc, mais ela vous semble il correct ?
Lassé par la pub ? Créez un compte
Tom's guide dans le monde