Merge branch 'master' into fix-issue-4368-mkinitcpio

# Conflicts:
#	archinstall/lib/installer.py
This commit is contained in:
Softer 2026-04-28 13:46:32 +03:00
commit d91fcc915b
18 changed files with 518 additions and 204 deletions

View File

@ -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)

View File

@ -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.

View File

@ -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)

View File

@ -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'

View File

@ -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,

View File

@ -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

View File

@ -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'

View File

@ -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')

View File

@ -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(

View File

@ -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:

View File

@ -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

View File

@ -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 ""

View File

@ -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 :"

View File

@ -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"

View File

@ -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 "Тип"

View File

@ -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)