Connaitre le langage de base du système [Résolu]

Messages postés
123
Date d'inscription
jeudi 10 janvier 2002
Dernière intervention
7 août 2018
- - Dernière réponse : Guillemouze
Messages postés
1015
Date d'inscription
samedi 25 octobre 2003
Dernière intervention
29 août 2013
- 20 avril 2009 à 22:55
Je distribue gratuitement une application qui se trouve occasionnellement hors de France. Je voudrais identifier la lange de base de l'ordinateur pour commuter cette appli en anglais si ce n'est pas le Français.
comment accède-t-on à la langue du système avec Delphi?
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
3
Merci
Salut,

il y a tout ce cherche ici avec, en prime, un exemple regarde le fichier "MsgLangs.pas" à la fin il initialise le code en fonction de langue du système
 
@+
Cirec

<hr siz="" />

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de Cirec
Messages postés
123
Date d'inscription
jeudi 10 janvier 2002
Dernière intervention
7 août 2018
3
Merci
Bonjour et merci!
Finalement j'ai utilisé LANG_SYSTEM_DEFAULT

if LANG_SYSTEM_DEFAULT = 2048 then GoFrench else GoEnglish;

J'aurais pu utiliser LANG_USER_DEFAULT et le code était différent (1024). Je n'ai pas compris pourquoi. mais cela peut peut-être expliquer pourquoi le système et moi on ne se comprend pas trop des fois...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de cs_Gerard
Messages postés
1015
Date d'inscription
samedi 25 octobre 2003
Dernière intervention
29 août 2013
3
Merci
j'aimerai bien que tu me dise si t'arrive a avoir de l'english.
Je pense meme que, si tu n'appelle GoEnglish uniquement a cet endroit, cette fonction (goEnglish) ne doit meme pas etre compilé.
LANG_SYSTEM_DEFAULT est une constante et vaudra toujours 2048. c'est un flag special utilisé lors de demandes concernant la langue.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de Guillemouze
Messages postés
1015
Date d'inscription
samedi 25 octobre 2003
Dernière intervention
29 août 2013
0
Merci
recherche "localisation" dans l'aide l'ideal est de creer des dll de resources correspondant aux differents langages.
Commenter la réponse de Guillemouze
Messages postés
2354
Date d'inscription
dimanche 5 octobre 2003
Dernière intervention
18 novembre 2010
0
Merci
et ajoute "bonjour" "merci" on est pas des chiens.
Commenter la réponse de JulioDelphi
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Dernière intervention
3 juin 2016
0
Merci
Ben tu dis la "langue" alors, pas le "langage" qui fait référence, dans le contexte omniprésent sur la page internet, au langage de programmation.
N'existe-t-il pas une API pour récupérer la langue du système ?
Tu as déjà VerLanguageName je crois pour récupérer la chaîne correspondante à l'indentificateur ('French (Standard)', 'English (United States)', etc ...), et tu as également GetSystemDefaultLangID pour récupérer la langue du système je crois (il renvoie l'identificateur que tu convertis avec VerLanguageName).

Cordialement, Bacterius !
Commenter la réponse de Bacterius
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Dernière intervention
3 juin 2016
0
Merci
Il y a une liste des identificateurs LANGID et les langues associées (variantes de français, variantes d'anglais, etc ...). Par exemple, une plage d'identificateurs située entre l'id A et B seront peut-être les identificateurs français ... Tester un identificateur ne suffit pas.

Cordialement, Bacterius !
Commenter la réponse de Bacterius
Messages postés
1015
Date d'inscription
samedi 25 octobre 2003
Dernière intervention
29 août 2013
0
Merci
extrait de windows.pas

(*
 *  A language ID is a 16 bit value which is the combination of a
 *  primary language ID and a secondary language ID.  The bits are
 *  allocated as follows:
 *
 *       +-----------------------+-------------------------+
 *       |     Sublanguage ID    |   Primary Language ID   |
 *       +-----------------------+-------------------------+
 *        15                   10 9                       0   bit
 *
 *
 *
 *  A locale ID is a 32 bit value which is the combination of a
 *  language ID, a sort ID, and a reserved area.  The bits are
 *  allocated as follows:
 *
 *       +-------------+---------+-------------------------+
 *       |   Reserved  | Sort ID |      Language ID        |
 *       +-------------+---------+-------------------------+
 *        31         20 19     16 15                      0   bit
 *
 *)

(*
 *  Language IDs.
 *
 *  The following two combinations of primary language ID and
 *  sublanguage ID have special semantics:
 *
 *    Primary Language ID   Sublanguage ID      Result
 *    -------------------   ---------------     ------------------------
 *    LANG_NEUTRAL          SUBLANG_NEUTRAL     Language neutral
 *    LANG_NEUTRAL          SUBLANG_DEFAULT     User default language
 *    LANG_NEUTRAL          SUBLANG_SYS_DEFAULT System default language
 *)

je reviens sur ce que j'ai dit dans mon premier post : l'ideal serait d'avoir des dll de resources. Elles seront automatiquement chargé selon la langue de l'environnement d'execution
Commenter la réponse de Guillemouze
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
0
Merci
un TButton
un TListBox:
 {$WARNINGS OFF}
procedure TForm1.Button1Click(Sender: TObject);
var I : Integer;
begin
  with TLanguages.Create do
  try
    ListBox1.Items.BeginUpdate;
    ListBox1.Clear;
    for I := 0 to Count -1 do
      ListBox1.Items.Add ('['+ID[i]+'] ('+IntToStr(LocaleID[i])+') - ('+
        Ext[i]+') - '+Name[i]);
      ListBox1.Sorted := True;
  finally
    ListBox1.Items.EndUpdate;
    Free;
  end;
end;
 {$WARNINGS ON}

j'ai mis la propriété "Name" à la fin pour des raisons évidentes de lisibilité !!!
si vous voulez les classer par ordre alphabétique il suffit de mettre "Name" en premier

 
@+
Cirec

<hr siz="" />
Commenter la réponse de Cirec
Messages postés
123
Date d'inscription
jeudi 10 janvier 2002
Dernière intervention
7 août 2018
0
Merci
Donc si je vous comprends, cela vous plairait mieux...


  szlang:=stralloc(100);
  VerLanguageName(LANG_SYSTEM_DEFAULT,szLang,100);
  If pos('français', szLang) > 0 then GoFrench else GoEnglish;
  dispose(szLang);

Merci!

Et Guillemouze avait bien raison, ce n'était même pas compilé....
Commenter la réponse de cs_Gerard
Messages postés
1015
Date d'inscription
samedi 25 octobre 2003
Dernière intervention
29 août 2013
0
Merci
essaye GetUserDefaultLangID (ou GetSystemDefaultLangID)
ensuite, tu peux comparer le HiByte, et le comparer à LANG_FRENCH, LANG_ENGLISH, ...
Le LoByte est le sublanguage (par exemple, tu as francais-france, francais-suisse, ...), donc dans ton cas tu t'en fout.

PS: j'ai peut etre inverse le 'Hi' et le 'Lo'. a verifier.

PS2: "If pos('français', szLang)": Evite les comparaisons de chaines pour ce genre d'operations quand tu peux le faire sur du numerique !
Commenter la réponse de Guillemouze
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Dernière intervention
3 juin 2016
0
Merci
"GetSystemDefaultLangID" c'est bizarre il me semble l'avoir dit dans une des premières réponses ... il faut croire que mon texte est écrit en blanc lol.

Cordialement, Bacterius !
Commenter la réponse de Bacterius
Messages postés
1015
Date d'inscription
samedi 25 octobre 2003
Dernière intervention
29 août 2013
0
Merci
"il faut croire que mon texte est écrit en blanc"

Nan c'est juste que je lis pas tes posts bacterius, parce que ton avatar me donne la gerbe .... hahaha je rigole, j'avais oublié entre ce matin et ce soir.
Mais je campe sur ma position en disant qu'utiliser des dll de ressources me semble rester la meilleure solution.
Commenter la réponse de Guillemouze

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.