IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Forcer la localisation (langue) de mon application


Sujet :

C++Builder

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Points : 79
    Points
    79
    Par défaut Forcer la localisation (langue) de mon application
    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

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 710
    Points : 25 593
    Points
    25 593
    Par défaut
    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

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Points : 79
    Points
    79
    Par défaut
    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

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Points : 334
    Points
    334
    Par défaut
    [...]

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Points : 334
    Points
    334
    Par défaut
    - 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 ?

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    229
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 229
    Points : 79
    Points
    79
    Par défaut
    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

Discussions similaires

  1. Comment ajouter des langues dans mon application
    Par yassin123441 dans le forum Windows Phone
    Réponses: 3
    Dernier message: 21/03/2013, 20h57
  2. Application Localisable + langue par défault
    Par snoups58 dans le forum Silverlight
    Réponses: 3
    Dernier message: 04/08/2011, 10h50
  3. Changer la langue de mon application
    Par bennour.mohamed dans le forum Android
    Réponses: 3
    Dernier message: 17/06/2011, 10h49
  4. Comment modifier la langue de mon application
    Par riadhhwajdii dans le forum GWT et Vaadin
    Réponses: 4
    Dernier message: 29/03/2010, 18h55
  5. Réponses: 3
    Dernier message: 06/05/2008, 10h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo