From 15b895bdf806d5e50211e2bfafa2ce720140fb5b Mon Sep 17 00:00:00 2001 From: Lena Pastwa Date: Wed, 10 Jun 2026 18:01:35 +0200 Subject: [PATCH] Select the installer language before wifi menu The wifi menu was always shown in English, even though translations exist. This is because it's launched before the main menu, and the user has no chance to select the archinstall language. Now there's a language selection menu before the internet connection check. --- archinstall/lib/general/general_menu.py | 3 ++- archinstall/main.py | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/archinstall/lib/general/general_menu.py b/archinstall/lib/general/general_menu.py index dcf7d8aab6..b050085331 100644 --- a/archinstall/lib/general/general_menu.py +++ b/archinstall/lib/general/general_menu.py @@ -107,7 +107,8 @@ async def select_archinstall_language(languages: list[Language], preset: Languag title = 'NOTE: Console font will be set automatically for supported languages.\n' title += 'For other languages, fonts can be found in "/usr/share/kbd/consolefonts"\n' - title += 'and set manually with: setfont \n' + title += 'and set manually with: setfont \n\n' + title += 'Select the archinstall language' result = await Selection[Language]( header=title, diff --git a/archinstall/main.py b/archinstall/main.py index e38b3d4845..fbfb15393f 100644 --- a/archinstall/main.py +++ b/archinstall/main.py @@ -7,9 +7,11 @@ import time import traceback from pathlib import Path +from typing import override from archinstall.lib.args import ArchConfigHandler, SubCommand from archinstall.lib.disk.utils import disk_layouts +from archinstall.lib.general.general_menu import select_archinstall_language from archinstall.lib.hardware import SysInfo from archinstall.lib.log import debug, error, info, logger, share_install_log, warn from archinstall.lib.menu.helpers import Confirmation @@ -17,9 +19,9 @@ from archinstall.lib.networking import ping from archinstall.lib.packages.util import check_version_upgrade from archinstall.lib.pacman.pacman import Pacman -from archinstall.lib.translationhandler import tr, translation_handler +from archinstall.lib.translationhandler import Language, tr, translation_handler from archinstall.lib.utils.util import running_from_iso -from archinstall.tui.components import tui +from archinstall.tui.components import InstanceRunnable, tui from archinstall.tui.menu_item import MenuItemGroup @@ -107,6 +109,15 @@ async def _confirm() -> bool: error(tr('Failed to upload log.')) +class LangSelect(InstanceRunnable[Language]): + @override + async def run(self) -> Language: + preset_lang = translation_handler.get_language_by_name('English') + selected_lang = await select_archinstall_language(translation_handler.translated_languages, preset_lang) + translation_handler.activate(selected_lang) + return selected_lang + + def run() -> int: """ This can either be run as the compiled and installed application: python setup.py install @@ -140,6 +151,9 @@ def run() -> int: _log_sys_info() + # The main menu isn't shown if there's no internet, and so the user wouldn't be able to select a language if not for this. + arch_config_handler.config.archinstall_language = tui.run(LangSelect()) + if not arch_config_handler.args.offline: if not arch_config_handler.args.skip_wifi_check: wifi_handler = WifiHandler()