|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : janvier 2003 Messages : 158 ![]() |
Bonjour,
Tout d'abord bonne année à tous ceux qui me liront ![]() J'ai une application en c++ sur RAD studio XE. Mon appli n'a qu'un seule langue : l'anglais (chouette pas besoin de gérer du multi langue !) Par contre du coup j'ai un problème : j'utilise des dialogs du type TPrintDialog, TFindDialog, TSaveDialog et si mon PC est en français, ces dialogs s'affichent en français... Et je voudrais donc forcer la langue des dialogues pour être en anglais quelque soit la localisation du PC. Et je trouve pas comment faire... Suis sûre que c'est tout bête en plus !!! Merci pour votre aide ! Pascale38 |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Développeur C++\Delphi Inscription : juillet 2006 Messages : 9 195 ![]() |
Les Boites de Dialogues de Windows comme le TOpenDialog est, me semble-t-il, géré par le système, j'ignore comment forcer Windows a utiliser une langue au lieu d'une autre !
Peut-être SetThreadLocale qui forcerait la langue en anglais, n'ayant jamais essayé, c'est purement théorique comme info ! En général, l'OS de l'utilisateur est déjà de la langue souhaité, j'ai travaillé sur une application en français, anglais, portugais (brésil) et néerlandais (belge), l'OS était toujours dans la langue naturelle de l'utilisateur, les rares cas était un utilisateur sur OS anglais affichant du portugais Le reste était Français sur OS Français ! Je n'ai jamais eu ton cas mais il est connu dans de nombreux freeware comme CDex ou même des Shareware comme UltraEdit, tout les deux sont tout en anglais, sauf les SelectDirectory\OpenDialog comme par hasard ! ![]() Les Message d'Erreur ou Message de la VCL sont dans les fichiers consts comme RTLConsts Ce sont des resourcestring, regarde l'ETL et la création de DLL de ressources multi-langue : Présentation de la localisation des applications avec le gestionnaire de traductions
__________________
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y ! Attention Troll Méchant ! ![]() "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer ! L'ignorance n'excuse pas la médiocrité ! L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde) Il faut avoir le courage de se tromper et d'apprendre de ses erreurs Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié ! |
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : janvier 2003 Messages : 158 ![]() |
Merci pour ta réponse !
J'ai essayé ça : WORD langID = MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT); BOOL bRetval = SetThreadLocale(MAKELCID(langID, SORT_DEFAULT)); malheureusement mes dialogs sont toujours en français Pourtant j'ai bien bRetval qui vaut 1... Je cherche un peu sur le net, à priori suis pas la seule à dire que ça marche pas... Je continue à investiguer mais pour l'instant c'est pas très concluant... Si jamais je trouve, je posterai la réponse ! merci en tout cas ! Pascale38 |
|
|
00
|
|
|
#4 |
|
Membre confirmé
![]() Inscription : janvier 2003 Messages : 273 ![]() |
[...]
|
|
02
|
|
|
#5 |
|
Membre confirmé
![]() Inscription : janvier 2003 Messages : 273 ![]() |
- d'une part le MSDN dit que ce n'est pas la bonne fonction: " Do not use SetThreadLocale to select a user interface language. To select the resource that is defined in the .rc file with a LANGUAGE statement, the application must use the FindResourceEx function." Mais je ne suis pas certain que Delphi se serve des resources de la même façon que les applis dévelopées avec les outils Microsoft (la langue des composants est stockées dans les DFM pas dans un RC donc FindResourceEx c'est plutot bof).
- d'autre part pour forcer la langue d'une application il faut surement aussi rafraichir cette application ou forcer la langue avant le 1er affichage. C'est un peu comme si tu initialise une variable après t'en être servie. Bon, pour les boites de dialogue système c'est moins sur. Quelques autres suggestions: SetThreadUILanguage, SetThreadPreferedUILanguage, et l'article sur le UI Language management http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx Le MSDN est très riche en informations et explique bien comment se servir des fonctions, ce qu'on peut faire avec et ce qu'il ne faut pas faire. Les remarques et notes en base de page sont souvent intéressantes. J'espère que tu trouveras une solution. Mais je me pose également une question: les ressources anglaises sont-elles systématiquement livrées avec Windows ? |
|
10
|
|
|
#6 |
|
Nouveau Membre du Club
![]() Inscription : janvier 2003 Messages : 158 ![]() |
merci Yarp,
oui mais la MSDN dit aussi : "SetThreadLocale affects the selection of resources with a LANGUAGE statement. The statement affects such Win32 functions as CreateDialog, DialogBox, LoadMenu, LoadString, and FindResource. It sets the code page implied by CP_THREAD_ACP, but does not affect FindResourceEx." Voilà, voilà... Bon je vais regarder les pistes que tu m'as donné... Pascale38 |
|
|
10
|
Copyright © 2000-2013 - www.developpez.com