diff --git a/.github/workflows/translation-check.yaml b/.github/workflows/translation-check.yaml deleted file mode 100644 index 3cd4d14c..00000000 --- a/.github/workflows/translation-check.yaml +++ /dev/null @@ -1,28 +0,0 @@ -#on: -# push: -# paths: -# - 'archinstall/locales/**' -# pull_request: -# paths: -# - 'archinstall/locales/**' -#name: Verify local_generate script was run on translation changes -#jobs: -# translation-check: -# runs-on: ubuntu-latest -# container: -# image: archlinux/archlinux:latest -# steps: -# - uses: actions/checkout@v4 -# - run: pacman --noconfirm -Syu python git diffutils -# - name: Verify all translation scripts are up to date -# run: | -# cd .. -# cp -r archinstall archinstall_orig -# cd archinstall/archinstall/locales -# bash locales_generator.sh 1> /dev/null -# cd ../../.. -# git diff \ -# --quiet --no-index --name-only \ -# archinstall_orig/archinstall/locales \ -# archinstall/archinstall/locales \ -# || (echo "Translation files have not been updated after translation, please run ./locales_generator.sh once more and commit" && exit 1) diff --git a/README.md b/README.md index 75631b6b..95d15702 100644 --- a/README.md +++ b/README.md @@ -219,6 +219,10 @@ qemu-system-x86_64 -enable-kvm \ # FAQ +## AUR + +`archinstall` will not offer or bundle AUR helpers or AUR packages due to a current consensus. This is not any individual developers decision. The reasons and discussions for this stance on the topic can be found on our mailing list thread: [(optional) AUR helper in archinstall](https://lists.archlinux.org/archives/list/arch-dev-public@lists.archlinux.org/thread/VYOULH2GOJLFM2BXOFLWH3D754YXFPSL/). + ## Keyring out-of-date For a description of the problem see https://archinstall.archlinux.page/help/known_issues.html#keyring-is-out-of-date-2213 and discussion in issue https://github.com/archlinux/archinstall/issues/2213. diff --git a/archinstall/lib/args.py b/archinstall/lib/args.py index 79441a06..77545736 100644 --- a/archinstall/lib/args.py +++ b/archinstall/lib/args.py @@ -21,6 +21,7 @@ from archinstall.lib.models.device import DiskEncryption, DiskLayoutConfiguratio from archinstall.lib.models.locale import LocaleConfiguration from archinstall.lib.models.mirrors import MirrorConfiguration from archinstall.lib.models.network import NetworkConfiguration +from archinstall.lib.models.package_types import DEFAULT_KERNEL from archinstall.lib.models.packages import Repository from archinstall.lib.models.pacman import PacmanConfiguration from archinstall.lib.models.profile import ProfileConfiguration @@ -71,7 +72,7 @@ class ArchConfig: auth_config: AuthenticationConfiguration | None = None swap: ZramConfiguration | None = None hostname: str = 'archlinux' - kernels: list[str] = field(default_factory=lambda: ['linux']) + kernels: list[str] = field(default_factory=lambda: [DEFAULT_KERNEL.value]) ntp: bool = True packages: list[str] = field(default_factory=list) pacman_config: PacmanConfiguration = field(default_factory=PacmanConfiguration.default) diff --git a/archinstall/lib/configuration.py b/archinstall/lib/configuration.py index 39d39511..0f22190e 100644 --- a/archinstall/lib/configuration.py +++ b/archinstall/lib/configuration.py @@ -10,6 +10,8 @@ from archinstall.lib.args import ArchConfig from archinstall.lib.crypt import encrypt from archinstall.lib.menu.helpers import Confirmation, Selection from archinstall.lib.menu.util import get_password, prompt_dir +from archinstall.lib.models.bootloader import Bootloader +from archinstall.lib.models.network import NetworkConfiguration from archinstall.lib.output import debug, logger, warn from archinstall.lib.translationhandler import tr from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup @@ -58,6 +60,70 @@ class ConfigurationOutput: debug(' -- Chosen configuration --') debug(self.user_config_to_json()) + def as_summary(self) -> str: + """ + Render a concise two-column summary of the current configuration. + + The left column holds section labels, the right column holds values. + Column width adapts to the longest translated label so translations + do not break the alignment. Rows whose underlying config is not set + are skipped. + + Returns an empty string if nothing meaningful to show. + """ + rows: list[tuple[str, str]] = [] + + disk_config = self._config.disk_config + if disk_config and disk_config.device_modifications: + disk_parts: list[str] = [] + for mod in disk_config.device_modifications: + path = str(mod.device_path) + root_part = mod.get_root_partition() + flags: list[str] = [] + if root_part and root_part.fs_type: + flags.append(root_part.fs_type.value) + if disk_config.disk_encryption: + flags.append(tr('LUKS')) + disk_parts.append(f'{path} ({" + ".join(flags)})' if flags else path) + rows.append((tr('Disks'), ', '.join(disk_parts))) + + bl_config = self._config.bootloader_config + if bl_config and bl_config.bootloader != Bootloader.NO_BOOTLOADER: + rows.append((tr('Bootloader'), bl_config.bootloader.value)) + + kernels = self._config.kernels + if kernels: + rows.append((tr('Kernel'), ', '.join(kernels))) + + profile_config = self._config.profile_config + if profile_config and profile_config.profile: + names = profile_config.profile.current_selection_names() + rows.append((tr('Profile'), ', '.join(names) if names else profile_config.profile.name)) + if profile_config.greeter: + rows.append((tr('Greeter'), profile_config.greeter.value)) + + packages = self._config.packages + if packages: + rows.append((tr('Packages'), str(len(packages)))) + + net_config = self._config.network_config + if isinstance(net_config, NetworkConfiguration): + rows.append((tr('Network'), net_config.type.display_msg())) + + locale_config = self._config.locale_config + if locale_config: + rows.append((tr('Locale'), locale_config.sys_lang)) + + tz = self._config.timezone + if tz: + rows.append((tr('Timezone'), tz)) + + if not rows: + return '' + + label_width = max(len(label) for label, _ in rows) + 2 + return '\n'.join(f'{label:<{label_width}}{value}' for label, value in rows) + async def confirm_config(self) -> bool: header = f'{tr("The specified configuration will be applied")}. ' header += tr('Would you like to continue?') + '\n' diff --git a/archinstall/lib/general/system_menu.py b/archinstall/lib/general/system_menu.py index 5c4d4634..7fa0d1f2 100644 --- a/archinstall/lib/general/system_menu.py +++ b/archinstall/lib/general/system_menu.py @@ -3,29 +3,24 @@ from typing import assert_never from archinstall.lib.hardware import GfxDriver, SysInfo from archinstall.lib.menu.helpers import Confirmation, Selection from archinstall.lib.models.application import ZramAlgorithm, ZramConfiguration +from archinstall.lib.models.package_types import DEFAULT_KERNEL, Kernel from archinstall.lib.translationhandler import tr from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup from archinstall.tui.ui.result import ResultType -async def select_kernel(preset: list[str] = []) -> list[str]: +async def select_kernel(preset: list[Kernel] = []) -> list[Kernel]: """ Asks the user to select a kernel for system. :return: The string as a selected kernel :rtype: string """ - kernels = ['linux', 'linux-lts', 'linux-zen', 'linux-hardened'] - default_kernel = 'linux' + group = MenuItemGroup.from_enum(Kernel, sort_items=True, preset=preset) + group.set_default_by_value(DEFAULT_KERNEL) + group.set_focus_by_value(DEFAULT_KERNEL) - items = [MenuItem(k, value=k) for k in kernels] - - group = MenuItemGroup(items, sort_items=True) - group.set_default_by_value(default_kernel) - group.set_focus_by_value(default_kernel) - group.set_selected_by_value(preset) - - result = await Selection[str]( + result = await Selection[Kernel]( group, header=tr('Select which kernel(s) to install'), allow_skip=True, diff --git a/archinstall/lib/global_menu.py b/archinstall/lib/global_menu.py index e327b388..cdd820a9 100644 --- a/archinstall/lib/global_menu.py +++ b/archinstall/lib/global_menu.py @@ -6,7 +6,7 @@ from archinstall.lib.args import ArchConfig from archinstall.lib.authentication.authentication_menu import AuthenticationMenu from archinstall.lib.bootloader.bootloader_menu import BootloaderMenu from archinstall.lib.bootloader.utils import validate_bootloader_layout -from archinstall.lib.configuration import save_config +from archinstall.lib.configuration import ConfigurationOutput, save_config from archinstall.lib.disk.disk_menu import DiskLayoutConfigurationMenu from archinstall.lib.general.general_menu import select_hostname, select_ntp, select_timezone from archinstall.lib.general.system_menu import select_kernel, select_swap @@ -22,6 +22,7 @@ from archinstall.lib.models.device import DiskLayoutConfiguration, DiskLayoutTyp from archinstall.lib.models.locale import LocaleConfiguration from archinstall.lib.models.mirrors import MirrorConfiguration from archinstall.lib.models.network import NetworkConfiguration, NicType +from archinstall.lib.models.package_types import DEFAULT_KERNEL from archinstall.lib.models.packages import Repository from archinstall.lib.models.pacman import PacmanConfiguration from archinstall.lib.models.profile import ProfileConfiguration @@ -103,7 +104,7 @@ class GlobalMenu(AbstractMenu[None]): ), MenuItem( text=tr('Kernels'), - value=['linux'], + value=[DEFAULT_KERNEL], action=select_kernel, preview_action=self._prev_kernel, mandatory=True, @@ -503,7 +504,11 @@ class GlobalMenu(AbstractMenu[None]): if error := self._validate_bootloader(): return tr(f'Invalid configuration: {error}') - return None + self.sync_all_to_config() + summary = ConfigurationOutput(self._arch_config).as_summary() + if summary: + return f'{tr("Ready to install")}\n\n{summary}' + return tr('Ready to install') def _prev_profile(self, item: MenuItem) -> str | None: profile_config: ProfileConfiguration | None = item.value diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py index 151ee79d..c28f37c4 100644 --- a/archinstall/lib/installer.py +++ b/archinstall/lib/installer.py @@ -48,6 +48,7 @@ from archinstall.lib.models.device import ( from archinstall.lib.models.locale import LocaleConfiguration from archinstall.lib.models.mirrors import MirrorConfiguration from archinstall.lib.models.network import Nic +from archinstall.lib.models.package_types import DEFAULT_KERNEL, Kernel from archinstall.lib.models.packages import Repository from archinstall.lib.models.pacman import PacmanConfiguration from archinstall.lib.models.users import User @@ -65,7 +66,7 @@ from archinstall.lib.translationhandler import tr # pacman picks the first initramfs provider from the host's pacman.conf, which on non-Arch # hosts (EndeavourOS prefers dracut, etc.) breaks the installer's mkinitcpio() and # _config_uki() methods that assume mkinitcpio is present in the chroot. -__packages__ = ['base', 'sudo', 'linux-firmware', 'mkinitcpio', 'linux', 'linux-lts', 'linux-zen', 'linux-hardened'] +__packages__ = ['base', 'sudo', 'linux-firmware', 'mkinitcpio'] + [k.value for k in Kernel] # Additional packages that are installed if the user is running the Live ISO with accessibility tools enabled __accessibility_packages__ = ['brltty', 'espeakup', 'alsa-utils'] @@ -85,7 +86,7 @@ class Installer: It also wraps :py:func:`~archinstall.Installer.pacstrap` among other things. """ self._base_packages = base_packages or __packages__[:4] - self.kernels = kernels or ['linux'] + self.kernels = kernels or [DEFAULT_KERNEL.value] self._disk_config = disk_config self._disk_encryption = disk_config.disk_encryption or DiskEncryption(EncryptionType.NO_ENCRYPTION) @@ -744,6 +745,9 @@ class Installer: return self.run_command(cmd, peek_output=peek_output) + def _chroot_argv(self, *args: str) -> list[str]: + return ['arch-chroot', '-S', str(self.target), *args] + def drop_to_shell(self) -> None: subprocess.check_call(f'arch-chroot {self.target}', shell=True) @@ -992,17 +996,7 @@ class Installer: } for config_name, mountpoint in snapper.items(): - command = [ - 'arch-chroot', - '-S', - str(self.target), - 'snapper', - '--no-dbus', - '-c', - config_name, - 'create-config', - mountpoint, - ] + command = self._chroot_argv('snapper', '--no-dbus', '-c', config_name, 'create-config', mountpoint) try: SysCommand(command, peek_output=True) @@ -1341,13 +1335,7 @@ class Installer: boot_dir = Path('/boot') - command = [ - 'arch-chroot', - '-S', - str(self.target), - 'grub-install', - '--debug', - ] + command = self._chroot_argv('grub-install', '--debug') if SysInfo.has_uefi(): if not efi_partition: @@ -1927,16 +1915,17 @@ class Installer: if not handled_by_plugin: info(f'Creating user {user.username}') - cmd = 'useradd -m' + cmd = self._chroot_argv('useradd', '-m') if user.sudo: - cmd += ' -G wheel' + cmd += ['-G', 'wheel'] - cmd += f' {user.username}' + cmd += ['--', user.username] try: - self.arch_chroot(cmd) - except SysCallError as err: + run(cmd) + except CalledProcessError as err: + debug(f'Error creating user {user.username}: {err}') raise SystemError(f'Could not create user inside installation: {err}') for plugin in plugins.values(): @@ -1947,7 +1936,11 @@ class Installer: self.set_user_password(user) for group in user.groups: - self.arch_chroot(f'gpasswd -a {user.username} {group}') + cmd = self._chroot_argv('gpasswd', '-a', user.username, group) + try: + run(cmd) + except CalledProcessError as err: + warn(f'Failed to add {user.username} to group {group}: {err}') if user.sudo: self.enable_sudo(user) @@ -1962,7 +1955,7 @@ class Installer: return False input_data = f'{user.username}:{enc_password}'.encode() - cmd = ['arch-chroot', '-S', str(self.target), 'chpasswd', '--encrypted'] + cmd = self._chroot_argv('chpasswd', '--encrypted') try: run(cmd, input_data=input_data) @@ -1974,7 +1967,7 @@ class Installer: def user_set_shell(self, user: str, shell: str) -> bool: info(f'Setting shell for {user} to {shell}') - cmd = ['arch-chroot', '-S', str(self.target), 'chsh', '-s', shell, user] + cmd = self._chroot_argv('chsh', '-s', shell, user) try: run(cmd) return True @@ -1984,7 +1977,7 @@ class Installer: def chown(self, owner: str, path: str, options: list[str] | None = None) -> bool: options = options or [] - cmd = ['arch-chroot', '-S', str(self.target), 'chown', *options, owner, path] + cmd = self._chroot_argv('chown', *options, '--', owner, path) try: run(cmd) return True @@ -1995,12 +1988,10 @@ class Installer: def set_vconsole(self, locale_config: LocaleConfiguration) -> None: # use the already set kb layout kb_vconsole: str = locale_config.kb_layout - # this is the default used in ISO other option for hdpi screens TER16x32 - # can be checked using - # zgrep "CONFIG_FONT" /proc/config.gz - # https://wiki.archlinux.org/title/Linux_console#Fonts + font_vconsole = locale_config.console_font - font_vconsole = 'default8x16' + if font_vconsole.startswith('ter-'): + self.pacman.strap(['terminus-font']) # Ensure /etc exists vconsole_dir: Path = self.target / 'etc' diff --git a/archinstall/lib/locale/locale_menu.py b/archinstall/lib/locale/locale_menu.py index c03824a1..dc743fd3 100644 --- a/archinstall/lib/locale/locale_menu.py +++ b/archinstall/lib/locale/locale_menu.py @@ -1,6 +1,6 @@ from typing import override -from archinstall.lib.locale.utils import list_keyboard_languages, list_locales, set_kb_layout +from archinstall.lib.locale.utils import list_console_fonts, list_keyboard_languages, list_locales, set_kb_layout from archinstall.lib.menu.abstract_menu import AbstractSubMenu from archinstall.lib.menu.helpers import Selection from archinstall.lib.models.locale import LocaleConfiguration @@ -47,6 +47,13 @@ class LocaleMenu(AbstractSubMenu[LocaleConfiguration]): preview_action=lambda item: item.get_value(), key='sys_enc', ), + MenuItem( + text=tr('Console font'), + action=select_console_font, + value=self._locale_conf.console_font, + preview_action=lambda item: item.get_value(), + key='console_font', + ), ] @override @@ -140,3 +147,25 @@ async def select_kb_layout(preset: str | None = None) -> str | None: return preset case _: raise ValueError('Unhandled return type') + + +async def select_console_font(preset: str | None = None) -> str | None: + fonts = list_console_fonts() + + items = [MenuItem(f, value=f) for f in fonts] + group = MenuItemGroup(items, sort_items=False) + group.set_focus_by_value(preset) + + result = await Selection[str]( + header=tr('Console font'), + group=group, + enable_filter=True, + ).show() + + match result.type_: + case ResultType.Selection: + return result.get_value() + case ResultType.Skip: + return preset + case _: + raise ValueError('Unhandled return type') diff --git a/archinstall/lib/locale/utils.py b/archinstall/lib/locale/utils.py index e7229160..497e1fcb 100644 --- a/archinstall/lib/locale/utils.py +++ b/archinstall/lib/locale/utils.py @@ -1,3 +1,6 @@ +from functools import lru_cache +from pathlib import Path + from archinstall.lib.command import SysCommand from archinstall.lib.exceptions import ServiceException, SysCallError from archinstall.lib.output import error @@ -26,6 +29,13 @@ def list_locales() -> list[str]: return locales +@lru_cache +def list_console_fonts() -> list[str]: + directory = Path('/usr/share/kbd/consolefonts') + fonts = {path.name.split('.')[0] for path in directory.glob('*.gz')} + return sorted(fonts) + + def list_x11_keyboard_languages() -> list[str]: return ( SysCommand( diff --git a/archinstall/lib/models/locale.py b/archinstall/lib/models/locale.py index 15dee2f6..8f580989 100644 --- a/archinstall/lib/models/locale.py +++ b/archinstall/lib/models/locale.py @@ -10,6 +10,11 @@ class LocaleConfiguration: kb_layout: str sys_lang: str sys_enc: str + # this is the default used in ISO other option for hdpi screens TER16x32 + # can be checked using + # zgrep "CONFIG_FONT" /proc/config.gz + # https://wiki.archlinux.org/title/Linux_console#Font + console_font: str = 'default8x16' @classmethod def default(cls) -> Self: @@ -23,12 +28,14 @@ class LocaleConfiguration: 'kb_layout': self.kb_layout, 'sys_lang': self.sys_lang, 'sys_enc': self.sys_enc, + 'console_font': self.console_font, } def preview(self) -> str: output = '{}: {}\n'.format(tr('Keyboard layout'), self.kb_layout) output += '{}: {}\n'.format(tr('Locale language'), self.sys_lang) - output += '{}: {}'.format(tr('Locale encoding'), self.sys_enc) + output += '{}: {}\n'.format(tr('Locale encoding'), self.sys_enc) + output += '{}: {}'.format(tr('Console font'), self.console_font) return output def _load_config(self, args: dict[str, str]) -> None: @@ -38,6 +45,8 @@ class LocaleConfiguration: self.sys_enc = args['sys_enc'] if 'kb_layout' in args: self.kb_layout = args['kb_layout'] + if 'console_font' in args: + self.console_font = args['console_font'] @classmethod def parse_arg(cls, args: dict[str, Any]) -> Self: diff --git a/archinstall/lib/models/package_types.py b/archinstall/lib/models/package_types.py new file mode 100644 index 00000000..e314c30a --- /dev/null +++ b/archinstall/lib/models/package_types.py @@ -0,0 +1,12 @@ +from enum import StrEnum, auto +from typing import Final + + +class Kernel(StrEnum): + LINUX = auto() + LINUX_LTS = 'linux-lts' + LINUX_ZEN = 'linux-zen' + LINUX_HARDENED = 'linux-hardened' + + +DEFAULT_KERNEL: Final = Kernel.LINUX diff --git a/archinstall/locales/base.pot b/archinstall/locales/base.pot index f707ec7a..b7e1184b 100644 --- a/archinstall/locales/base.pot +++ b/archinstall/locales/base.pot @@ -252,6 +252,9 @@ msgstr "" msgid "Locale encoding" msgstr "" +msgid "Console font" +msgstr "" + msgid "Drive(s)" msgstr "" @@ -1245,6 +1248,21 @@ msgstr "" msgid "Invalid configuration: {error}" msgstr "" +msgid "Ready to install" +msgstr "" + +msgid "Disks" +msgstr "" + +msgid "Packages" +msgstr "" + +msgid "Network" +msgstr "" + +msgid "Locale" +msgstr "" + msgid "Type" msgstr "" diff --git a/archinstall/locales/es/LC_MESSAGES/base.mo b/archinstall/locales/es/LC_MESSAGES/base.mo index 14e916ef..5701d454 100644 Binary files a/archinstall/locales/es/LC_MESSAGES/base.mo and b/archinstall/locales/es/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/es/LC_MESSAGES/base.po b/archinstall/locales/es/LC_MESSAGES/base.po index 1b52b4c0..d4300a4f 100644 --- a/archinstall/locales/es/LC_MESSAGES/base.po +++ b/archinstall/locales/es/LC_MESSAGES/base.po @@ -54,7 +54,7 @@ msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr msgstr "Solo paquetes como base, base-devel, linux, linux-firmware, efibootmgr y paquetes opcionales de perfil se instalan." msgid "Note: base-devel is no longer installed by default. Add it here if you need build tools." -msgstr "Nota: base-devel ya no viene instalado por defecto. Agreguelo aquí si necesita herramientas de build." +msgstr "Nota: base-devel ya no viene instalado por defecto. Agreguelo aquí si necesita herramientas de compilación." msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." msgstr "Si desea un navegador web, como firefox o chromium, puede especificarlo en el siguiente mensaje." @@ -173,7 +173,7 @@ msgid "Enter a desired filesystem type for the partition: " msgstr "Ingrese un tipo de sistema de archivos deseado para la partición: " msgid "Archinstall language" -msgstr "Idioma de Archinstall" +msgstr "Idioma de archinstall" msgid "Wipe all selected drives and use a best-effort default partition layout" msgstr "Borrar todas las unidades seleccionadas y usar un diseño de partición predeterminado de mejor esfuerzo" @@ -197,7 +197,7 @@ msgid "Select one or more hard drives to use and configure" msgstr "Seleccione uno o más discos duros para usar y configurar" msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "Para obtener la mejor compatibilidad con su hardware AMD, es posible que desee utilizar las opciones de código abierto o AMD / ATI." +msgstr "Para obtener la mejor compatibilidad con su hardware AMD, es posible que desee utilizar las opciones de código abierto o AMD/ATI." msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" msgstr "Para obtener la mejor compatibilidad con su hardware Intel, es posible que desee utilizar las opciones de código abierto o de Intel.\n" @@ -218,7 +218,7 @@ msgid "All open-source (default)" msgstr "Todos de código abierto (predeterminado)" msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "Elija qué kernel usar o déjelo en blanco para usar el kernel \"{}\" predeterminado" +msgstr "Elija qué núcleo usar o deje en blanco para usar el núcleo \"{}\" predeterminado" msgid "Choose which locale language to use" msgstr "Elija qué idioma local usar" @@ -382,7 +382,7 @@ msgid "Create a required super-user with sudo privileges: " msgstr "Crear un super-usuario requerido con privilegios sudo: " msgid "Enter root password (leave blank to disable root): " -msgstr "Ingrese la contraseña de root (deje en blanco para deshabilitar root): " +msgstr "Ingrese la contraseña de root (deje en blanco para desactivar root): " msgid "Password for user \"{}\": " msgstr "Contraseña para el usuario “{}”: " @@ -454,7 +454,7 @@ msgid "Pre-existing pacman lock never exited. Please clean up any existing pacma msgstr "El bloqueo de pacman preexistente nunca se cerró. Limpie cualquier sesión de pacman existente antes de usar archinstall." msgid "Choose which optional additional repositories to enable" -msgstr "Elija qué repositorios adicionales opcionales habilitar" +msgstr "Elija qué repositorios adicionales opcionales activar" msgid "Add a user" msgstr "Añadir un usuario" @@ -489,7 +489,7 @@ msgid "No network configuration" msgstr "Sin configuración de red" msgid "Set desired subvolumes on a btrfs partition" -msgstr "Establecer los subvolúmenes deseados en una partición btrfs" +msgstr "Establecer los subvolúmenes deseados en una partición BTRFS" msgid "" "{}\n" @@ -501,7 +501,7 @@ msgstr "" "Seleccione en qué partición configurar los subvolúmenes" msgid "Manage btrfs subvolumes for current partition" -msgstr "Administrar subvolúmenes btrfs para la partición actual" +msgstr "Administrar subvolúmenes BTRFS para la partición actual" msgid "No configuration" msgstr "Sin configuración" @@ -650,7 +650,7 @@ msgid "Manual configuration" msgstr "Configuración manual" msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "Marcar/Desmarcar una partición como comprimida (solo btrfs)" +msgstr "Marcar/Desmarcar una partición como comprimida (solo BTRFS)" msgid "The password you are using seems to be weak, are you sure you want to use it?" msgstr "La contraseña que está utilizando parece ser débil, ¿está seguro de que desea usarla?" @@ -665,7 +665,7 @@ msgid "A very basic installation that allows you to customize Arch Linux as you msgstr "Una instalación muy básica que te permite personalizar Arch Linux como mejor te parezca." msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "Proporciona una selección de varios paquetes de servidor para instalar y habilitar, p.e. httpd, nginx, mariadb" +msgstr "Proporciona una selección de varios paquetes de servidor para instalar y activar, p.ej. httpd, nginx, mariadb" msgid "Choose which servers to install, if none then a minimal installation will be done" msgstr "Elija qué servidores instalar, si no hay ninguno, se realizará una instalación mínima" @@ -799,29 +799,29 @@ msgid "Configured {} interfaces" msgstr "Interfaces {} configuradas" msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "Esta opción habilita la cantidad de descargas paralelas que pueden ocurrir durante la instalación" +msgstr "Esta opción activa la cantidad de descargas paralelas que pueden ocurrir durante la instalación" msgid "" "Enter the number of parallel downloads to be enabled.\n" " (Enter a value between 1 to {})\n" "Note:" msgstr "" -"Ingrese el número de descargas paralelas que se habilitarán.\n" +"Ingrese el número de descargas paralelas que se activarán.\n" " (Ingrese un valor entre 1 y {})\n" "Nota:" msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - Valor máximo : {} ( Habilita {} descargas paralelas, permite {} descargas simultáneas )" +msgstr " - Valor máximo : {} (Permitir {} descargas paralelas, permite {} descargas simultáneas)" msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - Valor mínimo : 1 ( Habilita 1 descarga paralela, permite 2 descargas simultáneas )" +msgstr " - Valor mínimo : 1 (Permitir 1 descarga paralela, permite 2 descargas simultáneas)" msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - Deshabilitar/Predeterminado : 0 ( Deshabilita la descarga paralela, permite solo 1 descarga simultánea )" +msgstr " - Desactivar/Predeterminado : 0 (Desactiva la descarga paralela, permite solo 1 descarga simultánea)" #, python-brace-format msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "¡Entrada no válida! Intente nuevamente con una entrada válida [1 a {max_downloads}, o 0 para deshabilitar]" +msgstr "¡Entrada no válida! Intente nuevamente con una entrada válida [1 a {max_downloads}, o 0 para desactivar]" msgid "Parallel Downloads" msgstr "Descargas paralelas" @@ -832,9 +832,9 @@ msgstr "Pacman" msgid "Color" msgstr "Color" -#, fuzzy, python-brace-format +#, python-brace-format msgid "Enter the number of parallel downloads (1-{})" -msgstr "Ingrese el número de descargas paralelas que desea habilitar" +msgstr "Ingrese el número de descargas paralelas (1-{})" msgid "Enable colored output for pacman" msgstr "Activa salida a color para pacman" @@ -975,7 +975,7 @@ msgid "Higher values increase security but slow down boot time" msgstr "Valores más grandes mejoran la seguridad pero aumentan el tiempo de arranque" msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "Por defecto: 10000ms, Rango recomendado 1000-60000" +msgstr "Predeterminado: 10000ms, Rango recomendado 1000-60000" msgid "Iteration time cannot be empty" msgstr "Tiempo de iteración no puede estar vacío" @@ -1073,10 +1073,10 @@ msgid "Packages to be install with this profile (space separated, leave blank to msgstr "Paquetes que se instalarán con este perfil (separados por espacios, déjelo en blanco para omitir): " msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "Servicios que se habilitarán con este perfil (separados por espacios, deje en blanco para omitir): " +msgstr "Servicios que se activarán con este perfil (separados por espacios, deje en blanco para omitir): " msgid "Should this profile be enabled for installation?" -msgstr "¿Debería habilitarse este perfil para la instalación?" +msgstr "¿Debería activarse este perfil para la instalación?" msgid "Create your own" msgstr "Crear tu propio" @@ -1158,7 +1158,7 @@ msgid "" "Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" "Save directory: " msgstr "" -"Ingrese un directorio para guardar las configuraciones (completar con tabulación habilitado)\n" +"Ingrese un directorio para guardar las configuraciones (completar con tabulación activado)\n" "Guardar directorio: " msgid "" @@ -1180,10 +1180,10 @@ msgid "Mirror regions" msgstr "Regiones de espejos" msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - Valor máximo : {} ( Habilita {} descargas paralelas, permite {max_downloads+1} descargas simultáneas )" +msgstr " - Valor máximo : {} (Permitir {} descargas paralelas, permite {max_downloads+1} descargas simultáneas)" msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "¡Entrada no válida! Intente nuevamente con una entrada válida [1 a {}, o 0 para deshabilitar]" +msgstr "¡Entrada no válida! Intente nuevamente con una entrada válida [1 a {}, o 0 para desactivar]" msgid "Locales" msgstr "Localidades" @@ -1226,26 +1226,26 @@ msgid "Type" msgstr "Tipo" msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "Esta opción habilita la cantidad de descargas paralelas que pueden ocurrir durante las descargas de paquetes" +msgstr "Esta opción activa la cantidad de descargas paralelas que pueden ocurrir durante las descargas de paquetes" msgid "" "Enter the number of parallel downloads to be enabled.\n" "\n" "Note:\n" msgstr "" -"Ingrese el número de descargas paralelas que se habilitarán.\n" +"Ingrese el número de descargas paralelas que se activarán.\n" "\n" "Nota:\n" #, python-brace-format msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - Valor máximo recomendado : {} ( Permite {} descargas paralelas simultáneas )" +msgstr " - Valor máximo recomendado : {} (Permite {} descargas paralelas simultáneas)" msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - Deshabilitar/Predeterminado : 0 ( Deshabilita la descarga paralela, permite solo 1 descarga simultánea )\n" +msgstr " - Desactivar/Predeterminado : 0 (Desactiva la descarga paralela, permite solo 1 descarga simultánea)\n" msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "¡Entrada no válida! Intente nuevamente con una entrada válida [o 0 para deshabilitar]" +msgstr "¡Entrada no válida! Intente nuevamente con una entrada válida [o 0 para desactivar]" msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" msgstr "Hyprland necesita acceso a su asiento (colección de dispositivos de hardware, es decir, teclado, mouse, etc.)" @@ -1263,10 +1263,10 @@ msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB... msgstr "Todos los valores introducidos pueden tener como sufijo una unidad: %, B, KB, KiB, MB, MiB..." msgid "Would you like to use unified kernel images?" -msgstr "¿Le gustaría utilizar imágenes del kernel unificadas?" +msgstr "¿Le gustaría utilizar imágenes del núcleo unificadas?" msgid "Unified kernel images" -msgstr "Imágenes del kernel unificadas" +msgstr "Imágenes del núcleo unificadas" msgid "Waiting for time sync (timedatectl show) to complete." msgstr "Esperando a que se complete la sincronización de la hora (timedatectl show)." @@ -1449,7 +1449,7 @@ msgid "Enter your gateway (router) IP address (leave blank for none)" msgstr "Ingrese la dirección IP de su puerta de enlace (enrutador) (deje en blanco si no hay ninguna)" msgid "Gateway address" -msgstr "Dirección de puerta de enlace" +msgstr "Dirección de la puerta de enlace" msgid "Enter your DNS servers with space separated (leave blank for none)" msgstr "Ingrese sus servidores DNS separados por espacios (deje en blanco si no hay ninguno)" @@ -1464,7 +1464,7 @@ msgid "Kernel" msgstr "Núcleo" msgid "UEFI is not detected and some options are disabled" -msgstr "No se detecta UEFI y algunas opciones están deshabilitadas" +msgstr "No se detecta UEFI y algunas opciones están desactivadas" msgid "Info" msgstr "Info" @@ -1494,17 +1494,17 @@ msgid "Directory" msgstr "Directorio" msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "Ingrese un directorio para guardar las configuraciones (autocompletado de tabulación habilitado)" +msgstr "Ingrese un directorio para guardar las configuraciones (autocompletado de tabulación activado)" #, python-brace-format msgid "Do you want to save the configuration file(s) to {}?" msgstr "¿Desea guardar los archivos de configuración en {}?" msgid "Enabled" -msgstr "Habilitado" +msgstr "Activado" msgid "Disabled" -msgstr "Deshabilitado" +msgstr "Desactivado" msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" msgstr "Envíe este problema (y archivo) a https://github.com/archlinux/archinstall/issues" @@ -1683,13 +1683,11 @@ msgstr "Salir del modo de búsqueda" msgid "General" msgstr "General" -#, fuzzy msgid "Navigation" -msgstr "Guardar configuración" +msgstr "Navegación" -#, fuzzy msgid "Selection" -msgstr "Seleccione regiones" +msgstr "Selección" msgid "Search" msgstr "Buscar" @@ -1700,22 +1698,18 @@ msgstr "Abajo" msgid "Up" msgstr "Arriba" -#, fuzzy msgid "Confirm" -msgstr "Confirmar y salir" +msgstr "Confirmar" -#, fuzzy msgid "Focus right" -msgstr "Mover a la derecha" +msgstr "Enfocar a la derecha" -#, fuzzy msgid "Focus left" -msgstr "Mover a la izquierda" +msgstr "Enfocar a la izquierda" msgid "Toggle" msgstr "Alternar" -#, fuzzy msgid "Show/Hide help" msgstr "Mostrar/Ocultar ayuda" @@ -1728,45 +1722,38 @@ msgstr "Primero" msgid "Last" msgstr "Último" -#, fuzzy msgid "Select" -msgstr "Seleccione regiones" +msgstr "Seleccionar" msgid "Page Up" -msgstr "Subir" +msgstr "Subir página" msgid "Page Down" -msgstr "Bajar" +msgstr "Bajar página" -#, fuzzy msgid "Page up" -msgstr "Grupo de paquetes:" +msgstr "Subir página" -#, fuzzy msgid "Page down" -msgstr "Bajar" +msgstr "Bajar página" msgid "Page Left" -msgstr "Izquierda" +msgstr "Página izquierda" -#, fuzzy msgid "Page Right" -msgstr "Mover a la derecha" +msgstr "Página derecha" msgid "Cursor up" msgstr "Subir" -#, fuzzy msgid "Cursor down" -msgstr "Bajar" +msgstr "Cursor hacia abajo" -#, fuzzy msgid "Cursor right" -msgstr "Mover a la derecha" +msgstr "Cursor hacia la derecha" -#, fuzzy msgid "Cursor left" -msgstr "Mover a la izquierda" +msgstr "Cursor hacia la izquierda" msgid "Top" msgstr "Arriba" @@ -1777,38 +1764,35 @@ msgstr "Abajo" msgid "Home" msgstr "Inicio" -#, fuzzy msgid "End" -msgstr "Habilitado" +msgstr "Final" -#, fuzzy msgid "Toggle option" -msgstr "Opciones del subvolumen" +msgstr "Opción de alternancia" msgid "Scroll Up" msgstr "Mover Arriba" -#, fuzzy msgid "Scroll Down" -msgstr "Bajar en vista previa" +msgstr "Deslizar hacia abajo" msgid "Scroll Left" -msgstr "Mover Izquierda" +msgstr "Mover hacia la izquierda" msgid "Scroll Right" -msgstr "Mover Derecha" +msgstr "Mover hacia la derecha" msgid "Scroll Home" -msgstr "Ir a Inicio" +msgstr "Ir al Inicio" msgid "Scroll End" msgstr "Ir al Final" msgid "Focus Next" -msgstr "Centrar Siguiente" +msgstr "Enfocar a la siguiente" msgid "Focus Previous" -msgstr "Centrar Anterior" +msgstr "Enfocar a la anterior" msgid "Copy selected text" msgstr "Copiar texto seleccionado" @@ -1838,7 +1822,7 @@ msgid "Reboot system" msgstr "Reiniciar el sistema" msgid "chroot into installation for post-installation configurations" -msgstr "chroot en la instalación para configuraciones posteriores a la instalación" +msgstr "Hacer chroot en la instalación para configuraciones posteriores a la instalación" msgid "Installation completed" msgstr "Instalación completada" @@ -1907,7 +1891,7 @@ msgstr "Sudo sin contraseña: " #, python-brace-format msgid "Btrfs snapshot type: {}" -msgstr "Tipo de snapshot Btrfs: {}" +msgstr "Tipo de instantánea BTRFS: {}" msgid "Syncing the system..." msgstr "Sincronizando el sistema..." @@ -1932,7 +1916,7 @@ msgid "U2F Login Method" msgstr "Método de inicio de sesión U2F" msgid "Enable passwordless sudo?" -msgstr "Habilitar sudo sin contraseña?" +msgstr "¿Activar sudo sin contraseña?" #, python-brace-format msgid "Setting up U2F device for user: {}" @@ -1948,25 +1932,25 @@ msgid "No network connection found" msgstr "No se encontró una conección de red" msgid "Would you like to connect to a Wifi?" -msgstr "¿Desea conectarse a Wifi?" +msgstr "¿Desea conectarse al Wi-Fi?" msgid "No wifi interface found" -msgstr "No se encontró ninguna interfaz de wifi" +msgstr "No se encontró ninguna interfaz Wi-Fi" msgid "Select wifi network to connect to" -msgstr "Seleccione una red de wifi para conectarse" +msgstr "Seleccione una red Wi-Fi para conectarse" msgid "Scanning wifi networks..." -msgstr "Buscando redes de wifi..." +msgstr "Buscando redes Wi-Fi..." msgid "No wifi networks found" -msgstr "No se encontró redes de wifi" +msgstr "No se encontró redes Wi-Fi" msgid "Failed setting up wifi" -msgstr "Error configurando wifi" +msgstr "Error al configurar el Wi-Fi" msgid "Enter wifi password" -msgstr "Ingrese contraseña de wifi" +msgstr "Ingrese la contraseña del Wi-Fi" msgid "Ok" msgstr "Ok" @@ -2017,7 +2001,7 @@ msgid "Compression algorithm" msgstr "Algoritmo de compresión" msgid "Only packages such as base, sudo, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Solo paquetes como base, base-devel, linux, linux-firmware, efibootmgr y paquetes opcionales de perfil se instalan." +msgstr "Solo paquetes como base, sudo, linux, linux-firmware, efibootmgr y paquetes opcionales de perfil se instalan." msgid "Select zram compression algorithm:" msgstr "Seleccione algorimto de compresión zram:" @@ -2031,19 +2015,17 @@ msgstr "Usar gestor de Red (backend iwd)" msgid "Firewall" msgstr "Cortafuegos" -#, fuzzy msgid "Additional fonts" -msgstr "Repositorios adicionales" +msgstr "Fuentes adicionales" -#, fuzzy msgid "Select font packages to install" -msgstr "Seleccione el gestor de arranque que desea instalar" +msgstr "Seleccione los paquetes de fuentes que desea instalar" msgid "Unicode font coverage for most languages" msgstr "Fuente unicode cubierta para la mayoría de idiomas" msgid "color emoji for browsers and apps" -msgstr "Emoji de color para navegador y apps" +msgstr "Emoji de colores para navegadores y aplicaciones" msgid "Chinese, Japanese, Korean characters" msgstr "Carácteres Chino, Japonés, Koreano" @@ -2107,7 +2089,7 @@ msgid "Select timezone" msgstr "Seleccione una zona horaria" msgid "Enter the number of parallel downloads to be enabled" -msgstr "Ingrese el número de descargas paralelas que desea habilitar" +msgstr "Ingrese el número de descargas paralelas que desea activar" #, python-brace-format msgid "Value must be between 1 and {}" @@ -2126,10 +2108,10 @@ msgid "Enter server url" msgstr "Ingrese la URL del servidor" msgid "Select mirror regions to be enabled" -msgstr "Seleccione las regiones espejo que se habilitarán" +msgstr "Seleccione las regiones espejo que se activarán" msgid "Select optional repositories to be enabled" -msgstr "Seleccione repositorios opcionales para habilitar" +msgstr "Seleccione repositorios opcionales para activar" msgid "Select an interface" msgstr "Seleccione una interfaz" @@ -2170,20 +2152,18 @@ msgstr "Seguridad de la contraseña: Fuerte" msgid "The selected desktop profile requires a regular user to log in via the greeter" msgstr "El perfil de escritorio seleccionado requiere que un usuario estándar inicie sesión a través de la pantalla de bienvenida" -#, fuzzy, python-brace-format +#, python-brace-format msgid "Environment type: {} {}" -msgstr "Tipo de entorno: {}" +msgstr "Tipo de entorno: {} {}" -#, fuzzy msgid "Input cannot be empty" -msgstr "El valor no puede estár vacío" +msgstr "La entrada no debe estar vacía" msgid "Recommended" msgstr "Recomendado" -#, fuzzy msgid "Package" -msgstr "Grupo de paquetes:" +msgstr "Paquete" msgid "Curated selection of KDE Plasma packages" msgstr "Selección curada de paquetes KDE Plasma" @@ -2191,41 +2171,37 @@ msgstr "Selección curada de paquetes KDE Plasma" msgid "Dependencies" msgstr "Dependencias" -#, fuzzy msgid "Package group" -msgstr "Grupo de paquetes:" +msgstr "Grupo de paquetes" msgid "Extensive KDE Plasma installation" msgstr "Instalación KDE Plasma Extensible" -#, fuzzy msgid "Packages in group" -msgstr "Grupo de paquetes:" +msgstr "Paquetes en grupo" msgid "Minimal KDE Plasma installation" msgstr "Instalación minima de KDE Plasma" -#, fuzzy msgid "Description" -msgstr "Cifrado de disco" +msgstr "Descripción" -#, fuzzy msgid "Select a flavor of KDE Plasma to install" -msgstr "Seleccione el gestor de arranque que desea instalar" +msgstr "Seleccione una variante de KDE Plasma para instalar" msgid "Arial/Times/Courier replacement, Cyrillic support for Steam/games" -msgstr "" +msgstr "Sustitución de Arial/Times/Courier, compatibilidad con caracteres cirílicos para Steam/juegos" msgid "wide Unicode coverage, good fallback font" -msgstr "" +msgstr "Amplia cobertura Unicode, buena fuente de reserva" #, python-brace-format msgid "Setting up U2F login: {u2f_config.u2f_login_method.value}" msgstr "Configurando Inicio U2F: {u2f_config.u2f_login_method.value}" -#, fuzzy, python-brace-format +#, python-brace-format msgid "Default: {DEFAULT_ITER_TIME}ms, Recommended range: 1000-60000" -msgstr "Por defecto: {DEFAULT_ITER_TIME}ms, Rango recomendado 1000-60000" +msgstr "Predeterminado: {DEFAULT_ITER_TIME}ms, Rango recomendado: 1000-60000" #~ msgid "Add :" #~ msgstr "Añadir :" diff --git a/archinstall/locales/ja/LC_MESSAGES/base.mo b/archinstall/locales/ja/LC_MESSAGES/base.mo index 3ad3d1a2..bfdce38d 100644 Binary files a/archinstall/locales/ja/LC_MESSAGES/base.mo and b/archinstall/locales/ja/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/ja/LC_MESSAGES/base.po b/archinstall/locales/ja/LC_MESSAGES/base.po index 8919d213..3b26ff9b 100644 --- a/archinstall/locales/ja/LC_MESSAGES/base.po +++ b/archinstall/locales/ja/LC_MESSAGES/base.po @@ -63,10 +63,10 @@ msgid "Write additional packages to install (space separated, leave blank to ski msgstr "追加でインストールするパッケージを書く(スペースで区切る。無記入でスキップ): " msgid "Copy ISO network configuration to installation" -msgstr "ISO ネットワーク設定をインストール環境にコピー" +msgstr "ISO のネットワーク設定をインストール環境にコピー" msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "NetworkManager を使用(GNOME と KDE でインターネットをグラフィカルに設定するのに必要)" +msgstr "ネットワークマネージャーを使用(GNOME と KDE でインターネットをグラフィカルに設定するのに必要)" msgid "Select one network interface to configure" msgstr "設定するネットワークインターフェイスを 1 つ選択" @@ -224,7 +224,7 @@ msgid "Choose which locale language to use" msgstr "使用するロケール言語を選択" msgid "Choose which locale encoding to use" -msgstr "使用するロケール エンコーディングを選択" +msgstr "使用するロケールエンコーディングを選択" msgid "Select one of the values shown below: " msgstr "以下の値のいずれかを選択: " @@ -449,7 +449,7 @@ msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate msgstr "Pacman はすでに実行されており、終了するまで最大 10 分間待機します。" msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "既存の pacman のロックが終了しませんでした。Archinstall を使用する前に、既存の pacman セッションをクリーンアップしてください。" +msgstr "既存の pacman のロックが終了しませんでした。archinstall を使用する前に、既存の pacman セッションをすべてクリーンアップしてください。" msgid "Choose which optional additional repositories to enable" msgstr "オプションで有効にする追加リポジトリを選択" @@ -823,6 +823,19 @@ msgstr "無効な入力です!有効な入力を使用して再試行してく msgid "Parallel Downloads" msgstr "並行ダウンロード" +msgid "Pacman" +msgstr "Pacman" + +msgid "Color" +msgstr "カラー" + +#, python-brace-format +msgid "Enter the number of parallel downloads (1-{})" +msgstr "並列ダウンロード数を入力 (1-{})" + +msgid "Enable colored output for pacman" +msgstr "pacman でカラー出力を有効にする" + msgid "ESC to skip" msgstr "Esc でスキップ" @@ -950,7 +963,7 @@ msgid "Encryption type" msgstr "暗号化のタイプ" msgid "Iteration time" -msgstr "反復時間" +msgstr "イテレーション時間" msgid "Enter iteration time for LUKS encryption (in milliseconds)" msgstr "LUKS 暗号化のイテレーション時間(ミリ秒単位)を入力" @@ -1030,7 +1043,7 @@ msgstr "選択したプロファイルにインストールするグリーター #, python-brace-format msgid "Environment type: {}" -msgstr "環境のタイプ: {}" +msgstr "環境タイプ: {}" msgid "The proprietary Nvidia driver is not supported by Sway. It is likely that you will run into issues, are you okay with that?" msgstr "プロプライエタリの Nvidia ドライバーは Sway ではサポートされていません。問題が発生する可能性がありますが、よろしいですか?" @@ -1173,7 +1186,7 @@ msgid "Locales" msgstr "ロケール" msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "NetworkManager を使用(GNOME と KDE でインターネットをグラフィカルに設定するのに必要)" +msgstr "ネットワークマネージャーを使用(GNOME と KDE でインターネットをグラフィカルに設定するのに必要)" msgid "Total: {} / {}" msgstr "全体: {} / {}" @@ -1296,7 +1309,7 @@ msgid "LVM disk encryption with more than 2 partitions is currently not supporte msgstr "パーティションが2個を超える場合の LVM ディスク暗号化は、現在サポートしていません" msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "NetworkManager を使用する(GNOME と KDE Plasma でインターネットをグラフィカルに設定するのに必要)" +msgstr "ネットワークマネージャーを使用(GNOME と KDE Plasma でインターネットをグラフィカルに設定するのに必要)" msgid "Select a LVM option" msgstr "LVM のオプションを選択" @@ -1550,7 +1563,7 @@ msgid "The specified configuration will be applied" msgstr "指定された設定が適用されます" msgid "Wipe" -msgstr "ワイプ" +msgstr "消去" msgid "Mark/Unmark as XBOOTLDR" msgstr "XBOOTLDR としてマーク/マーク解除" @@ -1663,6 +1676,123 @@ msgstr "検索モードを開始" msgid "Exit search mode" msgstr "検索モードを終了" +msgid "General" +msgstr "一般" + +msgid "Navigation" +msgstr "ナビゲーション" + +msgid "Selection" +msgstr "選択" + +msgid "Search" +msgstr "検索" + +msgid "Down" +msgstr "下へ" + +msgid "Up" +msgstr "上へ" + +msgid "Confirm" +msgstr "確認" + +msgid "Focus right" +msgstr "右にフォーカス" + +msgid "Focus left" +msgstr "左にフォーカス" + +msgid "Toggle" +msgstr "切り替え" + +msgid "Show/Hide help" +msgstr "ヘルプを表示/隠す" + +msgid "Quit" +msgstr "終了" + +msgid "First" +msgstr "最初" + +msgid "Last" +msgstr "最後" + +msgid "Select" +msgstr "選択" + +msgid "Page Up" +msgstr "上のページへ" + +msgid "Page Down" +msgstr "下のページへ" + +msgid "Page up" +msgstr "上のページへ" + +msgid "Page down" +msgstr "下のページへ" + +msgid "Page Left" +msgstr "左のページへ" + +msgid "Page Right" +msgstr "右のページへ" + +msgid "Cursor up" +msgstr "カーソルを上へ" + +msgid "Cursor down" +msgstr "カースルを下へ" + +msgid "Cursor right" +msgstr "カーソルを右へ" + +msgid "Cursor left" +msgstr "カーソルを左へ" + +msgid "Top" +msgstr "一番上へ" + +msgid "Bottom" +msgstr "一番下へ" + +msgid "Home" +msgstr "ホーム" + +msgid "End" +msgstr "最後へ" + +msgid "Toggle option" +msgstr "オプションを切り替え" + +msgid "Scroll Up" +msgstr "上にスクロール" + +msgid "Scroll Down" +msgstr "下にスクロール" + +msgid "Scroll Left" +msgstr "左にスクロール" + +msgid "Scroll Right" +msgstr "右にスクロール" + +msgid "Scroll Home" +msgstr "ホームにスクロール" + +msgid "Scroll End" +msgstr "一番下にスクロール" + +msgid "Focus Next" +msgstr "次にフォーカス" + +msgid "Focus Previous" +msgstr "前にフォーカス" + +msgid "Copy selected text" +msgstr "選択したテキストをコピー" + msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" msgstr "labwc はお使いの Seat(キーボード、マウスなどのハードウェアデバイス群)にアクセスする必要があります" @@ -1873,14 +2003,29 @@ msgid "Select zram compression algorithm:" msgstr "zram 圧縮アルゴリズムを選択:" msgid "Use Network Manager (default backend)" -msgstr "NetworkManager(デフォルトのバックエンド)を使用する" +msgstr "Network Manager を使用(デフォルトのバックエンド)" msgid "Use Network Manager (iwd backend)" -msgstr "NetworkManager (iwd バックエンド) を使用する" +msgstr "Network Manager を使用(iwd バックエンド)" msgid "Firewall" msgstr "ファイアウォール" +msgid "Additional fonts" +msgstr "追加フォント" + +msgid "Select font packages to install" +msgstr "インストールするフォントパッケージを選択" + +msgid "Unicode font coverage for most languages" +msgstr "ほとんどの言語をカバーする Unicode フォント" + +msgid "color emoji for browsers and apps" +msgstr "ブラウザやアプリ用のカラー絵文字" + +msgid "Chinese, Japanese, Korean characters" +msgstr "日本語、中国語、韓国語の文字" + msgid "Select audio configuration" msgstr "オーディオ設定を選択" @@ -1990,3 +2135,66 @@ msgstr "パスワードを入力" msgid "The password did not match, please try again" msgstr "パスワードが一致しません。もう一度試してください" + +msgid "Password strength: Weak" +msgstr "パスワードの強度: 弱い" + +msgid "Password strength: Moderate" +msgstr "パスワードの強度: 中程度" + +msgid "Password strength: Strong" +msgstr "パスワードの強度: 強い" + +msgid "The selected desktop profile requires a regular user to log in via the greeter" +msgstr "選択されたデスクトッププロファイルでは、一般ユーザーがグリーター経由でログインする必要があります" + +#, python-brace-format +msgid "Environment type: {} {}" +msgstr "環境タイプ: {} {}" + +msgid "Input cannot be empty" +msgstr "入力は空にできません" + +msgid "Recommended" +msgstr "推奨" + +msgid "Package" +msgstr "パッケージ" + +msgid "Curated selection of KDE Plasma packages" +msgstr "厳選した KDE Plasma パッケージ" + +msgid "Dependencies" +msgstr "依存関係" + +msgid "Package group" +msgstr "パッケージグループ" + +msgid "Extensive KDE Plasma installation" +msgstr "広範囲の KDE Plasma インストール" + +msgid "Packages in group" +msgstr "グループ内のパッケージ" + +msgid "Minimal KDE Plasma installation" +msgstr "最小限の KDE Plasma インストール" + +msgid "Description" +msgstr "説明" + +msgid "Select a flavor of KDE Plasma to install" +msgstr "インストールする KDE Plasma のバージョンを選択" + +msgid "Arial/Times/Courier replacement, Cyrillic support for Steam/games" +msgstr "Arial/Times/Courier フォントの代替、Steam/ゲームにおけるキリル文字のサポート" + +msgid "wide Unicode coverage, good fallback font" +msgstr "Unicode を広くカバーする良い代替フォント" + +#, python-brace-format +msgid "Setting up U2F login: {u2f_config.u2f_login_method.value}" +msgstr "U2F ログインの設定: {u2f_config.u2f_login_method.value}" + +#, python-brace-format +msgid "Default: {DEFAULT_ITER_TIME}ms, Recommended range: 1000-60000" +msgstr "デフォルト: {DEFAULT_ITER_TIME}ms, 推奨範囲: 1000-60000" diff --git a/archinstall/locales/uk/LC_MESSAGES/base.po b/archinstall/locales/uk/LC_MESSAGES/base.po index a178ac2d..88bf9ede 100644 --- a/archinstall/locales/uk/LC_MESSAGES/base.po +++ b/archinstall/locales/uk/LC_MESSAGES/base.po @@ -256,6 +256,9 @@ msgstr "Мова локалізації" msgid "Locale encoding" msgstr "Кодування локалізації" +msgid "Console font" +msgstr "Шрифт консолі" + msgid "Drive(s)" msgstr "Диск(и)" @@ -1219,6 +1222,21 @@ msgstr "Модель" msgid "Invalid configuration: {error}" msgstr "Неправильна конфігурація: {error}" +msgid "Ready to install" +msgstr "Готово до встановлення" + +msgid "Disks" +msgstr "Диски" + +msgid "Packages" +msgstr "Пакети" + +msgid "Network" +msgstr "Мережа" + +msgid "Locale" +msgstr "Локаль" + msgid "Type" msgstr "Тип" diff --git a/archinstall/tui/ui/menu_item.py b/archinstall/tui/ui/menu_item.py index ed5a16ec..4c10e275 100644 --- a/archinstall/tui/ui/menu_item.py +++ b/archinstall/tui/ui/menu_item.py @@ -1,4 +1,4 @@ -from collections.abc import Awaitable, Callable +from collections.abc import Awaitable, Callable, Iterable from dataclasses import dataclass, field from enum import Enum from functools import cached_property @@ -148,7 +148,7 @@ class MenuItemGroup: cls, enum_cls: type[Enum], sort_items: bool = False, - preset: Enum | None = None, + preset: Iterable[Enum] | Enum | None = None, ) -> Self: items = [MenuItem(elem.value, value=elem) for elem in enum_cls] group = cls(items, sort_items=sort_items)