System language (login screen display language) overwrites my user's language set by GNOME Settings

Edit 1: I'm running Ubuntu GNOME 20.04. I'm trying to set a display language for my user's session different from the system's language (login screen display language) but I've been unsuccessful so far...

System language is Portuguese, my user's language is set to English in GNOME Settings but everything is in Portuguese (locale reports pt_BR.UTF-8). Language packs for both languages are installed.

What can I do?

Edit 2: I've just noted that if I log out and log back in, then it starts respecting my language settings. But if I log in for the first time after (re)boot, it will fallback to the system's language again.

Edit 3: Here is the output of locale as rquested by @Gunnar Hjalmarsson.

After a fresh boot or reboot, both on graphical and console mode:

LANG=pt_BR.UTF-8
LANGUAGE=
LC_CTYPE="pt_BR.UTF-8"
LC_NUMERIC=pt_BR.UTF-8
LC_TIME=pt_BR.UTF-8
LC_COLLATE="pt_BR.UTF-8"
LC_MONETARY=pt_BR.UTF-8
LC_MESSAGES="pt_BR.UTF-8"
LC_PAPER=pt_BR.UTF-8
LC_NAME=pt_BR.UTF-8
LC_ADDRESS=pt_BR.UTF-8
LC_TELEPHONE=pt_BR.UTF-8
LC_MEASUREMENT=pt_BR.UTF-8
LC_IDENTIFICATION=pt_BR.UTF-8
LC_ALL=

After the second graphical mode login (ex.: boot → login → logout → login), both on graphical and console mode:

LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE=pt_BR.UTF-8
LC_NUMERIC=pt_BR.UTF-8
LC_TIME=pt_BR.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=pt_BR.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=pt_BR.UTF-8
LC_NAME=pt_BR.UTF-8
LC_ADDRESS=pt_BR.UTF-8
LC_TELEPHONE=pt_BR.UTF-8
LC_MEASUREMENT=pt_BR.UTF-8
LC_IDENTIFICATION=pt_BR.UTF-8
LC_ALL=

Note: I originally had some packages missing and also hit an Ubuntu installation/language system bug, as pointed by @Gunnar Hjalmarsson, so I misunderstood what was happening.


Original post: Trying to change the login screen display language (not input) created a language setup mess

Running Ubuntu GNOME 20.04. The series of events, if I recall it right, were these:

  1. Both my user session and the login screen were in English.

    • Both with keyboard input in Portuguese, but I don't think it's relevant for my problem.
  2. I tried to set the login screen language to Portuguese using GNOME Settings.

  3. After reboot, the login screen was still in English and, for my surprise, my user's session was set to Portuguese.

  4. I tried again with Settings, set user session back to English and set login screen another time to Portuguese.

  5. Rebooted again and the result was this...

    • Login screen:
      • still in English
      • GNOME Settings says it's in Portuguese
      • localectl says default language is Portuguese (LANG=pt_BR.UTF-8)
    • User session:
      • mixed, GNOME Shell and GNOME apps in English, other apps in Portuguese
      • GNOME Settings says it's in English
      • locale says it's in Portuguese (LANG=pt_BR.UTF-8)

Questions

How do I fix this mess? Should I use dpkg-reconfigure?

Should I install some missing language package? Here is the output of check-language-support:

en_US installed

hunspell-en-us language-pack-en language-pack-gnome-en poppler-data wamerican wbritish

en_US not installed

chromium-browser-l10n firefox-locale-en gimp-help-en

pt_BR installed

poppler-data wbrazilian

pt_BR not installed

chromium-browser-l10n firefox-locale-pt gimp-help-pt gnome-getting-started-docs-pt gnome-user-docs-pt hunspell-pt-br language-pack-gnome-pt language-pack-pt wportuguese

Well, to start with, if you want the display language to be in Portuguese, then install the Portuguese language packs.

sudo apt install language-pack-pt language-pack-gnome-pt

Then reboot and see if it makes a difference.