microsoft / microsoft/winget-cli

Winget installing wrong locale version of app

Open
#4,082 6 comments 6 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Issue-Bug
Dominant language
C++
Stars
26.4k
Forks
1.8k
Avg merge
1d 11h
Merged PRs (30d)
15

Description

Brief description of your issue

Winget is installing packages using the wrong locale. I tried to install Mozilla.Firefox, which within the package specifies en-US as default and my system is also set to en-US, however winget installed the en-GB version of it even on a 2nd and 3rd try.

I just freshly installed windows 11 23H2 (after updates OS Build 22631.3007) using the en-US iso (Windows automagically set the country or region in settings to Germany regardless of my choices, but that's not an winget related issue). I also didn't log into Microsoft account and installed it using a local account (as connecting to the wifi didn't work, even though it was detected on the oobe screen, so it cannot be something fetched from there either).

For reference, I did not change any of the localization settings manually (yet) and my system has:

PS C:\Users\user> Get-WinUserLanguageList


LanguageTag     : en-DE
Autonym         : English (Germany)
EnglishName     : English
LocalizedName   : English (Germany)
ScriptName      : Latin
InputMethodTips : {}
Spellchecking   : True
Handwriting     : False

LanguageTag     : en-US
Autonym         : English (United States)
EnglishName     : English
LocalizedName   : English (United States)
ScriptName      : Latin
InputMethodTips : {0409:00000409}
Spellchecking   : True
Handwriting     : False

LanguageTag     : en-GB
Autonym         : English (United Kingdom)
EnglishName     : English
LocalizedName   : English (United Kingdom)
ScriptName      : Latin
InputMethodTips : {0809:00000407}
Spellchecking   : True
Handwriting     : False

PS C:\Users\user> Get-WinHomeLocation

GeoId HomeLocation
----- ------------
   94 Germany
Steps to reproduce
  1. Be in Germany
  2. Install Windows 11 Pro 23H2 using the en-US iso and the default locale settings for en-US.
  3. Let windows install all updates.
  4. winget install Mozilla.Firefox

Edit: Issue is caused by the presence of "en-DE" (why is it even there when I freshly installed en-US Windows?) within the WinUserLanguageList. When I order en-US before it winget is correctly installing en-US. However even though it has higher priority than en-GB (as seen above), when en-DE is listed first, en-US 2nd, and en-GB 3rd winget still defaults to en-GB. (Same, but expected, for en-US being 3rd and en-GB 2nd).

Expected behavior

Installing Mozilla.Firefox using the en-US locale

Actual behavior

Installing Mozilla.Firefox using the en-GB locale

Environment
PS C:\Users\user> winget --info
Windows Package Manager v1.6.3482
Copyright (c) Microsoft Corporation. All rights reserved.

Windows: Windows.Desktop v10.0.22631.3007
System Architecture: X64
Package: Microsoft.DesktopAppInstaller v1.21.3482.0

Winget Directories
-------------------------------------------------------------------------------------------------------------------------------
Logs                               %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir
User Settings                      %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\settings.json
Portable Links Directory (User)    %LOCALAPPDATA%\Microsoft\WinGet\Links
Portable Links Directory (Machine) C:\Program Files\WinGet\Links
Portable Package Root (User)       %LOCALAPPDATA%\Microsoft\WinGet\Packages
Portable Package Root              C:\Program Files\WinGet\Packages
Portable Package Root (x86)        C:\Program Files (x86)\WinGet\Packages
Installer Downloads                %USERPROFILE%\Downloads

Links
---------------------------------------------------------------------------
Privacy Statement   https://aka.ms/winget-privacy
License Agreement   https://aka.ms/winget-license
Third Party Notices https://aka.ms/winget-3rdPartyNotice
Homepage            https://aka.ms/winget
Windows Store Terms https://www.microsoft.com/en-us/storedocs/terms-of-sale

Admin Setting                             State
--------------------------------------------------
LocalManifestFiles                        Disabled
BypassCertificatePinningForMicrosoftStore Disabled
InstallerHashOverride                     Disabled
LocalArchiveMalwareScanOverride           Disabled

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing winget install Mozilla.Firefox with the listed Windows language order, then trace how the CLI selects a package locale from WinUserLanguageList. Check the behavior when en-DE precedes en-US and en-GB; done means the en-US package is selected when it is the preferred matching locale, without breaking expected fallback behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
cli, internationalization
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.