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:if /i "%language%" == "French" goto :French
Version imprimable
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:if /i "%language%" == "French" goto :French
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:
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.).
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:
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
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/
Tu peux aussi obtenir la langue d’installation de l'OS via le WMI sous forme décimalCitation:
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
Code: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/Locale-codes.php
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:
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:for /f "tokens=3,*" %%d in ('REG QUERY "HKEY_CURRENT_USER\Control Panel\International\User Profile" /v Languages) do set LANG=%%d echo %LANG%