Se connecter / S'enregistrer
Votre question

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

Tags :
  • format
  • Programmation
Dernière réponse : dans Programmation
7 Janvier 2011 22:50:24

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

Autres pages sur : wxwidgets probleme multi wxstring format wxt

a b L Programmation
8 Janvier 2011 13:53:41

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.
m
0
l
8 Janvier 2011 17:37:15

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 ?
m
0
l
Contenus similaires
a b L Programmation
8 Janvier 2011 20:10:03

Oui, ça me semble correct. Tu peux aussi faire le format sans allStr et concaténer après, mais ça revient au même
m
0
l
8 Janvier 2011 22:44:04

Par contre je connais pas trop ça, tu peux me montrer s'il te plait?
m
0
l
a b L Programmation
9 Janvier 2011 12:17:48

Comme ça:
  1. allStr + wxString::Format(all2Str, wxGetTranslation(wxALL_FILES))
mais ça revient au même.
Il n'y a pas de meilleure façon de faire.
m
0
l
9 Janvier 2011 15:20:32

Merci beaucoup, je test tout ça.
En attendant, comment puis-je te donner 3 pts pour chacune de tes réponses?
m
0
l
a b L Programmation
9 Janvier 2011 20:02:52

Je ne cherche pas à avoir de point.
Il y a pas quelqu'un d'autre pour récupérer les points ? :) 
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS