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

Scripts/Batch Discussion :

Detecter la langue de Windows


Sujet :

Scripts/Batch

  1. #1
    Membre à l'essai
    Detecter la langue de Windows
    Bonjour, je cherche en batch un script permettant de trouver la langue utilisée par Windows pour ensuite créer une condition "goto" avec.

    Du style:
    Code Batch :Sélectionner tout -Visualiser dans une fenêtre à part
    if /i "%language%" == "French" goto :French

  2. #2
    Membre à l'essai
    Bonjour,

    Il y'a le moyen de détecter la langue selon la langue utilisée dans le nom des répertoires généraux windows (du genre if exist .../downloads = anglais, téléchargements = français ... etc).

    Sinon y'a une solution plus sympatoche qui consiste à aller chercher l'info dans le registre :
    Code Batch :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    FOR /F "TOKENS=2,*" %%I IN ('REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Language" ^| FIND /I "Default"') DO SET CODE=%%J
    IF /I %CODE% EQU "040C" SET LANG=FR
    IF /I %CODE% EQU "0009" SET LANG=EN
    :: ...
    ECHO %LANG%


    Tu dois pouvoir retrouver la liste complète des codes de langues windows sur internet. Si tu as besoin de toute la liste, je te conseille de la mettre dans un fichier texte que tu parcourras avec un FOR. ça sera plus lisible et maintenable.

    A savoir que cette liste contient aussi les variations pour chaque langues (du genre français canadien etc.).

  3. #3
    Membre à l'essai
    Tu peut également passer par la clef de registre HKCU\Control Panel\International\Geo cela évitera de devoir coder la table de conversion des valeurs 040c en country code FR

    Mais il faudra bien garder à l’esprit que la c'est une clef de registre HKEY_CURRENT_USER et non HKEY_LOCAL_MACHINE

    Code batch :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @echo off
     
    for /f "tokens=3,*" %%d in ('REG QUERY "HKCU\Control Panel\International\Geo" /v Name') do set LANG=%%d
    echo %LANG%
    pause

  4. #4
    Expert confirmé
    Ces entrées ne semble pas symétrique
    Et HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Language semble être statique alors que la langue de l'os peut être modifiée.
    D'ailleurs plusieurs langues peuvent être présentes.

    https://www.fekwx.com/threads/resolu...-windows.2696/

    Langue d'affichage actuelle de l'utilisateur

    HKCU \ Panneau de configuration \ Bureau
    PreferredUILanguages

    Machine locale

    La langue d'installation est définie lors de l'installation et n'est jamais modifiée
    La valeur par défaut de la clé "HKLM \ SYSTEM \ CurrentControlSet \ Control \ nls \ language" est définie sur la même valeur. Cette valeur est mal lu par certains programmes d'installation InstallShield, ce qui entraîne l'interface en anglais sur Windows localisé.
    Si vous changez la langue d'affichage, la nouvelle valeur est stockée dans

    HKLM \ SYSTEM \ CurrentControlSet \ Contrôle \ MUI \ Paramètres
    LangueUI préférée

    Langue du système

    C'est la langue pour l'utilisateur du système.
    Avant qu'un utilisateur soit connecté, cette langue est utilisée.
    Cela signifie que c'est une langue pour l'écran d'accueil, et pour l'OOBE.

    HKEY_USERS \ S-1-5-18 \ Panneau de configuration \ Bureau \ MuiCached
    MachinePreferredUILanguages
    Tu peux aussi obtenir la langue d’installation de l'OS via le WMI sous forme décimal
    Code batch :Sélectionner tout -Visualiser dans une fenêtre à part
    for /f "tokens=2 delims==" %%A in ('wmic path win32_OperatingSystem get OSLanguage /Value') do set Language=%%A


    Correspondance : https://www.science.co.il/language/L...cale-codes.php

  5. #5
    Membre à l'essai
    Citation Envoyé par Medeay Voir le message
    Tu peut également passer par la clef de registre HKCU\Control Panel\International\Geo cela évitera de devoir coder la table de conversion des valeurs 040c en country code FR

    Mais il faudra bien garder à l’esprit que la c'est une clef de registre HKEY_CURRENT_USER et non HKEY_LOCAL_MACHINE

    Code batch :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @echo off
     
    for /f "tokens=3,*" %%d in ('REG QUERY "HKCU\Control Panel\International\Geo" /v Name') do set LANG=%%d
    echo %LANG%
    pause
    Je crois que le code est plutôt celui la non ? ( Nation à la place de Name.) Et nation de permet pas de retrouver la langage
    Code batch :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     for /f "tokens=3,*" %%d in ('REG QUERY "HKCU\Control Panel\International\Geo" /v Nation') do set LANG=%%d
    echo %LANG%


    Ou celui-la le permettrait peut-être non ?

    Code batch :Sélectionner tout -Visualiser dans une fenêtre à part
    for /f "tokens=3,*" %%d in ('REG QUERY "HKEY_CURRENT_USER\Control Panel\International\User Profile" /v Languages) do set LANG=%%d echo %LANG%