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

cs_Gerard 123 Messages postés jeudi 10 janvier 2002Date d'inscription 7 août 2018 Dernière intervention - 18 avril 2009 à 12:12 - Dernière réponse : Guillemouze 1015 Messages postés samedi 25 octobre 2003Date d'inscription 29 août 2013 Dernière intervention
- 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
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 19 avril 2009 à 13:02
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="" />

Merci Cirec 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de Cirec
Meilleure réponse
cs_Gerard 123 Messages postés jeudi 10 janvier 2002Date d'inscription 7 août 2018 Dernière intervention - 20 avril 2009 à 06:50
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...

Merci cs_Gerard 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de cs_Gerard
Meilleure réponse
Guillemouze 1015 Messages postés samedi 25 octobre 2003Date d'inscription 29 août 2013 Dernière intervention - 20 avril 2009 à 12:15
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.

Merci Guillemouze 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de Guillemouze
Guillemouze 1015 Messages postés samedi 25 octobre 2003Date d'inscription 29 août 2013 Dernière intervention - 18 avril 2009 à 15:02
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
JulioDelphi 2354 Messages postés dimanche 5 octobre 2003Date d'inscription 18 novembre 2010 Dernière intervention - 18 avril 2009 à 16:46
0
Merci
et ajoute "bonjour" "merci" on est pas des chiens.
Commenter la réponse de JulioDelphi
Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention - 18 avril 2009 à 18:46
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
Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention - 20 avril 2009 à 13:38
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
Guillemouze 1015 Messages postés samedi 25 octobre 2003Date d'inscription 29 août 2013 Dernière intervention - 20 avril 2009 à 14:06
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
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 20 avril 2009 à 14:31
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
cs_Gerard 123 Messages postés jeudi 10 janvier 2002Date d'inscription 7 août 2018 Dernière intervention - 20 avril 2009 à 19:18
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
Guillemouze 1015 Messages postés samedi 25 octobre 2003Date d'inscription 29 août 2013 Dernière intervention - 20 avril 2009 à 22:00
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
Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention - 20 avril 2009 à 22:10
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
Guillemouze 1015 Messages postés samedi 25 octobre 2003Date d'inscription 29 août 2013 Dernière intervention - 20 avril 2009 à 22:55
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.