Merge branch 'master' into network-mandatory-selection
This commit is contained in:
commit
ccc378be56
|
|
@ -33,7 +33,7 @@ jobs:
|
|||
- run: pacman-key --init
|
||||
- run: pacman --noconfirm -Sy archlinux-keyring
|
||||
- run: ./build_iso.sh
|
||||
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
|
||||
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
|
||||
with:
|
||||
name: Arch Live ISO
|
||||
path: /tmp/archlive/out/*.iso
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ jobs:
|
|||
archinstall --script guided -v
|
||||
archinstall --script only_hd -v
|
||||
archinstall --script minimal -v
|
||||
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7
|
||||
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
|
||||
with:
|
||||
name: archinstall
|
||||
path: dist/*
|
||||
|
|
|
|||
|
|
@ -5,5 +5,5 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||
- uses: astral-sh/ruff-action@4919ec5cf1f49eff0871dbcea0da843445b837e6 # v3.6.1
|
||||
- uses: astral-sh/ruff-action@0ce1b0bf8b818ef400413f810f8a11cdbda0034b # v4.0.0
|
||||
- run: ruff format --diff
|
||||
|
|
|
|||
|
|
@ -5,4 +5,4 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
||||
- uses: astral-sh/ruff-action@4919ec5cf1f49eff0871dbcea0da843445b837e6 # v3.6.1
|
||||
- uses: astral-sh/ruff-action@0ce1b0bf8b818ef400413f810f8a11cdbda0034b # v4.0.0
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
default_stages: ['pre-commit']
|
||||
repos:
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
rev: v0.15.10
|
||||
rev: v0.15.11
|
||||
hooks:
|
||||
# fix unused imports and sort them
|
||||
- id: ruff
|
||||
|
|
@ -31,7 +31,7 @@ repos:
|
|||
args: [--config=.flake8]
|
||||
fail_fast: true
|
||||
- repo: https://github.com/pre-commit/mirrors-mypy
|
||||
rev: v1.20.0
|
||||
rev: v1.20.1
|
||||
hooks:
|
||||
- id: mypy
|
||||
args: [
|
||||
|
|
|
|||
2
PKGBUILD
2
PKGBUILD
|
|
@ -5,7 +5,7 @@
|
|||
# Contributor: demostanis worlds <demostanis@protonmail.com>
|
||||
|
||||
pkgname=archinstall
|
||||
pkgver=4.1
|
||||
pkgver=4.3
|
||||
pkgrel=1
|
||||
pkgdesc="Just another guided/automated Arch Linux installer with a twist"
|
||||
arch=(any)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
from typing import TYPE_CHECKING
|
||||
|
||||
from archinstall.lib.models.application import FontsConfiguration
|
||||
from archinstall.lib.output import debug
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from archinstall.lib.installer import Installer
|
||||
|
||||
|
||||
class FontsApp:
|
||||
def install(self, install_session: Installer, fonts_config: FontsConfiguration) -> None:
|
||||
packages = [f.value for f in fonts_config.fonts]
|
||||
debug(f'Installing fonts: {packages}')
|
||||
install_session.add_additional_packages(packages)
|
||||
|
|
@ -21,6 +21,18 @@ class PowerManagementApp:
|
|||
'tuned-ppd',
|
||||
]
|
||||
|
||||
@property
|
||||
def ppd_services(self) -> list[str]:
|
||||
return [
|
||||
'power-profiles-daemon.service',
|
||||
]
|
||||
|
||||
@property
|
||||
def tuned_services(self) -> list[str]:
|
||||
return [
|
||||
'tuned.service',
|
||||
]
|
||||
|
||||
def install(
|
||||
self,
|
||||
install_session: Installer,
|
||||
|
|
@ -31,5 +43,7 @@ class PowerManagementApp:
|
|||
match power_management_config.power_management:
|
||||
case PowerManagement.POWER_PROFILES_DAEMON:
|
||||
install_session.add_additional_packages(self.ppd_packages)
|
||||
install_session.enable_service(self.ppd_services)
|
||||
case PowerManagement.TUNED:
|
||||
install_session.add_additional_packages(self.tuned_packages)
|
||||
install_session.enable_service(self.tuned_services)
|
||||
|
|
|
|||
|
|
@ -212,6 +212,6 @@ class Profile:
|
|||
text = tr('Installed packages') + ':\n'
|
||||
|
||||
for pkg in sorted(packages):
|
||||
text += f'\t- {pkg}\n'
|
||||
text += f' - {pkg}\n'
|
||||
|
||||
return text
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ from typing import TYPE_CHECKING
|
|||
from archinstall.applications.audio import AudioApp
|
||||
from archinstall.applications.bluetooth import BluetoothApp
|
||||
from archinstall.applications.firewall import FirewallApp
|
||||
from archinstall.applications.fonts import FontsApp
|
||||
from archinstall.applications.power_management import PowerManagementApp
|
||||
from archinstall.applications.print_service import PrintServiceApp
|
||||
from archinstall.lib.models import Audio
|
||||
|
|
@ -42,3 +43,9 @@ class ApplicationHandler:
|
|||
install_session,
|
||||
app_config.firewall_config,
|
||||
)
|
||||
|
||||
if app_config.fonts_config:
|
||||
FontsApp().install(
|
||||
install_session,
|
||||
app_config.fonts_config,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -10,6 +10,8 @@ from archinstall.lib.models.application import (
|
|||
BluetoothConfiguration,
|
||||
Firewall,
|
||||
FirewallConfiguration,
|
||||
FontPackage,
|
||||
FontsConfiguration,
|
||||
PowerManagement,
|
||||
PowerManagementConfiguration,
|
||||
PrintServiceConfiguration,
|
||||
|
|
@ -77,6 +79,13 @@ class ApplicationMenu(AbstractSubMenu[ApplicationConfiguration]):
|
|||
preview_action=self._prev_firewall,
|
||||
key='firewall_config',
|
||||
),
|
||||
MenuItem(
|
||||
text=tr('Additional fonts'),
|
||||
action=select_fonts,
|
||||
value=self._app_config.fonts_config,
|
||||
preview_action=self._prev_fonts,
|
||||
key='fonts_config',
|
||||
),
|
||||
]
|
||||
|
||||
def _prev_power_management(self, item: MenuItem) -> str | None:
|
||||
|
|
@ -115,6 +124,13 @@ class ApplicationMenu(AbstractSubMenu[ApplicationConfiguration]):
|
|||
return f'{tr("Firewall")}: {config.firewall.value}'
|
||||
return None
|
||||
|
||||
def _prev_fonts(self, item: MenuItem) -> str | None:
|
||||
if item.value is not None:
|
||||
config: FontsConfiguration = item.value
|
||||
packages = ', '.join(f.value for f in config.fonts)
|
||||
return f'{tr("Additional fonts")}: {packages}'
|
||||
return None
|
||||
|
||||
|
||||
async def select_power_management(preset: PowerManagementConfiguration | None = None) -> PowerManagementConfiguration | None:
|
||||
group = MenuItemGroup.from_enum(PowerManagement)
|
||||
|
|
@ -217,3 +233,31 @@ async def select_firewall(preset: FirewallConfiguration | None = None) -> Firewa
|
|||
return FirewallConfiguration(firewall=result.get_value())
|
||||
case ResultType.Reset:
|
||||
return None
|
||||
|
||||
|
||||
async def select_fonts(preset: FontsConfiguration | None = None) -> FontsConfiguration | None:
|
||||
items = [MenuItem(f'{f.value} ({f.description()})', value=f) for f in FontPackage]
|
||||
group = MenuItemGroup(items)
|
||||
|
||||
if preset:
|
||||
for f in preset.fonts:
|
||||
group.set_selected_by_value(f)
|
||||
|
||||
result = await Selection[FontPackage](
|
||||
group,
|
||||
header=tr('Select font packages to install'),
|
||||
allow_skip=True,
|
||||
allow_reset=True,
|
||||
multi=True,
|
||||
).show()
|
||||
|
||||
match result.type_:
|
||||
case ResultType.Skip:
|
||||
return preset
|
||||
case ResultType.Selection:
|
||||
selected = result.get_values()
|
||||
if selected:
|
||||
return FontsConfiguration(fonts=selected)
|
||||
return None
|
||||
case ResultType.Reset:
|
||||
return None
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ 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.packages import Repository
|
||||
from archinstall.lib.models.pacman import PacmanConfiguration
|
||||
from archinstall.lib.models.profile import ProfileConfiguration
|
||||
from archinstall.lib.models.users import Password, User, UserSerialization
|
||||
from archinstall.lib.output import debug, error, logger, warn
|
||||
|
|
@ -73,7 +74,7 @@ class ArchConfig:
|
|||
kernels: list[str] = field(default_factory=lambda: ['linux'])
|
||||
ntp: bool = True
|
||||
packages: list[str] = field(default_factory=list)
|
||||
parallel_downloads: int = 0
|
||||
pacman_config: PacmanConfiguration = field(default_factory=PacmanConfiguration.default)
|
||||
timezone: str = 'UTC'
|
||||
services: list[str] = field(default_factory=list)
|
||||
custom_commands: list[str] = field(default_factory=list)
|
||||
|
|
@ -104,7 +105,7 @@ class ArchConfig:
|
|||
'kernels': self.kernels,
|
||||
'ntp': self.ntp,
|
||||
'packages': self.packages,
|
||||
'parallel_downloads': self.parallel_downloads,
|
||||
'pacman_config': self.pacman_config.json(),
|
||||
'swap': self.swap,
|
||||
'timezone': self.timezone,
|
||||
'services': self.services,
|
||||
|
|
@ -142,6 +143,7 @@ class ArchConfig:
|
|||
|
||||
if archinstall_lang := args_config.get('archinstall-language', None):
|
||||
arch_config.archinstall_language = translation_handler.get_language_by_name(archinstall_lang)
|
||||
translation_handler.activate(arch_config.archinstall_language, set_font=False)
|
||||
|
||||
if disk_config := args_config.get('disk_config', {}):
|
||||
enc_password = args_config.get('encryption_password', '')
|
||||
|
|
@ -209,8 +211,10 @@ class ArchConfig:
|
|||
if packages := args_config.get('packages', []):
|
||||
arch_config.packages = packages
|
||||
|
||||
if parallel_downloads := args_config.get('parallel_downloads', 0):
|
||||
arch_config.parallel_downloads = parallel_downloads
|
||||
if pacman_config := args_config.get('pacman_config', None):
|
||||
arch_config.pacman_config = PacmanConfiguration.parse_arg(pacman_config)
|
||||
elif parallel_downloads := args_config.get('parallel_downloads', 0):
|
||||
arch_config.pacman_config = PacmanConfiguration(parallel_downloads=int(parallel_downloads))
|
||||
|
||||
swap_arg = args_config.get('swap')
|
||||
if swap_arg is not None:
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ from pathlib import Path
|
|||
from types import TracebackType
|
||||
from typing import ClassVar, Self
|
||||
|
||||
from archinstall.lib.command import SysCommand, SysCommandWorker, locate_binary
|
||||
from archinstall.lib.command import SysCommand, SysCommandWorker
|
||||
from archinstall.lib.exceptions import SysCallError
|
||||
from archinstall.lib.output import error
|
||||
|
||||
|
|
@ -105,17 +105,7 @@ class Boot:
|
|||
return self.session.is_alive()
|
||||
|
||||
def SysCommand(self, cmd: list[str], *args, **kwargs) -> SysCommand: # type: ignore[no-untyped-def]
|
||||
if cmd[0][0] != '/' and cmd[0][:2] != './':
|
||||
# This check is also done in SysCommand & SysCommandWorker.
|
||||
# However, that check is done for `machinectl` and not for our chroot command.
|
||||
# So this wrapper for SysCommand will do this additionally.
|
||||
|
||||
cmd[0] = locate_binary(cmd[0])
|
||||
|
||||
return SysCommand(['systemd-run', f'--machine={self.container_name}', '--pty', *cmd], *args, **kwargs)
|
||||
|
||||
def SysCommandWorker(self, cmd: list[str], *args, **kwargs) -> SysCommandWorker: # type: ignore[no-untyped-def]
|
||||
if cmd[0][0] != '/' and cmd[0][:2] != './':
|
||||
cmd[0] = locate_binary(cmd[0])
|
||||
|
||||
return SysCommandWorker(['systemd-run', f'--machine={self.container_name}', '--pty', *cmd], *args, **kwargs)
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ class DeviceHandler:
|
|||
fs_type = self._determine_fs_type(partition, lsblk_info)
|
||||
subvol_infos = []
|
||||
|
||||
if fs_type == FilesystemType.Btrfs:
|
||||
if fs_type == FilesystemType.BTRFS:
|
||||
subvol_infos = self.get_btrfs_info(partition.path, lsblk_info)
|
||||
|
||||
partition_infos.append(
|
||||
|
|
@ -147,8 +147,8 @@ class DeviceHandler:
|
|||
) -> FilesystemType | None:
|
||||
try:
|
||||
if partition.fileSystem:
|
||||
if partition.fileSystem.type == FilesystemType.LinuxSwap.parted_value:
|
||||
return FilesystemType.LinuxSwap
|
||||
if partition.fileSystem.type == FilesystemType.LINUX_SWAP.parted_value:
|
||||
return FilesystemType.LINUX_SWAP
|
||||
return FilesystemType(partition.fileSystem.type)
|
||||
elif lsblk_info is not None:
|
||||
return FilesystemType(lsblk_info.fstype) if lsblk_info.fstype else None
|
||||
|
|
@ -241,20 +241,20 @@ class DeviceHandler:
|
|||
options = []
|
||||
|
||||
match fs_type:
|
||||
case FilesystemType.Btrfs | FilesystemType.Xfs:
|
||||
case FilesystemType.BTRFS | FilesystemType.XFS:
|
||||
# Force overwrite
|
||||
options.append('-f')
|
||||
case FilesystemType.F2fs:
|
||||
case FilesystemType.F2FS:
|
||||
options.append('-f')
|
||||
options.extend(('-O', 'extra_attr'))
|
||||
case FilesystemType.Ext2 | FilesystemType.Ext3 | FilesystemType.Ext4:
|
||||
case FilesystemType.EXT2 | FilesystemType.EXT3 | FilesystemType.EXT4:
|
||||
# Force create
|
||||
options.append('-F')
|
||||
case FilesystemType.Fat12 | FilesystemType.Fat16 | FilesystemType.Fat32:
|
||||
case FilesystemType.FAT12 | FilesystemType.FAT16 | FilesystemType.FAT32:
|
||||
mkfs_type = 'fat'
|
||||
# Set FAT size
|
||||
options.extend(('-F', fs_type.value.removeprefix(mkfs_type)))
|
||||
case FilesystemType.LinuxSwap:
|
||||
case FilesystemType.LINUX_SWAP:
|
||||
command = 'mkswap'
|
||||
case _:
|
||||
raise UnknownFilesystemFormat(f'Filetype "{fs_type.value}" is not supported')
|
||||
|
|
@ -342,7 +342,7 @@ class DeviceHandler:
|
|||
) -> None:
|
||||
# when we require a delete and the partition to be (re)created
|
||||
# already exists then we have to delete it first
|
||||
if requires_delete and part_mod.status in [ModificationStatus.Modify, ModificationStatus.Delete]:
|
||||
if requires_delete and part_mod.status in [ModificationStatus.MODIFY, ModificationStatus.DELETE]:
|
||||
info(f'Delete existing partition: {part_mod.safe_dev_path}')
|
||||
part_info = self.find_partition(part_mod.safe_dev_path)
|
||||
|
||||
|
|
@ -351,7 +351,7 @@ class DeviceHandler:
|
|||
|
||||
disk.deletePartition(part_info.partition)
|
||||
|
||||
if part_mod.status == ModificationStatus.Delete:
|
||||
if part_mod.status == ModificationStatus.DELETE:
|
||||
return
|
||||
|
||||
start_sector = part_mod.start.convert(
|
||||
|
|
@ -505,7 +505,7 @@ class DeviceHandler:
|
|||
debug(f'Unmounting: {partition.path}')
|
||||
|
||||
# un-mount for existing encrypted partitions
|
||||
if partition.fs_type == FilesystemType.Crypto_luks:
|
||||
if partition.fs_type == FilesystemType.CRYPTO_LUKS:
|
||||
Luks2(partition.path).lock()
|
||||
else:
|
||||
umount(partition.path, recursive=True)
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ from archinstall.lib.models.device import (
|
|||
LvmLayoutType,
|
||||
LvmVolume,
|
||||
LvmVolumeGroup,
|
||||
LvmVolumeStatus,
|
||||
ModificationStatus,
|
||||
PartitionFlag,
|
||||
PartitionModification,
|
||||
|
|
@ -281,7 +280,7 @@ class DiskLayoutConfigurationMenu(AbstractSubMenu[DiskMenuConfig]):
|
|||
if enc_config.encryption_password:
|
||||
output += tr('Password') + f': {enc_config.encryption_password.hidden()}\n'
|
||||
|
||||
if enc_type != EncryptionType.NoEncryption:
|
||||
if enc_type != EncryptionType.NO_ENCRYPTION:
|
||||
output += tr('Iteration time') + f': {enc_config.iter_time or DEFAULT_ITER_TIME}ms\n'
|
||||
|
||||
if enc_config.partitions:
|
||||
|
|
@ -503,22 +502,22 @@ def _boot_partition(sector_size: SectorSize, using_gpt: bool) -> PartitionModifi
|
|||
|
||||
# boot partition
|
||||
return PartitionModification(
|
||||
status=ModificationStatus.Create,
|
||||
type=PartitionType.Primary,
|
||||
status=ModificationStatus.CREATE,
|
||||
type=PartitionType.PRIMARY,
|
||||
start=start,
|
||||
length=size,
|
||||
mountpoint=Path('/boot'),
|
||||
fs_type=FilesystemType.Fat32,
|
||||
fs_type=FilesystemType.FAT32,
|
||||
flags=flags,
|
||||
)
|
||||
|
||||
|
||||
async def select_main_filesystem_format() -> FilesystemType:
|
||||
items = [
|
||||
MenuItem('btrfs', value=FilesystemType.Btrfs),
|
||||
MenuItem('ext4', value=FilesystemType.Ext4),
|
||||
MenuItem('xfs', value=FilesystemType.Xfs),
|
||||
MenuItem('f2fs', value=FilesystemType.F2fs),
|
||||
MenuItem(FilesystemType.BTRFS.value, value=FilesystemType.BTRFS),
|
||||
MenuItem(FilesystemType.EXT4.value, value=FilesystemType.EXT4),
|
||||
MenuItem(FilesystemType.XFS.value, value=FilesystemType.XFS),
|
||||
MenuItem(FilesystemType.F2FS.value, value=FilesystemType.F2FS),
|
||||
]
|
||||
|
||||
group = MenuItemGroup(items, sort_items=False)
|
||||
|
|
@ -601,7 +600,7 @@ async def suggest_single_disk_layout(
|
|||
available_space = total_size
|
||||
min_size_to_allow_home_part = Size(64, Unit.GiB, sector_size)
|
||||
|
||||
if filesystem_type == FilesystemType.Btrfs:
|
||||
if filesystem_type == FilesystemType.BTRFS:
|
||||
prompt = tr('Would you like to use BTRFS subvolumes with a default structure?') + '\n'
|
||||
|
||||
result = await Confirmation(
|
||||
|
|
@ -655,8 +654,8 @@ async def suggest_single_disk_layout(
|
|||
root_length = available_space - root_start
|
||||
|
||||
root_partition = PartitionModification(
|
||||
status=ModificationStatus.Create,
|
||||
type=PartitionType.Primary,
|
||||
status=ModificationStatus.CREATE,
|
||||
type=PartitionType.PRIMARY,
|
||||
start=root_start,
|
||||
length=root_length,
|
||||
mountpoint=Path('/') if not using_subvolumes else None,
|
||||
|
|
@ -680,8 +679,8 @@ async def suggest_single_disk_layout(
|
|||
flags.append(PartitionFlag.LINUX_HOME)
|
||||
|
||||
home_partition = PartitionModification(
|
||||
status=ModificationStatus.Create,
|
||||
type=PartitionType.Primary,
|
||||
status=ModificationStatus.CREATE,
|
||||
type=PartitionType.PRIMARY,
|
||||
start=home_start,
|
||||
length=home_length,
|
||||
mountpoint=Path('/home'),
|
||||
|
|
@ -734,7 +733,7 @@ async def suggest_multi_disk_layout(
|
|||
_ = await Notify(text).show()
|
||||
return []
|
||||
|
||||
if filesystem_type == FilesystemType.Btrfs:
|
||||
if filesystem_type == FilesystemType.BTRFS:
|
||||
mount_options = await select_mount_options()
|
||||
|
||||
device_paths = ', '.join(str(d.device_info.path) for d in devices)
|
||||
|
|
@ -765,8 +764,8 @@ async def suggest_multi_disk_layout(
|
|||
|
||||
# add root partition to the root device
|
||||
root_partition = PartitionModification(
|
||||
status=ModificationStatus.Create,
|
||||
type=PartitionType.Primary,
|
||||
status=ModificationStatus.CREATE,
|
||||
type=PartitionType.PRIMARY,
|
||||
start=root_start,
|
||||
length=root_length,
|
||||
mountpoint=Path('/'),
|
||||
|
|
@ -787,8 +786,8 @@ async def suggest_multi_disk_layout(
|
|||
|
||||
# add home partition to home device
|
||||
home_partition = PartitionModification(
|
||||
status=ModificationStatus.Create,
|
||||
type=PartitionType.Primary,
|
||||
status=ModificationStatus.CREATE,
|
||||
type=PartitionType.PRIMARY,
|
||||
start=home_start,
|
||||
length=home_length,
|
||||
mountpoint=Path('/home'),
|
||||
|
|
@ -817,7 +816,7 @@ async def suggest_lvm_layout(
|
|||
if not filesystem_type:
|
||||
filesystem_type = await select_main_filesystem_format()
|
||||
|
||||
if filesystem_type == FilesystemType.Btrfs:
|
||||
if filesystem_type == FilesystemType.BTRFS:
|
||||
prompt = tr('Would you like to use BTRFS subvolumes with a default structure?') + '\n'
|
||||
result = await Confirmation(header=prompt, allow_skip=False, preset=True).show()
|
||||
|
||||
|
|
@ -851,7 +850,7 @@ async def suggest_lvm_layout(
|
|||
lvm_vol_group = LvmVolumeGroup(vg_grp_name, pvs=other_part)
|
||||
|
||||
root_vol = LvmVolume(
|
||||
status=LvmVolumeStatus.Create,
|
||||
status=ModificationStatus.CREATE,
|
||||
name='root',
|
||||
fs_type=filesystem_type,
|
||||
length=root_vol_size,
|
||||
|
|
@ -864,7 +863,7 @@ async def suggest_lvm_layout(
|
|||
|
||||
if home_volume:
|
||||
home_vol = LvmVolume(
|
||||
status=LvmVolumeStatus.Create,
|
||||
status=ModificationStatus.CREATE,
|
||||
name='home',
|
||||
fs_type=filesystem_type,
|
||||
length=home_vol_size,
|
||||
|
|
|
|||
|
|
@ -105,19 +105,19 @@ class DiskEncryptionMenu(AbstractSubMenu[DiskEncryption]):
|
|||
|
||||
def _check_dep_enc_type(self) -> bool:
|
||||
enc_type: EncryptionType | None = self._item_group.find_by_key('encryption_type').value
|
||||
if enc_type and enc_type != EncryptionType.NoEncryption:
|
||||
if enc_type and enc_type != EncryptionType.NO_ENCRYPTION:
|
||||
return True
|
||||
return False
|
||||
|
||||
def _check_dep_partitions(self) -> bool:
|
||||
enc_type: EncryptionType | None = self._item_group.find_by_key('encryption_type').value
|
||||
if enc_type and enc_type in [EncryptionType.Luks, EncryptionType.LvmOnLuks]:
|
||||
if enc_type and enc_type in [EncryptionType.LUKS, EncryptionType.LVM_ON_LUKS]:
|
||||
return True
|
||||
return False
|
||||
|
||||
def _check_dep_lvm_vols(self) -> bool:
|
||||
enc_type: EncryptionType | None = self._item_group.find_by_key('encryption_type').value
|
||||
if enc_type and enc_type == EncryptionType.LuksOnLvm:
|
||||
if enc_type and enc_type == EncryptionType.LUKS_ON_LVM:
|
||||
return True
|
||||
return False
|
||||
|
||||
|
|
@ -137,13 +137,13 @@ class DiskEncryptionMenu(AbstractSubMenu[DiskEncryption]):
|
|||
assert enc_partitions is not None
|
||||
assert enc_lvm_vols is not None
|
||||
|
||||
if enc_type in [EncryptionType.Luks, EncryptionType.LvmOnLuks] and enc_partitions:
|
||||
if enc_type in [EncryptionType.LUKS, EncryptionType.LVM_ON_LUKS] and enc_partitions:
|
||||
enc_lvm_vols = []
|
||||
|
||||
if enc_type == EncryptionType.LuksOnLvm:
|
||||
if enc_type == EncryptionType.LUKS_ON_LVM:
|
||||
enc_partitions = []
|
||||
|
||||
if enc_type != EncryptionType.NoEncryption and enc_password and (enc_partitions or enc_lvm_vols):
|
||||
if enc_type != EncryptionType.NO_ENCRYPTION and enc_password and (enc_partitions or enc_lvm_vols):
|
||||
return DiskEncryption(
|
||||
encryption_password=enc_password,
|
||||
encryption_type=enc_type,
|
||||
|
|
@ -227,7 +227,7 @@ class DiskEncryptionMenu(AbstractSubMenu[DiskEncryption]):
|
|||
iter_time = item.value
|
||||
enc_type = self._item_group.find_by_key('encryption_type').value
|
||||
|
||||
if iter_time and enc_type != EncryptionType.NoEncryption:
|
||||
if iter_time and enc_type != EncryptionType.NO_ENCRYPTION:
|
||||
return f'{tr("Iteration time")}: {iter_time}ms'
|
||||
|
||||
return None
|
||||
|
|
@ -240,9 +240,9 @@ async def select_encryption_type(
|
|||
options: list[EncryptionType] = []
|
||||
|
||||
if lvm_config:
|
||||
options = [EncryptionType.LvmOnLuks, EncryptionType.LuksOnLvm]
|
||||
options = [EncryptionType.LVM_ON_LUKS, EncryptionType.LUKS_ON_LVM]
|
||||
else:
|
||||
options = [EncryptionType.Luks]
|
||||
options = [EncryptionType.LUKS]
|
||||
|
||||
if not preset:
|
||||
preset = options[0]
|
||||
|
|
@ -321,7 +321,7 @@ async def select_partitions_to_encrypt(
|
|||
avail_partitions = [p for p in partitions if not p.exists()]
|
||||
|
||||
if avail_partitions:
|
||||
group = MenuItemGroup.from_objects(partitions)
|
||||
group = MenuItemGroup.from_objects(avail_partitions)
|
||||
group.set_selected_by_value(preset)
|
||||
|
||||
result = await Table[PartitionModification](
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ class FilesystemHandler:
|
|||
self._format_partitions(mod.partitions)
|
||||
|
||||
for part_mod in mod.partitions:
|
||||
if part_mod.fs_type == FilesystemType.Btrfs and part_mod.is_create_or_modify():
|
||||
if part_mod.fs_type == FilesystemType.BTRFS and part_mod.is_create_or_modify():
|
||||
device_handler.create_btrfs_volumes(part_mod, enc_conf=self._enc_config)
|
||||
|
||||
def _format_partitions(
|
||||
|
|
@ -113,7 +113,7 @@ class FilesystemHandler:
|
|||
# verify that all partitions have a path set (which implies that they have been created)
|
||||
lambda x: x.dev_path is None: ValueError('When formatting, all partitions must have a path set'),
|
||||
# crypto luks is not a valid file system type
|
||||
lambda x: x.fs_type is FilesystemType.Crypto_luks: ValueError('Crypto luks cannot be set as a filesystem type'),
|
||||
lambda x: x.fs_type is FilesystemType.CRYPTO_LUKS: ValueError('Crypto luks cannot be set as a filesystem type'),
|
||||
# file system type must be set
|
||||
lambda x: x.fs_type is None: ValueError('File system type must be set for modification'),
|
||||
}
|
||||
|
|
@ -139,7 +139,7 @@ class FilesystemHandler:
|
|||
self._format_lvm_vols(self._disk_config.lvm_config)
|
||||
|
||||
def _setup_lvm_encrypted(self, lvm_config: LvmConfiguration, enc_config: DiskEncryption) -> None:
|
||||
if enc_config.encryption_type == EncryptionType.LvmOnLuks:
|
||||
if enc_config.encryption_type == EncryptionType.LVM_ON_LUKS:
|
||||
enc_mods = self._encrypt_partitions(enc_config, lock_after_create=False)
|
||||
|
||||
self._setup_lvm(lvm_config, enc_mods)
|
||||
|
|
@ -148,7 +148,7 @@ class FilesystemHandler:
|
|||
# Don't close LVM or LUKS during setup - keep everything active
|
||||
# The installation phase will handle unlocking and mounting
|
||||
# Closing causes "parent leaked" and lvchange errors
|
||||
elif enc_config.encryption_type == EncryptionType.LuksOnLvm:
|
||||
elif enc_config.encryption_type == EncryptionType.LUKS_ON_LVM:
|
||||
self._setup_lvm(lvm_config)
|
||||
enc_vols = self._encrypt_lvm_vols(lvm_config, enc_config, False)
|
||||
self._format_lvm_vols(lvm_config, enc_vols)
|
||||
|
|
@ -230,7 +230,7 @@ class FilesystemHandler:
|
|||
# find the mapper device yet
|
||||
device_handler.format(vol.fs_type, path)
|
||||
|
||||
if vol.fs_type == FilesystemType.Btrfs:
|
||||
if vol.fs_type == FilesystemType.BTRFS:
|
||||
device_handler.create_lvm_btrfs_subvolumes(path, vol.btrfs_subvols, vol.mount_options)
|
||||
|
||||
def _lvm_create_pvs(
|
||||
|
|
@ -318,7 +318,7 @@ class FilesystemHandler:
|
|||
# from arch wiki:
|
||||
# If a logical volume will be formatted with ext4, leave at least 256 MiB
|
||||
# free space in the volume group to allow using e2scrub
|
||||
if any([vol.fs_type == FilesystemType.Ext4 for vol in vol_gp.volumes]):
|
||||
if any([vol.fs_type == FilesystemType.EXT4 for vol in vol_gp.volumes]):
|
||||
largest_vol = max(vol_gp.volumes, key=lambda x: x.length)
|
||||
|
||||
lvm_vol_reduce(
|
||||
|
|
|
|||
|
|
@ -57,8 +57,8 @@ class DiskSegment:
|
|||
return self.segment.table_data()
|
||||
|
||||
part_mod = PartitionModification(
|
||||
status=ModificationStatus.Create,
|
||||
type=PartitionType._Unknown,
|
||||
status=ModificationStatus.CREATE,
|
||||
type=PartitionType._UNKNOWN,
|
||||
start=self.segment.start,
|
||||
length=self.segment.length,
|
||||
)
|
||||
|
|
@ -209,7 +209,7 @@ class PartitioningList(ListManager[DiskSegment]):
|
|||
@override
|
||||
def selected_action_display(self, selection: DiskSegment) -> str:
|
||||
if isinstance(selection.segment, PartitionModification):
|
||||
if selection.segment.status == ModificationStatus.Create:
|
||||
if selection.segment.status == ModificationStatus.CREATE:
|
||||
return tr('Partition - New')
|
||||
elif selection.segment.is_delete() and selection.segment.dev_path:
|
||||
title = tr('Partition') + '\n\n'
|
||||
|
|
@ -255,7 +255,7 @@ class PartitioningList(ListManager[DiskSegment]):
|
|||
]
|
||||
|
||||
# non btrfs partitions shouldn't get btrfs options
|
||||
if selection.segment.fs_type != FilesystemType.Btrfs:
|
||||
if selection.segment.fs_type != FilesystemType.BTRFS:
|
||||
not_filter += [
|
||||
self._actions['btrfs_mark_compressed'],
|
||||
self._actions['btrfs_mark_nodatacow'],
|
||||
|
|
@ -332,7 +332,7 @@ class PartitioningList(ListManager[DiskSegment]):
|
|||
partition.flags = []
|
||||
partition.set_flag(PartitionFlag.SWAP)
|
||||
# btrfs subvolumes will define mountpoints
|
||||
if fs_type == FilesystemType.Btrfs:
|
||||
if fs_type == FilesystemType.BTRFS:
|
||||
partition.mountpoint = None
|
||||
case 'btrfs_mark_compressed':
|
||||
self._toggle_mount_option(partition, BtrfsMountOption.compress)
|
||||
|
|
@ -357,7 +357,7 @@ class PartitioningList(ListManager[DiskSegment]):
|
|||
data: list[DiskSegment],
|
||||
) -> list[DiskSegment]:
|
||||
if entry.is_exists_or_modify():
|
||||
entry.status = ModificationStatus.Delete
|
||||
entry.status = ModificationStatus.DELETE
|
||||
part_mods = self.get_part_mods(data)
|
||||
else:
|
||||
part_mods = [d.segment for d in data if isinstance(d.segment, PartitionModification) and d.segment != entry]
|
||||
|
|
@ -391,20 +391,20 @@ class PartitioningList(ListManager[DiskSegment]):
|
|||
async def _prompt_formatting(self, partition: PartitionModification) -> None:
|
||||
# an existing partition can toggle between Exist or Modify
|
||||
if partition.is_modify():
|
||||
partition.status = ModificationStatus.Exist
|
||||
partition.status = ModificationStatus.EXIST
|
||||
return
|
||||
elif partition.exists():
|
||||
partition.status = ModificationStatus.Modify
|
||||
partition.status = ModificationStatus.MODIFY
|
||||
|
||||
# If we mark a partition for formatting, but the format is CRYPTO LUKS, there's no point in formatting it really
|
||||
# without asking the user which inner-filesystem they want to use. Since the flag 'encrypted' = True is already set,
|
||||
# it's safe to change the filesystem for this partition.
|
||||
if partition.fs_type == FilesystemType.Crypto_luks:
|
||||
if partition.fs_type == FilesystemType.CRYPTO_LUKS:
|
||||
prompt = tr('This partition is currently encrypted, to format it a filesystem has to be specified') + '\n'
|
||||
fs_type = await self._prompt_partition_fs_type(prompt)
|
||||
partition.fs_type = fs_type
|
||||
|
||||
if fs_type == FilesystemType.Btrfs:
|
||||
if fs_type == FilesystemType.BTRFS:
|
||||
partition.mountpoint = None
|
||||
|
||||
async def _prompt_mountpoint(self) -> Path:
|
||||
|
|
@ -417,7 +417,7 @@ class PartitioningList(ListManager[DiskSegment]):
|
|||
return mountpoint
|
||||
|
||||
async def _prompt_partition_fs_type(self, prompt: str | None = None) -> FilesystemType:
|
||||
fs_types = filter(lambda fs: fs != FilesystemType.Crypto_luks, FilesystemType)
|
||||
fs_types = filter(lambda fs: fs != FilesystemType.CRYPTO_LUKS, FilesystemType)
|
||||
items = [MenuItem(fs.value, value=fs) for fs in fs_types]
|
||||
group = MenuItemGroup(items, sort_items=False)
|
||||
|
||||
|
|
@ -522,12 +522,12 @@ class PartitioningList(ListManager[DiskSegment]):
|
|||
fs_type = await self._prompt_partition_fs_type()
|
||||
|
||||
mountpoint = None
|
||||
if fs_type not in (FilesystemType.Btrfs, FilesystemType.LinuxSwap):
|
||||
if fs_type not in (FilesystemType.BTRFS, FilesystemType.LINUX_SWAP):
|
||||
mountpoint = await self._prompt_mountpoint()
|
||||
|
||||
partition = PartitionModification(
|
||||
status=ModificationStatus.Create,
|
||||
type=PartitionType.Primary,
|
||||
status=ModificationStatus.CREATE,
|
||||
type=PartitionType.PRIMARY,
|
||||
start=free_space.start,
|
||||
length=length,
|
||||
fs_type=fs_type,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
from archinstall.lib.general.general_menu import (
|
||||
add_number_of_parallel_downloads,
|
||||
select_archinstall_language,
|
||||
select_hostname,
|
||||
select_ntp,
|
||||
|
|
@ -8,7 +7,6 @@ from archinstall.lib.general.general_menu import (
|
|||
from archinstall.lib.general.system_menu import select_driver, select_kernel, select_swap
|
||||
|
||||
__all__ = [
|
||||
'add_number_of_parallel_downloads',
|
||||
'select_archinstall_language',
|
||||
'select_driver',
|
||||
'select_hostname',
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ from enum import Enum
|
|||
from archinstall.lib.locale.utils import list_timezones
|
||||
from archinstall.lib.menu.helpers import Confirmation, Input, Selection
|
||||
from archinstall.lib.output import warn
|
||||
from archinstall.lib.pathnames import PACMAN_CONF
|
||||
from archinstall.lib.translationhandler import Language, tr
|
||||
from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup
|
||||
from archinstall.tui.ui.result import ResultType
|
||||
|
|
@ -106,9 +105,9 @@ async def select_archinstall_language(languages: list[Language], preset: Languag
|
|||
group = MenuItemGroup(items, sort_items=True)
|
||||
group.set_focus_by_value(preset)
|
||||
|
||||
title = 'NOTE: If a language can not displayed properly, a proper font must be set manually in the console.\n'
|
||||
title += 'All available fonts can be found in "/usr/share/kbd/consolefonts"\n'
|
||||
title += 'e.g. setfont LatGrkCyr-8x16 (to display latin/greek/cyrillic characters)\n'
|
||||
title = 'NOTE: Console font will be set automatically for supported languages.\n'
|
||||
title += 'For other languages, fonts can be found in "/usr/share/kbd/consolefonts"\n'
|
||||
title += 'and set manually with: setfont <fontname>\n'
|
||||
|
||||
result = await Selection[Language](
|
||||
header=title,
|
||||
|
|
@ -126,55 +125,6 @@ async def select_archinstall_language(languages: list[Language], preset: Languag
|
|||
raise ValueError('Language selection not handled')
|
||||
|
||||
|
||||
async def add_number_of_parallel_downloads(preset: int = 1) -> int | None:
|
||||
max_recommended = 5
|
||||
|
||||
header = tr('This option enables the number of parallel downloads that can occur during package downloads') + '\n'
|
||||
header += tr(' - Maximum recommended value : {} ( Allows {} parallel downloads at a time )').format(max_recommended, max_recommended) + '\n\n'
|
||||
header += tr('Enter the number of parallel downloads to be enabled')
|
||||
|
||||
def validator(s: str) -> str | None:
|
||||
try:
|
||||
value = int(s)
|
||||
|
||||
if 1 <= value <= max_recommended:
|
||||
return None
|
||||
|
||||
return tr('Value must be between 1 and {}').format(max_recommended)
|
||||
except Exception:
|
||||
return tr('Please enter a valid number')
|
||||
|
||||
result = await Input(
|
||||
header=header,
|
||||
allow_skip=True,
|
||||
allow_reset=True,
|
||||
validator_callback=validator,
|
||||
default_value=str(preset),
|
||||
).show()
|
||||
|
||||
downloads = 1
|
||||
|
||||
match result.type_:
|
||||
case ResultType.Skip:
|
||||
return preset
|
||||
case ResultType.Reset:
|
||||
return downloads
|
||||
case ResultType.Selection:
|
||||
downloads = int(result.get_value())
|
||||
|
||||
with PACMAN_CONF.open() as f:
|
||||
pacman_conf = f.read().split('\n')
|
||||
|
||||
with PACMAN_CONF.open('w') as fwrite:
|
||||
for line in pacman_conf:
|
||||
if 'ParallelDownloads' in line:
|
||||
fwrite.write(f'ParallelDownloads = {downloads}\n')
|
||||
else:
|
||||
fwrite.write(f'{line}\n')
|
||||
|
||||
return downloads
|
||||
|
||||
|
||||
async def select_post_installation(elapsed_time: float | None = None) -> PostInstallationAction:
|
||||
header = 'Installation completed'
|
||||
if elapsed_time is not None:
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ from archinstall.lib.authentication.authentication_menu import AuthenticationMen
|
|||
from archinstall.lib.bootloader.bootloader_menu import BootloaderMenu
|
||||
from archinstall.lib.configuration import save_config
|
||||
from archinstall.lib.disk.disk_menu import DiskLayoutConfigurationMenu
|
||||
from archinstall.lib.general.general_menu import add_number_of_parallel_downloads, select_hostname, select_ntp, select_timezone
|
||||
from archinstall.lib.general.general_menu import select_hostname, select_ntp, select_timezone
|
||||
from archinstall.lib.general.system_menu import select_kernel, select_swap
|
||||
from archinstall.lib.hardware import SysInfo
|
||||
from archinstall.lib.locale.locale_menu import LocaleMenu
|
||||
|
|
@ -22,12 +22,15 @@ 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.packages import Repository
|
||||
from archinstall.lib.models.pacman import PacmanConfiguration
|
||||
from archinstall.lib.models.profile import ProfileConfiguration
|
||||
from archinstall.lib.network.network_menu import select_network
|
||||
from archinstall.lib.output import FormattedOutput
|
||||
from archinstall.lib.packages.packages import list_available_packages, select_additional_packages
|
||||
from archinstall.lib.pacman.config import PacmanConfig
|
||||
from archinstall.lib.pacman.pacman_menu import PacmanMenu
|
||||
from archinstall.lib.translationhandler import Language, tr, translation_handler
|
||||
from archinstall.tui.ui.components import tui
|
||||
from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup
|
||||
|
||||
|
||||
|
|
@ -37,11 +40,13 @@ class GlobalMenu(AbstractMenu[None]):
|
|||
arch_config: ArchConfig,
|
||||
mirror_list_handler: MirrorListHandler | None = None,
|
||||
skip_boot: bool = False,
|
||||
advanced: bool = False,
|
||||
title: str | None = None,
|
||||
) -> None:
|
||||
self._arch_config = arch_config
|
||||
self._mirror_list_handler = mirror_list_handler
|
||||
self._skip_boot = skip_boot
|
||||
self._advanced = advanced
|
||||
self._uefi = SysInfo.has_uefi()
|
||||
menu_options = self._get_menu_options()
|
||||
|
||||
|
|
@ -138,11 +143,11 @@ class GlobalMenu(AbstractMenu[None]):
|
|||
key='network_config',
|
||||
),
|
||||
MenuItem(
|
||||
text=tr('Parallel Downloads'),
|
||||
action=add_number_of_parallel_downloads,
|
||||
value=1,
|
||||
preview_action=self._prev_parallel_dw,
|
||||
key='parallel_downloads',
|
||||
text=tr('Pacman'),
|
||||
action=self._pacman_configuration,
|
||||
value=PacmanConfiguration.default(),
|
||||
preview_action=self._prev_pacman_config,
|
||||
key='pacman_config',
|
||||
),
|
||||
MenuItem(
|
||||
text=tr('Additional packages'),
|
||||
|
|
@ -276,6 +281,8 @@ class GlobalMenu(AbstractMenu[None]):
|
|||
if o.key is not None:
|
||||
self._item_group.find_by_key(o.key).text = o.text
|
||||
|
||||
tui.translate_bindings()
|
||||
|
||||
async def _locale_selection(self, preset: LocaleConfiguration) -> LocaleConfiguration | None:
|
||||
locale_config = await LocaleMenu(preset).show()
|
||||
return locale_config
|
||||
|
|
@ -411,10 +418,18 @@ class GlobalMenu(AbstractMenu[None]):
|
|||
return f'{tr("Hostname")}: {item.value}'
|
||||
return None
|
||||
|
||||
def _prev_parallel_dw(self, item: MenuItem) -> str | None:
|
||||
if item.value is not None:
|
||||
return f'{tr("Parallel Downloads")}: {item.value}'
|
||||
return None
|
||||
async def _pacman_configuration(self, preset: PacmanConfiguration) -> PacmanConfiguration | None:
|
||||
return await PacmanMenu(preset, advanced=self._advanced).show()
|
||||
|
||||
def _prev_pacman_config(self, item: MenuItem) -> str | None:
|
||||
if not item.value:
|
||||
return None
|
||||
config: PacmanConfiguration = item.value
|
||||
output = ''
|
||||
if self._advanced:
|
||||
output += '{}: {}\n'.format(tr('Parallel Downloads'), config.parallel_downloads)
|
||||
output += '{}: {}'.format(tr('Color'), config.color)
|
||||
return output
|
||||
|
||||
def _prev_kernel(self, item: MenuItem) -> str | None:
|
||||
if item.value:
|
||||
|
|
@ -472,11 +487,11 @@ class GlobalMenu(AbstractMenu[None]):
|
|||
if efi_partition is None:
|
||||
return 'EFI system partition (ESP) not found'
|
||||
|
||||
if efi_partition.fs_type not in [FilesystemType.Fat12, FilesystemType.Fat16, FilesystemType.Fat32]:
|
||||
if efi_partition.fs_type not in [FilesystemType.FAT12, FilesystemType.FAT16, FilesystemType.FAT32]:
|
||||
return 'ESP must be formatted as a FAT filesystem'
|
||||
|
||||
if bootloader == Bootloader.Limine:
|
||||
if boot_partition.fs_type not in [FilesystemType.Fat12, FilesystemType.Fat16, FilesystemType.Fat32]:
|
||||
if boot_partition.fs_type not in [FilesystemType.FAT12, FilesystemType.FAT16, FilesystemType.FAT32]:
|
||||
return 'Limine does not support booting with a non-FAT boot partition'
|
||||
|
||||
elif bootloader == Bootloader.Refind:
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ class GfxDriver(Enum):
|
|||
text = tr('Installed packages') + ':\n'
|
||||
|
||||
for p in sorted(pkg_names):
|
||||
text += f'\t- {p}\n'
|
||||
text += f' - {p}\n'
|
||||
|
||||
return text
|
||||
|
||||
|
|
|
|||
|
|
@ -48,12 +48,13 @@ 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.packages import Repository
|
||||
from archinstall.lib.models.pacman import PacmanConfiguration
|
||||
from archinstall.lib.models.users import User
|
||||
from archinstall.lib.output import debug, error, info, log, logger, warn
|
||||
from archinstall.lib.packages.packages import installed_package
|
||||
from archinstall.lib.pacman.config import PacmanConfig
|
||||
from archinstall.lib.pacman.pacman import Pacman
|
||||
from archinstall.lib.pathnames import PACMAN_CONF
|
||||
from archinstall.lib.pathnames import MIRRORLIST, PACMAN_CONF
|
||||
from archinstall.lib.plugins import plugins
|
||||
from archinstall.lib.translationhandler import tr
|
||||
|
||||
|
|
@ -81,7 +82,7 @@ class Installer:
|
|||
self.kernels = kernels or ['linux']
|
||||
self._disk_config = disk_config
|
||||
|
||||
self._disk_encryption = disk_config.disk_encryption or DiskEncryption(EncryptionType.NoEncryption)
|
||||
self._disk_encryption = disk_config.disk_encryption or DiskEncryption(EncryptionType.NO_ENCRYPTION)
|
||||
self.target: Path = target
|
||||
|
||||
self.init_time = time.strftime('%Y-%m-%d_%H-%M-%S')
|
||||
|
|
@ -253,16 +254,16 @@ class Installer:
|
|||
luks_handlers: dict[Any, Luks2] = {}
|
||||
|
||||
match self._disk_encryption.encryption_type:
|
||||
case EncryptionType.NoEncryption:
|
||||
case EncryptionType.NO_ENCRYPTION:
|
||||
self._import_lvm()
|
||||
self._mount_lvm_layout()
|
||||
case EncryptionType.Luks:
|
||||
case EncryptionType.LUKS:
|
||||
luks_handlers = self._prepare_luks_partitions(self._disk_encryption.partitions)
|
||||
case EncryptionType.LvmOnLuks:
|
||||
case EncryptionType.LVM_ON_LUKS:
|
||||
luks_handlers = self._prepare_luks_partitions(self._disk_encryption.partitions)
|
||||
self._import_lvm()
|
||||
self._mount_lvm_layout(luks_handlers)
|
||||
case EncryptionType.LuksOnLvm:
|
||||
case EncryptionType.LUKS_ON_LVM:
|
||||
self._import_lvm()
|
||||
luks_handlers = self._prepare_luks_lvm(self._disk_encryption.lvm_volumes)
|
||||
self._mount_lvm_layout(luks_handlers)
|
||||
|
|
@ -368,7 +369,7 @@ class Installer:
|
|||
if part_mod.mountpoint:
|
||||
target = self.target / part_mod.relative_mountpoint
|
||||
mount(part_mod.dev_path, target, options=part_mod.mount_options)
|
||||
elif part_mod.fs_type == FilesystemType.Btrfs:
|
||||
elif part_mod.fs_type == FilesystemType.BTRFS:
|
||||
# Only mount BTRFS subvolumes that have mountpoints specified
|
||||
subvols_with_mountpoints = [sv for sv in part_mod.btrfs_subvols if sv.mountpoint is not None]
|
||||
if subvols_with_mountpoints:
|
||||
|
|
@ -381,12 +382,12 @@ class Installer:
|
|||
swapon(part_mod.dev_path)
|
||||
|
||||
def _mount_lvm_vol(self, volume: LvmVolume) -> None:
|
||||
if volume.fs_type != FilesystemType.Btrfs:
|
||||
if volume.fs_type != FilesystemType.BTRFS:
|
||||
if volume.mountpoint and volume.dev_path:
|
||||
target = self.target / volume.relative_mountpoint
|
||||
mount(volume.dev_path, target, options=volume.mount_options)
|
||||
|
||||
if volume.fs_type == FilesystemType.Btrfs and volume.dev_path:
|
||||
if volume.fs_type == FilesystemType.BTRFS and volume.dev_path:
|
||||
# Only mount BTRFS subvolumes that have mountpoints specified
|
||||
subvols_with_mountpoints = [sv for sv in volume.btrfs_subvols if sv.mountpoint is not None]
|
||||
if subvols_with_mountpoints:
|
||||
|
|
@ -396,7 +397,7 @@ class Installer:
|
|||
if not luks_handler.mapper_dev:
|
||||
return None
|
||||
|
||||
if part_mod.fs_type == FilesystemType.Btrfs and part_mod.btrfs_subvols:
|
||||
if part_mod.fs_type == FilesystemType.BTRFS and part_mod.btrfs_subvols:
|
||||
# Only mount BTRFS subvolumes that have mountpoints specified
|
||||
subvols_with_mountpoints = [sv for sv in part_mod.btrfs_subvols if sv.mountpoint is not None]
|
||||
if subvols_with_mountpoints:
|
||||
|
|
@ -406,12 +407,12 @@ class Installer:
|
|||
mount(luks_handler.mapper_dev, target, options=part_mod.mount_options)
|
||||
|
||||
def _mount_luks_volume(self, volume: LvmVolume, luks_handler: Luks2) -> None:
|
||||
if volume.fs_type != FilesystemType.Btrfs:
|
||||
if volume.fs_type != FilesystemType.BTRFS:
|
||||
if volume.mountpoint and luks_handler.mapper_dev:
|
||||
target = self.target / volume.relative_mountpoint
|
||||
mount(luks_handler.mapper_dev, target, options=volume.mount_options)
|
||||
|
||||
if volume.fs_type == FilesystemType.Btrfs and luks_handler.mapper_dev:
|
||||
if volume.fs_type == FilesystemType.BTRFS and luks_handler.mapper_dev:
|
||||
# Only mount BTRFS subvolumes that have mountpoints specified
|
||||
subvols_with_mountpoints = [sv for sv in volume.btrfs_subvols if sv.mountpoint is not None]
|
||||
if subvols_with_mountpoints:
|
||||
|
|
@ -432,11 +433,11 @@ class Installer:
|
|||
|
||||
def generate_key_files(self) -> None:
|
||||
match self._disk_encryption.encryption_type:
|
||||
case EncryptionType.Luks:
|
||||
case EncryptionType.LUKS:
|
||||
self._generate_key_files_partitions()
|
||||
case EncryptionType.LuksOnLvm:
|
||||
case EncryptionType.LUKS_ON_LVM:
|
||||
self._generate_key_file_lvm_volumes()
|
||||
case EncryptionType.LvmOnLuks:
|
||||
case EncryptionType.LVM_ON_LUKS:
|
||||
# currently LvmOnLuks only supports a single
|
||||
# partitioning layout (boot + partition)
|
||||
# so we won't need any keyfile generation atm
|
||||
|
|
@ -504,10 +505,9 @@ class Installer:
|
|||
# Copy over the install log (if there is one) to the install medium if
|
||||
# at least the base has been strapped in, otherwise we won't have a filesystem/structure to copy to.
|
||||
if self._helper_flags.get('base-strapped', False) is True:
|
||||
absolute_logfile = logger.path
|
||||
logfile_target = self.target / absolute_logfile
|
||||
logfile_target.parent.mkdir(parents=True, exist_ok=True)
|
||||
absolute_logfile.copy(logfile_target, preserve_metadata=True)
|
||||
logfile_target = self.target / LPath(logger.directory).relative_to_root()
|
||||
logfile_target.mkdir(parents=True, exist_ok=True)
|
||||
logger.path.copy_into(logfile_target, preserve_metadata=True)
|
||||
|
||||
return True
|
||||
|
||||
|
|
@ -565,9 +565,12 @@ class Installer:
|
|||
if result := plugin.on_mirrors(mirror_config):
|
||||
mirror_config = result
|
||||
|
||||
root = self.target if on_target else Path('/')
|
||||
mirrorlist_config = root / 'etc/pacman.d/mirrorlist'
|
||||
pacman_config = root / PACMAN_CONF.relative_to_root()
|
||||
if on_target:
|
||||
mirrorlist_config = self.target / MIRRORLIST.relative_to_root()
|
||||
pacman_config = self.target / PACMAN_CONF.relative_to_root()
|
||||
else:
|
||||
mirrorlist_config = MIRRORLIST
|
||||
pacman_config = PACMAN_CONF
|
||||
|
||||
repositories_config = mirror_config.repositories_config()
|
||||
if repositories_config:
|
||||
|
|
@ -863,7 +866,7 @@ class Installer:
|
|||
self._base_packages.append(pkg)
|
||||
|
||||
# https://github.com/archlinux/archinstall/issues/1837
|
||||
if fs_type == FilesystemType.Btrfs:
|
||||
if fs_type == FilesystemType.BTRFS:
|
||||
self._disable_fstrim = True
|
||||
|
||||
def _prepare_encrypt(self, before: str = 'filesystems') -> None:
|
||||
|
|
@ -883,6 +886,7 @@ class Installer:
|
|||
mkinitcpio: bool = True,
|
||||
hostname: str | None = None,
|
||||
locale_config: LocaleConfiguration | None = LocaleConfiguration.default(),
|
||||
pacman_config: PacmanConfiguration | None = None,
|
||||
) -> None:
|
||||
if self._disk_config.lvm_config:
|
||||
lvm = 'lvm2'
|
||||
|
|
@ -894,7 +898,7 @@ class Installer:
|
|||
if vol.fs_type is not None:
|
||||
self._prepare_fs_type(vol.fs_type, vol.mountpoint)
|
||||
|
||||
types = (EncryptionType.LvmOnLuks, EncryptionType.LuksOnLvm)
|
||||
types = (EncryptionType.LVM_ON_LUKS, EncryptionType.LUKS_ON_LVM)
|
||||
if self._disk_encryption.encryption_type in types:
|
||||
self._prepare_encrypt(lvm)
|
||||
else:
|
||||
|
|
@ -929,6 +933,9 @@ class Installer:
|
|||
|
||||
pacman_conf.persist()
|
||||
|
||||
if pacman_config:
|
||||
pacman_conf.configure(pacman_config)
|
||||
|
||||
# Periodic TRIM may improve the performance and longevity of SSDs whilst
|
||||
# having no adverse effect on other devices. Most distributions enable
|
||||
# periodic TRIM by default.
|
||||
|
|
@ -1129,7 +1136,7 @@ class Installer:
|
|||
kernel_parameters = []
|
||||
|
||||
match self._disk_encryption.encryption_type:
|
||||
case EncryptionType.LvmOnLuks:
|
||||
case EncryptionType.LVM_ON_LUKS:
|
||||
if not lvm.vg_name:
|
||||
raise ValueError(f'Unable to determine VG name for {lvm.name}')
|
||||
|
||||
|
|
@ -1146,7 +1153,7 @@ class Installer:
|
|||
else:
|
||||
debug(f'LvmOnLuks, encrypted root partition, identifying by UUID: {uuid}')
|
||||
kernel_parameters.append(f'cryptdevice=UUID={uuid}:cryptlvm root={lvm.safe_dev_path}')
|
||||
case EncryptionType.LuksOnLvm:
|
||||
case EncryptionType.LUKS_ON_LVM:
|
||||
uuid = self._get_luks_uuid_from_mapper_dev(lvm.mapper_path)
|
||||
|
||||
if self._disk_encryption.hsm_device:
|
||||
|
|
@ -1155,7 +1162,7 @@ class Installer:
|
|||
else:
|
||||
debug(f'LuksOnLvm, encrypted root partition, identifying by UUID: {uuid}')
|
||||
kernel_parameters.append(f'cryptdevice=UUID={uuid}:root root=/dev/mapper/root')
|
||||
case EncryptionType.NoEncryption:
|
||||
case EncryptionType.NO_ENCRYPTION:
|
||||
debug(f'Identifying root lvm by mapper device: {lvm.dev_path}')
|
||||
kernel_parameters.append(f'root={lvm.safe_dev_path}')
|
||||
|
||||
|
|
@ -1482,7 +1489,7 @@ class Installer:
|
|||
efi_dir_path.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
for file in ('BOOTIA32.EFI', 'BOOTX64.EFI'):
|
||||
(limine_path / file).copy(efi_dir_path)
|
||||
(limine_path / file).copy_into(efi_dir_path)
|
||||
except Exception as err:
|
||||
raise DiskError(f'Failed to install Limine in {self.target}{efi_partition.mountpoint}: {err}')
|
||||
|
||||
|
|
@ -1531,7 +1538,7 @@ class Installer:
|
|||
|
||||
try:
|
||||
# The `limine-bios.sys` file contains stage 3 code.
|
||||
(limine_path / 'limine-bios.sys').copy(boot_limine_path)
|
||||
(limine_path / 'limine-bios.sys').copy_into(boot_limine_path)
|
||||
|
||||
# `limine bios-install` deploys the stage 1 and 2 to the
|
||||
self.arch_chroot(f'limine bios-install {parent_dev_path}', peek_output=True)
|
||||
|
|
@ -1957,18 +1964,22 @@ 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]
|
||||
try:
|
||||
self.arch_chroot(f'sh -c "chsh -s {shell} {user}"')
|
||||
run(cmd)
|
||||
return True
|
||||
except SysCallError:
|
||||
except CalledProcessError as err:
|
||||
debug(f'Error setting user shell: {err}')
|
||||
return False
|
||||
|
||||
def chown(self, owner: str, path: str, options: list[str] = []) -> bool:
|
||||
cleaned_path = path.replace("'", "\\'")
|
||||
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]
|
||||
try:
|
||||
self.arch_chroot(f"sh -c 'chown {' '.join(options)} {owner} {cleaned_path}'")
|
||||
run(cmd)
|
||||
return True
|
||||
except SysCallError:
|
||||
except CalledProcessError as err:
|
||||
debug(f'Error changing ownership of {path}: {err}')
|
||||
return False
|
||||
|
||||
def set_vconsole(self, locale_config: LocaleConfiguration) -> None:
|
||||
|
|
|
|||
|
|
@ -1,17 +1,18 @@
|
|||
import time
|
||||
import urllib
|
||||
import urllib.parse
|
||||
from pathlib import Path
|
||||
|
||||
from archinstall.lib.models import MirrorRegion
|
||||
from archinstall.lib.models.mirrors import MirrorStatusEntryV3, MirrorStatusListV3
|
||||
from archinstall.lib.networking import fetch_data_from_url
|
||||
from archinstall.lib.output import debug, info
|
||||
from archinstall.lib.pathnames import MIRRORLIST
|
||||
|
||||
|
||||
class MirrorListHandler:
|
||||
def __init__(
|
||||
self,
|
||||
local_mirrorlist: Path = Path('/etc/pacman.d/mirrorlist'),
|
||||
local_mirrorlist: Path = MIRRORLIST,
|
||||
offline: bool = False,
|
||||
verbose: bool = False,
|
||||
) -> None:
|
||||
|
|
|
|||
|
|
@ -15,7 +15,6 @@ from archinstall.lib.models.device import (
|
|||
LvmLayoutType,
|
||||
LvmVolume,
|
||||
LvmVolumeGroup,
|
||||
LvmVolumeStatus,
|
||||
ModificationStatus,
|
||||
PartitionFlag,
|
||||
PartitionModification,
|
||||
|
|
@ -57,7 +56,6 @@ __all__ = [
|
|||
'LvmLayoutType',
|
||||
'LvmVolume',
|
||||
'LvmVolumeGroup',
|
||||
'LvmVolumeStatus',
|
||||
'MirrorConfiguration',
|
||||
'MirrorRegion',
|
||||
'ModificationStatus',
|
||||
|
|
|
|||
|
|
@ -2,10 +2,12 @@ from dataclasses import dataclass
|
|||
from enum import StrEnum, auto
|
||||
from typing import Any, NotRequired, Self, TypedDict
|
||||
|
||||
from archinstall.lib.translationhandler import tr
|
||||
|
||||
|
||||
class PowerManagement(StrEnum):
|
||||
POWER_PROFILES_DAEMON = 'power-profiles-daemon'
|
||||
TUNED = 'tuned'
|
||||
TUNED = auto()
|
||||
|
||||
|
||||
class PowerManagementConfigSerialization(TypedDict):
|
||||
|
|
@ -31,7 +33,7 @@ class PrintServiceConfigSerialization(TypedDict):
|
|||
|
||||
|
||||
class Firewall(StrEnum):
|
||||
UFW = 'ufw'
|
||||
UFW = auto()
|
||||
FWD = 'firewalld'
|
||||
|
||||
|
||||
|
|
@ -39,12 +41,37 @@ class FirewallConfigSerialization(TypedDict):
|
|||
firewall: str
|
||||
|
||||
|
||||
class FontPackage(StrEnum):
|
||||
NOTO = 'noto-fonts'
|
||||
EMOJI = 'noto-fonts-emoji'
|
||||
CJK = 'noto-fonts-cjk'
|
||||
LIBERATION = 'ttf-liberation'
|
||||
DEJAVU = 'ttf-dejavu'
|
||||
|
||||
def description(self) -> str:
|
||||
match self:
|
||||
case FontPackage.NOTO:
|
||||
return tr('Unicode font coverage for most languages')
|
||||
case FontPackage.EMOJI:
|
||||
return tr('color emoji for browsers and apps')
|
||||
case FontPackage.CJK:
|
||||
return tr('Chinese, Japanese, Korean characters')
|
||||
case FontPackage.LIBERATION:
|
||||
return tr('Arial/Times/Courier replacement, Cyrillic support for Steam/games')
|
||||
case FontPackage.DEJAVU:
|
||||
return tr('wide Unicode coverage, good fallback font')
|
||||
|
||||
|
||||
class FontsConfigSerialization(TypedDict):
|
||||
fonts: list[str]
|
||||
|
||||
|
||||
class ZramAlgorithm(StrEnum):
|
||||
ZSTD = 'zstd'
|
||||
ZSTD = auto()
|
||||
LZO_RLE = 'lzo-rle'
|
||||
LZO = 'lzo'
|
||||
LZ4 = 'lz4'
|
||||
LZ4HC = 'lz4hc'
|
||||
LZO = auto()
|
||||
LZ4 = auto()
|
||||
LZ4HC = auto()
|
||||
|
||||
|
||||
class ApplicationSerialization(TypedDict):
|
||||
|
|
@ -53,6 +80,7 @@ class ApplicationSerialization(TypedDict):
|
|||
power_management_config: NotRequired[PowerManagementConfigSerialization]
|
||||
print_service_config: NotRequired[PrintServiceConfigSerialization]
|
||||
firewall_config: NotRequired[FirewallConfigSerialization]
|
||||
fonts_config: NotRequired[FontsConfigSerialization]
|
||||
|
||||
|
||||
@dataclass
|
||||
|
|
@ -127,6 +155,18 @@ class FirewallConfiguration:
|
|||
)
|
||||
|
||||
|
||||
@dataclass
|
||||
class FontsConfiguration:
|
||||
fonts: list[FontPackage]
|
||||
|
||||
def json(self) -> FontsConfigSerialization:
|
||||
return {'fonts': [f.value for f in self.fonts]}
|
||||
|
||||
@classmethod
|
||||
def parse_arg(cls, arg: FontsConfigSerialization) -> Self:
|
||||
return cls(fonts=[FontPackage(f) for f in arg['fonts']])
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class ZramConfiguration:
|
||||
enabled: bool
|
||||
|
|
@ -149,6 +189,7 @@ class ApplicationConfiguration:
|
|||
power_management_config: PowerManagementConfiguration | None = None
|
||||
print_service_config: PrintServiceConfiguration | None = None
|
||||
firewall_config: FirewallConfiguration | None = None
|
||||
fonts_config: FontsConfiguration | None = None
|
||||
|
||||
@classmethod
|
||||
def parse_arg(
|
||||
|
|
@ -177,6 +218,9 @@ class ApplicationConfiguration:
|
|||
if args and (firewall_config := args.get('firewall_config')) is not None:
|
||||
app_config.firewall_config = FirewallConfiguration.parse_arg(firewall_config)
|
||||
|
||||
if args and (fonts_config := args.get('fonts_config')) is not None:
|
||||
app_config.fonts_config = FontsConfiguration.parse_arg(fonts_config)
|
||||
|
||||
return app_config
|
||||
|
||||
def json(self) -> ApplicationSerialization:
|
||||
|
|
@ -197,4 +241,7 @@ class ApplicationConfiguration:
|
|||
if self.firewall_config:
|
||||
config['firewall_config'] = self.firewall_config.json()
|
||||
|
||||
if self.fonts_config:
|
||||
config['fonts_config'] = self.fonts_config.json()
|
||||
|
||||
return config
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@ import builtins
|
|||
import math
|
||||
import uuid
|
||||
from dataclasses import dataclass, field
|
||||
from enum import Enum
|
||||
from enum import Enum, StrEnum, auto
|
||||
from pathlib import Path
|
||||
from typing import NotRequired, Self, TypedDict, override
|
||||
from typing import Any, NotRequired, Self, TypedDict, override
|
||||
from uuid import UUID
|
||||
|
||||
import parted
|
||||
|
|
@ -131,9 +131,14 @@ class DiskLayoutConfiguration:
|
|||
for partition in entry.get('partitions', []):
|
||||
flags = [flag for f in partition.get('flags', []) if (flag := PartitionFlag.from_string(f))]
|
||||
|
||||
if fs_type := partition.get('fs_type'):
|
||||
fs_type = FilesystemType(fs_type)
|
||||
else:
|
||||
fs_type = None
|
||||
|
||||
device_partition = PartitionModification(
|
||||
status=ModificationStatus(partition['status']),
|
||||
fs_type=FilesystemType(partition['fs_type']) if partition.get('fs_type') else None,
|
||||
fs_type=fs_type,
|
||||
start=Size.parse_args(partition['start']),
|
||||
length=Size.parse_args(partition['size']),
|
||||
mount_options=partition['mount_options'],
|
||||
|
|
@ -159,15 +164,15 @@ class DiskLayoutConfiguration:
|
|||
continue
|
||||
|
||||
first = non_delete_partitions[0]
|
||||
if first.status == ModificationStatus.Create and not first.start.is_valid_start():
|
||||
if first.status == ModificationStatus.CREATE and not first.start.is_valid_start():
|
||||
raise ValueError('First partition must start at no less than 1 MiB')
|
||||
|
||||
for i, current_partition in enumerate(non_delete_partitions[1:], start=1):
|
||||
previous_partition = non_delete_partitions[i - 1]
|
||||
if current_partition.status == ModificationStatus.Create and current_partition.start < previous_partition.end:
|
||||
if current_partition.status == ModificationStatus.CREATE and current_partition.start < previous_partition.end:
|
||||
raise ValueError('Partitions overlap')
|
||||
|
||||
create_partitions = [part_mod for part_mod in non_delete_partitions if part_mod.status == ModificationStatus.Create]
|
||||
create_partitions = [part_mod for part_mod in non_delete_partitions if part_mod.status == ModificationStatus.CREATE]
|
||||
|
||||
if not create_partitions:
|
||||
continue
|
||||
|
|
@ -200,7 +205,7 @@ class DiskLayoutConfiguration:
|
|||
def has_default_btrfs_vols(self) -> bool:
|
||||
for mod in self.device_modifications:
|
||||
for part in mod.partitions:
|
||||
if not (part.is_create_or_modify() and part.fs_type == FilesystemType.Btrfs):
|
||||
if not (part.is_create_or_modify() and part.fs_type == FilesystemType.BTRFS):
|
||||
continue
|
||||
|
||||
if any(subvol.is_default_root() for subvol in part.btrfs_subvols):
|
||||
|
|
@ -715,23 +720,23 @@ class BDevice:
|
|||
return hash(self.disk.device.path)
|
||||
|
||||
|
||||
class PartitionType(Enum):
|
||||
Boot = 'boot'
|
||||
Primary = 'primary'
|
||||
_Unknown = 'unknown'
|
||||
class PartitionType(StrEnum):
|
||||
BOOT = auto()
|
||||
PRIMARY = auto()
|
||||
_UNKNOWN = 'unknown'
|
||||
|
||||
@classmethod
|
||||
def get_type_from_code(cls, code: int) -> Self:
|
||||
if code == parted.PARTITION_NORMAL:
|
||||
return cls.Primary
|
||||
return cls.PRIMARY
|
||||
else:
|
||||
debug(f'Partition code not supported: {code}')
|
||||
return cls._Unknown
|
||||
return cls._UNKNOWN
|
||||
|
||||
def get_partition_code(self) -> int | None:
|
||||
if self == PartitionType.Primary:
|
||||
if self == PartitionType.PRIMARY:
|
||||
return parted.PARTITION_NORMAL
|
||||
elif self == PartitionType.Boot:
|
||||
elif self == PartitionType.BOOT:
|
||||
return parted.PARTITION_BOOT
|
||||
return None
|
||||
|
||||
|
|
@ -777,48 +782,48 @@ class PartitionGUID(Enum):
|
|||
return uuid.UUID(self.value).bytes
|
||||
|
||||
|
||||
class FilesystemType(Enum):
|
||||
Btrfs = 'btrfs'
|
||||
Ext2 = 'ext2'
|
||||
Ext3 = 'ext3'
|
||||
Ext4 = 'ext4'
|
||||
F2fs = 'f2fs'
|
||||
Fat12 = 'fat12'
|
||||
Fat16 = 'fat16'
|
||||
Fat32 = 'fat32'
|
||||
Ntfs = 'ntfs'
|
||||
Xfs = 'xfs'
|
||||
LinuxSwap = 'linux-swap'
|
||||
class FilesystemType(StrEnum):
|
||||
BTRFS = auto()
|
||||
EXT2 = auto()
|
||||
EXT3 = auto()
|
||||
EXT4 = auto()
|
||||
F2FS = auto()
|
||||
FAT12 = auto()
|
||||
FAT16 = auto()
|
||||
FAT32 = auto()
|
||||
NTFS = auto()
|
||||
XFS = auto()
|
||||
LINUX_SWAP = 'linux-swap'
|
||||
|
||||
# this is not a FS known to parted, so be careful
|
||||
# with the usage from this enum
|
||||
Crypto_luks = 'crypto_LUKS'
|
||||
CRYPTO_LUKS = 'crypto_LUKS'
|
||||
|
||||
def is_crypto(self) -> bool:
|
||||
return self == FilesystemType.Crypto_luks
|
||||
return self == FilesystemType.CRYPTO_LUKS
|
||||
|
||||
@property
|
||||
def parted_value(self) -> str:
|
||||
return self.value + '(v1)' if self == FilesystemType.LinuxSwap else self.value
|
||||
return self.value + '(v1)' if self == FilesystemType.LINUX_SWAP else self.value
|
||||
|
||||
@property
|
||||
def installation_pkg(self) -> str | None:
|
||||
match self:
|
||||
case FilesystemType.Btrfs:
|
||||
case FilesystemType.BTRFS:
|
||||
return 'btrfs-progs'
|
||||
case FilesystemType.Xfs:
|
||||
case FilesystemType.XFS:
|
||||
return 'xfsprogs'
|
||||
case FilesystemType.F2fs:
|
||||
case FilesystemType.F2FS:
|
||||
return 'f2fs-tools'
|
||||
case _:
|
||||
return None
|
||||
|
||||
|
||||
class ModificationStatus(Enum):
|
||||
Exist = 'existing'
|
||||
Modify = 'modify'
|
||||
Delete = 'delete'
|
||||
Create = 'create'
|
||||
class ModificationStatus(StrEnum):
|
||||
EXIST = 'existing'
|
||||
MODIFY = auto()
|
||||
DELETE = auto()
|
||||
CREATE = auto()
|
||||
|
||||
|
||||
class _PartitionModificationSerialization(TypedDict):
|
||||
|
|
@ -863,7 +868,7 @@ class PartitionModification:
|
|||
if self.is_exists_or_modify() and not self.dev_path:
|
||||
raise ValueError('If partition marked as existing a path must be set')
|
||||
|
||||
if self.fs_type is None and self.status == ModificationStatus.Modify:
|
||||
if self.fs_type is None and self.status == ModificationStatus.MODIFY:
|
||||
raise ValueError('FS type must not be empty on modifications with status type modify')
|
||||
|
||||
@override
|
||||
|
|
@ -906,7 +911,7 @@ class PartitionModification:
|
|||
subvol_mods = []
|
||||
|
||||
return cls(
|
||||
status=ModificationStatus.Exist,
|
||||
status=ModificationStatus.EXIST,
|
||||
type=partition_info.type,
|
||||
start=partition_info.start,
|
||||
length=partition_info.length,
|
||||
|
|
@ -953,26 +958,26 @@ class PartitionModification:
|
|||
return False
|
||||
|
||||
def is_swap(self) -> bool:
|
||||
return self.fs_type == FilesystemType.LinuxSwap
|
||||
return self.fs_type == FilesystemType.LINUX_SWAP
|
||||
|
||||
def is_modify(self) -> bool:
|
||||
return self.status == ModificationStatus.Modify
|
||||
return self.status == ModificationStatus.MODIFY
|
||||
|
||||
def is_delete(self) -> bool:
|
||||
return self.status == ModificationStatus.Delete
|
||||
return self.status == ModificationStatus.DELETE
|
||||
|
||||
def exists(self) -> bool:
|
||||
return self.status == ModificationStatus.Exist
|
||||
return self.status == ModificationStatus.EXIST
|
||||
|
||||
def is_exists_or_modify(self) -> bool:
|
||||
return self.status in [
|
||||
ModificationStatus.Exist,
|
||||
ModificationStatus.Delete,
|
||||
ModificationStatus.Modify,
|
||||
ModificationStatus.EXIST,
|
||||
ModificationStatus.DELETE,
|
||||
ModificationStatus.MODIFY,
|
||||
]
|
||||
|
||||
def is_create_or_modify(self) -> bool:
|
||||
return self.status in [ModificationStatus.Create, ModificationStatus.Modify]
|
||||
return self.status in [ModificationStatus.CREATE, ModificationStatus.MODIFY]
|
||||
|
||||
@property
|
||||
def mapper_name(self) -> str | None:
|
||||
|
|
@ -1083,13 +1088,6 @@ class LvmVolumeGroup:
|
|||
return lv in self.volumes
|
||||
|
||||
|
||||
class LvmVolumeStatus(Enum):
|
||||
Exist = 'existing'
|
||||
Modify = 'modify'
|
||||
Delete = 'delete'
|
||||
Create = 'create'
|
||||
|
||||
|
||||
class _LvmVolumeSerialization(TypedDict):
|
||||
obj_id: str
|
||||
status: str
|
||||
|
|
@ -1103,7 +1101,7 @@ class _LvmVolumeSerialization(TypedDict):
|
|||
|
||||
@dataclass
|
||||
class LvmVolume:
|
||||
status: LvmVolumeStatus
|
||||
status: ModificationStatus
|
||||
name: str
|
||||
fs_type: FilesystemType
|
||||
length: Size
|
||||
|
|
@ -1172,7 +1170,7 @@ class LvmVolume:
|
|||
@classmethod
|
||||
def parse_arg(cls, arg: _LvmVolumeSerialization) -> Self:
|
||||
volume = cls(
|
||||
status=LvmVolumeStatus(arg['status']),
|
||||
status=ModificationStatus(arg['status']),
|
||||
name=arg['name'],
|
||||
fs_type=FilesystemType(arg['fs_type']),
|
||||
length=Size.parse_args(arg['length']),
|
||||
|
|
@ -1210,13 +1208,13 @@ class LvmVolume:
|
|||
return part_mod
|
||||
|
||||
def is_modify(self) -> bool:
|
||||
return self.status == LvmVolumeStatus.Modify
|
||||
return self.status == ModificationStatus.MODIFY
|
||||
|
||||
def exists(self) -> bool:
|
||||
return self.status == LvmVolumeStatus.Exist
|
||||
return self.status == ModificationStatus.EXIST
|
||||
|
||||
def is_exists_or_modify(self) -> bool:
|
||||
return self.status in [LvmVolumeStatus.Exist, LvmVolumeStatus.Modify]
|
||||
return self.status in [ModificationStatus.EXIST, ModificationStatus.MODIFY]
|
||||
|
||||
def is_root(self) -> bool:
|
||||
if self.mountpoint is not None:
|
||||
|
|
@ -1402,19 +1400,19 @@ class DeviceModification:
|
|||
}
|
||||
|
||||
|
||||
class EncryptionType(Enum):
|
||||
NoEncryption = 'no_encryption'
|
||||
Luks = 'luks'
|
||||
LvmOnLuks = 'lvm_on_luks'
|
||||
LuksOnLvm = 'luks_on_lvm'
|
||||
class EncryptionType(StrEnum):
|
||||
NO_ENCRYPTION = auto()
|
||||
LUKS = auto()
|
||||
LVM_ON_LUKS = auto()
|
||||
LUKS_ON_LVM = auto()
|
||||
|
||||
@classmethod
|
||||
def _encryption_type_mapper(cls) -> dict[str, Self]:
|
||||
return {
|
||||
tr('No Encryption'): cls.NoEncryption,
|
||||
tr('LUKS'): cls.Luks,
|
||||
tr('LVM on LUKS'): cls.LvmOnLuks,
|
||||
tr('LUKS on LVM'): cls.LuksOnLvm,
|
||||
tr('No Encryption'): cls.NO_ENCRYPTION,
|
||||
tr('LUKS'): cls.LUKS,
|
||||
tr('LVM on LUKS'): cls.LVM_ON_LUKS,
|
||||
tr('LUKS on LVM'): cls.LUKS_ON_LVM,
|
||||
}
|
||||
|
||||
@classmethod
|
||||
|
|
@ -1438,7 +1436,7 @@ class _DiskEncryptionSerialization(TypedDict):
|
|||
|
||||
@dataclass
|
||||
class DiskEncryption:
|
||||
encryption_type: EncryptionType = EncryptionType.NoEncryption
|
||||
encryption_type: EncryptionType = EncryptionType.NO_ENCRYPTION
|
||||
encryption_password: Password | None = None
|
||||
partitions: list[PartitionModification] = field(default_factory=list)
|
||||
lvm_volumes: list[LvmVolume] = field(default_factory=list)
|
||||
|
|
@ -1446,10 +1444,10 @@ class DiskEncryption:
|
|||
iter_time: int = DEFAULT_ITER_TIME
|
||||
|
||||
def __post_init__(self) -> None:
|
||||
if self.encryption_type in [EncryptionType.Luks, EncryptionType.LvmOnLuks] and not self.partitions:
|
||||
if self.encryption_type in [EncryptionType.LUKS, EncryptionType.LVM_ON_LUKS] and not self.partitions:
|
||||
raise ValueError('Luks or LvmOnLuks encryption require partitions to be defined')
|
||||
|
||||
if self.encryption_type == EncryptionType.LuksOnLvm and not self.lvm_volumes:
|
||||
if self.encryption_type == EncryptionType.LUKS_ON_LVM and not self.lvm_volumes:
|
||||
raise ValueError('LuksOnLvm encryption require LMV volumes to be defined')
|
||||
|
||||
def should_generate_encryption_file(self, dev: PartitionModification | LvmVolume) -> bool:
|
||||
|
|
@ -1592,14 +1590,18 @@ class LsblkInfo(BaseModel):
|
|||
|
||||
@field_validator('size', mode='before')
|
||||
@classmethod
|
||||
def convert_size(cls, v: int, info: ValidationInfo) -> Size:
|
||||
sector_size = SectorSize(info.data['log_sec'], Unit.B)
|
||||
return Size(v, Unit.B, sector_size)
|
||||
def convert_size(cls, value: Any, info: ValidationInfo) -> Any:
|
||||
if isinstance(value, int):
|
||||
sector_size = SectorSize(info.data['log_sec'], Unit.B)
|
||||
return Size(value, Unit.B, sector_size)
|
||||
return value
|
||||
|
||||
@field_validator('mountpoints', 'fsroots', mode='before')
|
||||
@classmethod
|
||||
def remove_none(cls, v: list[Path | None]) -> list[Path]:
|
||||
return [item for item in v if item is not None]
|
||||
def remove_none(cls, value: Any) -> Any:
|
||||
if isinstance(value, list):
|
||||
return [item for item in value if item is not None]
|
||||
return value
|
||||
|
||||
@field_serializer('size', when_used='json')
|
||||
def serialize_size(self, size: Size) -> str:
|
||||
|
|
|
|||
|
|
@ -0,0 +1,42 @@
|
|||
from dataclasses import dataclass
|
||||
from typing import Self, TypedDict
|
||||
|
||||
from archinstall.lib.translationhandler import tr
|
||||
|
||||
|
||||
class PacmanConfigSerialization(TypedDict):
|
||||
parallel_downloads: int
|
||||
color: bool
|
||||
|
||||
|
||||
@dataclass
|
||||
class PacmanConfiguration:
|
||||
parallel_downloads: int = 5
|
||||
color: bool = True
|
||||
|
||||
@classmethod
|
||||
def default(cls) -> Self:
|
||||
return cls()
|
||||
|
||||
def json(self) -> PacmanConfigSerialization:
|
||||
return {
|
||||
'parallel_downloads': self.parallel_downloads,
|
||||
'color': self.color,
|
||||
}
|
||||
|
||||
def preview(self) -> str:
|
||||
color_str = str(self.color)
|
||||
output = '{}: {}\n'.format(tr('Parallel Downloads'), self.parallel_downloads)
|
||||
output += '{}: {}'.format(tr('Color'), color_str)
|
||||
return output
|
||||
|
||||
@classmethod
|
||||
def parse_arg(cls, args: PacmanConfigSerialization) -> Self:
|
||||
config = cls.default()
|
||||
|
||||
if 'parallel_downloads' in args:
|
||||
config.parallel_downloads = int(args['parallel_downloads'])
|
||||
if 'color' in args:
|
||||
config.color = bool(args['color'])
|
||||
|
||||
return config
|
||||
|
|
@ -2,6 +2,7 @@ import re
|
|||
from pathlib import Path
|
||||
|
||||
from archinstall.lib.models.packages import Repository
|
||||
from archinstall.lib.models.pacman import PacmanConfiguration
|
||||
from archinstall.lib.pathnames import PACMAN_CONF
|
||||
|
||||
|
||||
|
|
@ -50,5 +51,23 @@ class PacmanConfig:
|
|||
f.writelines(content)
|
||||
|
||||
def persist(self) -> None:
|
||||
if self._repositories and self._config_remote_path:
|
||||
if self._config_remote_path:
|
||||
PACMAN_CONF.copy(self._config_remote_path, preserve_metadata=True)
|
||||
|
||||
def configure(self, pacman_config: PacmanConfiguration) -> None:
|
||||
"""Apply PacmanConfiguration (Color, ParallelDownloads) to the target system's pacman.conf."""
|
||||
if not self._config_remote_path or not self._config_remote_path.exists():
|
||||
return
|
||||
|
||||
content = self._config_remote_path.read_text().splitlines()
|
||||
result = []
|
||||
|
||||
for line in content:
|
||||
if re.match(r'^#?\s*ParallelDownloads', line):
|
||||
result.append(f'ParallelDownloads = {pacman_config.parallel_downloads}')
|
||||
elif re.match(r'^#?\s*Color\s*$', line):
|
||||
result.append('Color' if pacman_config.color else '#Color')
|
||||
else:
|
||||
result.append(line)
|
||||
|
||||
self._config_remote_path.write_text('\n'.join(result) + '\n')
|
||||
|
|
|
|||
|
|
@ -0,0 +1,117 @@
|
|||
from typing import override
|
||||
|
||||
from archinstall.lib.menu.abstract_menu import AbstractSubMenu
|
||||
from archinstall.lib.menu.helpers import Confirmation, Input
|
||||
from archinstall.lib.models.pacman import PacmanConfiguration
|
||||
from archinstall.lib.pathnames import PACMAN_CONF
|
||||
from archinstall.lib.translationhandler import tr
|
||||
from archinstall.tui.ui.menu_item import MenuItem, MenuItemGroup
|
||||
from archinstall.tui.ui.result import ResultType
|
||||
|
||||
|
||||
class PacmanMenu(AbstractSubMenu[PacmanConfiguration]):
|
||||
def __init__(
|
||||
self,
|
||||
pacman_conf: PacmanConfiguration,
|
||||
advanced: bool = False,
|
||||
):
|
||||
self._pacman_conf = pacman_conf
|
||||
self._advanced = advanced
|
||||
menu_options = self._define_menu_options()
|
||||
|
||||
self._item_group = MenuItemGroup(menu_options, sort_items=False, checkmarks=True)
|
||||
super().__init__(
|
||||
self._item_group,
|
||||
config=self._pacman_conf,
|
||||
allow_reset=True,
|
||||
)
|
||||
|
||||
def _define_menu_options(self) -> list[MenuItem]:
|
||||
return [
|
||||
MenuItem(
|
||||
text=tr('Parallel Downloads'),
|
||||
action=select_parallel_downloads,
|
||||
value=self._pacman_conf.parallel_downloads,
|
||||
preview_action=lambda item: str(item.get_value()),
|
||||
key='parallel_downloads',
|
||||
enabled=self._advanced,
|
||||
),
|
||||
MenuItem(
|
||||
text=tr('Color'),
|
||||
action=select_color,
|
||||
value=self._pacman_conf.color,
|
||||
preview_action=lambda item: str(item.get_value()),
|
||||
key='color',
|
||||
),
|
||||
]
|
||||
|
||||
@override
|
||||
async def show(self) -> PacmanConfiguration | None:
|
||||
config = await super().show()
|
||||
|
||||
if config is None:
|
||||
return PacmanConfiguration.default()
|
||||
|
||||
_apply_to_live(config.parallel_downloads)
|
||||
|
||||
return config
|
||||
|
||||
|
||||
def _apply_to_live(parallel_downloads: int) -> None:
|
||||
"""Apply ParallelDownloads to live system pacman.conf for faster installation."""
|
||||
with PACMAN_CONF.open() as f:
|
||||
pacman_conf = f.read().split('\n')
|
||||
|
||||
with PACMAN_CONF.open('w') as fwrite:
|
||||
for line in pacman_conf:
|
||||
if 'ParallelDownloads' in line:
|
||||
fwrite.write(f'ParallelDownloads = {parallel_downloads}\n')
|
||||
else:
|
||||
fwrite.write(f'{line}\n')
|
||||
|
||||
|
||||
async def select_parallel_downloads(preset: int = 5) -> int | None:
|
||||
max_recommended = 10
|
||||
|
||||
header = tr('Enter the number of parallel downloads (1-{})').format(max_recommended)
|
||||
|
||||
def validator(s: str) -> str | None:
|
||||
try:
|
||||
value = int(s)
|
||||
if 1 <= value <= max_recommended:
|
||||
return None
|
||||
return tr('Value must be between 1 and {}').format(max_recommended)
|
||||
except Exception:
|
||||
return tr('Please enter a valid number')
|
||||
|
||||
result = await Input(
|
||||
header=header,
|
||||
allow_skip=True,
|
||||
allow_reset=True,
|
||||
validator_callback=validator,
|
||||
default_value=str(preset),
|
||||
).show()
|
||||
|
||||
match result.type_:
|
||||
case ResultType.Skip:
|
||||
return preset
|
||||
case ResultType.Reset:
|
||||
return 5
|
||||
case ResultType.Selection:
|
||||
return int(result.get_value())
|
||||
|
||||
|
||||
async def select_color(preset: bool = True) -> bool | None:
|
||||
result = await Confirmation(
|
||||
header=tr('Enable colored output for pacman'),
|
||||
preset=preset,
|
||||
allow_skip=True,
|
||||
).show()
|
||||
|
||||
match result.type_:
|
||||
case ResultType.Skip:
|
||||
return preset
|
||||
case ResultType.Reset:
|
||||
return True
|
||||
case ResultType.Selection:
|
||||
return result.get_value()
|
||||
|
|
@ -4,4 +4,5 @@ from typing import Final
|
|||
from archinstall.lib.linux_path import LPath
|
||||
|
||||
ARCHISO_MOUNTPOINT: Final = Path('/run/archiso/airootfs')
|
||||
MIRRORLIST: Final = LPath('/etc/pacman.d/mirrorlist')
|
||||
PACMAN_CONF: Final = LPath('/etc/pacman.conf')
|
||||
|
|
|
|||
|
|
@ -2,10 +2,16 @@ import builtins
|
|||
import gettext
|
||||
import json
|
||||
import os
|
||||
import tempfile
|
||||
from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
from typing import override
|
||||
|
||||
from archinstall.lib.command import SysCommand
|
||||
from archinstall.lib.exceptions import SysCallError
|
||||
from archinstall.lib.output import debug
|
||||
from archinstall.lib.utils.util import running_from_iso
|
||||
|
||||
|
||||
@dataclass
|
||||
class Language:
|
||||
|
|
@ -14,6 +20,7 @@ class Language:
|
|||
translation: gettext.NullTranslations
|
||||
translation_percent: int
|
||||
translated_lang: str | None
|
||||
console_font: str | None = None
|
||||
|
||||
@property
|
||||
def display_name(self) -> str:
|
||||
|
|
@ -31,10 +38,18 @@ class Language:
|
|||
return self.name_en
|
||||
|
||||
|
||||
_DEFAULT_FONT = 'default8x16'
|
||||
_ENV_FONT = os.environ.get('FONT')
|
||||
|
||||
|
||||
class TranslationHandler:
|
||||
def __init__(self) -> None:
|
||||
self._base_pot = 'base.pot'
|
||||
self._languages = 'languages.json'
|
||||
self._active_language: Language | None = None
|
||||
self._font_backup: Path | None = None
|
||||
self._cmap_backup: Path | None = None
|
||||
self._using_env_font: bool = False
|
||||
|
||||
self._total_messages = self._get_total_active_messages()
|
||||
self._translated_languages = self._get_translations()
|
||||
|
|
@ -43,6 +58,65 @@ class TranslationHandler:
|
|||
def translated_languages(self) -> list[Language]:
|
||||
return self._translated_languages
|
||||
|
||||
@property
|
||||
def active_font(self) -> str | None:
|
||||
if self._active_language is not None:
|
||||
return self._active_language.console_font
|
||||
return None
|
||||
|
||||
def _set_font(self, font_name: str | None) -> bool:
|
||||
"""Set the console font via setfont. Only runs on ISO. Returns True on success."""
|
||||
if not running_from_iso():
|
||||
return False
|
||||
|
||||
target = font_name or _DEFAULT_FONT
|
||||
try:
|
||||
SysCommand(['setfont', target])
|
||||
return True
|
||||
except SysCallError as err:
|
||||
debug(f'Failed to set console font {target}: {err}')
|
||||
return False
|
||||
|
||||
def save_console_font(self) -> None:
|
||||
"""Save the current console font (with unicode map) and console map to temp files."""
|
||||
if not running_from_iso():
|
||||
return
|
||||
|
||||
try:
|
||||
font_fd, font_path = tempfile.mkstemp(prefix='archinstall_font_')
|
||||
cmap_fd, cmap_path = tempfile.mkstemp(prefix='archinstall_cmap_')
|
||||
os.close(font_fd)
|
||||
os.close(cmap_fd)
|
||||
self._font_backup = Path(font_path)
|
||||
self._cmap_backup = Path(cmap_path)
|
||||
SysCommand(['setfont', '-O', str(self._font_backup), '-om', str(self._cmap_backup)])
|
||||
except SysCallError as err:
|
||||
debug(f'Failed to save console font: {err}')
|
||||
self._font_backup = None
|
||||
self._cmap_backup = None
|
||||
|
||||
def restore_console_font(self) -> None:
|
||||
"""Restore console font (with unicode map) and console map from backup."""
|
||||
if not running_from_iso():
|
||||
return
|
||||
|
||||
if self._font_backup is None or not self._font_backup.exists():
|
||||
return
|
||||
|
||||
cmd = ['setfont', str(self._font_backup)]
|
||||
if self._cmap_backup is not None and self._cmap_backup.exists():
|
||||
cmd += ['-m', str(self._cmap_backup)]
|
||||
try:
|
||||
SysCommand(cmd)
|
||||
except SysCallError as err:
|
||||
debug(f'Failed to restore console font: {err}')
|
||||
|
||||
self._font_backup.unlink(missing_ok=True)
|
||||
self._font_backup = None
|
||||
if self._cmap_backup is not None:
|
||||
self._cmap_backup.unlink(missing_ok=True)
|
||||
self._cmap_backup = None
|
||||
|
||||
def _get_translations(self) -> list[Language]:
|
||||
"""
|
||||
Load all translated languages and return a list of such
|
||||
|
|
@ -57,6 +131,7 @@ class TranslationHandler:
|
|||
abbr = mapping_entry['abbr']
|
||||
lang = mapping_entry['lang']
|
||||
translated_lang = mapping_entry.get('translated_lang', None)
|
||||
console_font = mapping_entry.get('console_font', None)
|
||||
|
||||
try:
|
||||
# get a translation for a specific language
|
||||
|
|
@ -71,7 +146,7 @@ class TranslationHandler:
|
|||
# prevent cases where the .pot file is out of date and the percentage is above 100
|
||||
percent = min(100, percent)
|
||||
|
||||
language = Language(abbr, lang, translation, percent, translated_lang)
|
||||
language = Language(abbr, lang, translation, percent, translated_lang, console_font)
|
||||
languages.append(language)
|
||||
except FileNotFoundError as err:
|
||||
raise FileNotFoundError(f"Could not locate language file for '{lang}': {err}")
|
||||
|
|
@ -127,12 +202,39 @@ class TranslationHandler:
|
|||
except Exception:
|
||||
raise ValueError(f'No language with abbreviation "{abbr}" found')
|
||||
|
||||
def activate(self, language: Language) -> None:
|
||||
def activate(self, language: Language, set_font: bool = True) -> None:
|
||||
"""
|
||||
Set the provided language as the current translation
|
||||
"""
|
||||
# The install() call has the side effect of assigning GNUTranslations.gettext to builtins._
|
||||
language.translation.install()
|
||||
self._active_language = language
|
||||
|
||||
if set_font and not self._using_env_font:
|
||||
self._set_font(language.console_font)
|
||||
|
||||
def apply_console_font(self) -> None:
|
||||
"""Apply console font from FONT env var or active language mapping.
|
||||
|
||||
If FONT env var is set and valid, use it and skip language mapping.
|
||||
If FONT is set but invalid, fall back to language font.
|
||||
If FONT is not set, use active language font.
|
||||
"""
|
||||
if not running_from_iso():
|
||||
return
|
||||
|
||||
if _ENV_FONT:
|
||||
if self._set_font(_ENV_FONT):
|
||||
self._using_env_font = True
|
||||
debug(f'Console font set from FONT env var: {_ENV_FONT}')
|
||||
else:
|
||||
debug(f'FONT={_ENV_FONT} could not be set, falling back to language font mapping')
|
||||
if self.active_font:
|
||||
self._set_font(self.active_font)
|
||||
debug(f'Console font set from language mapping: {self.active_font}')
|
||||
elif self.active_font:
|
||||
self._set_font(self.active_font)
|
||||
debug(f'Console font set from language mapping: {self.active_font}')
|
||||
|
||||
def _get_locales_dir(self) -> Path:
|
||||
"""
|
||||
|
|
|
|||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
|
@ -833,6 +833,19 @@ msgstr ""
|
|||
msgid "Parallel Downloads"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pacman"
|
||||
msgstr ""
|
||||
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Enter the number of parallel downloads (1-{})"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable colored output for pacman"
|
||||
msgstr ""
|
||||
|
||||
msgid "ESC to skip"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1712,6 +1725,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)"
|
||||
|
|
@ -1943,6 +2073,21 @@ msgstr ""
|
|||
msgid "Firewall"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional fonts"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select font packages to install"
|
||||
msgstr ""
|
||||
|
||||
msgid "Unicode font coverage for most languages"
|
||||
msgstr ""
|
||||
|
||||
msgid "color emoji for browsers and apps"
|
||||
msgstr ""
|
||||
|
||||
msgid "Chinese, Japanese, Korean characters"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select audio configuration"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -2073,3 +2218,42 @@ 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 ""
|
||||
|
||||
msgid "Dependencies"
|
||||
msgstr ""
|
||||
|
||||
msgid "Package group"
|
||||
msgstr ""
|
||||
|
||||
msgid "Extensive KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Packages in group"
|
||||
msgstr ""
|
||||
|
||||
msgid "Minimal KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select a flavor of KDE Plasma to install"
|
||||
msgstr ""
|
||||
|
||||
msgid "Arial/Times/Courier replacement, Cyrillic support for Steam/games"
|
||||
msgstr ""
|
||||
|
||||
msgid "wide Unicode coverage, good fallback font"
|
||||
msgstr ""
|
||||
|
|
|
|||
|
|
@ -823,6 +823,19 @@ msgstr "Entrada no vàlida! Intenteu-ho novament amb una entrada vàlida [1 a {m
|
|||
msgid "Parallel Downloads"
|
||||
msgstr "Descàrregues paral·leles"
|
||||
|
||||
msgid "Pacman"
|
||||
msgstr ""
|
||||
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, python-brace-format
|
||||
msgid "Enter the number of parallel downloads (1-{})"
|
||||
msgstr "Introduïu el número de descàrregues paral·leles permeses"
|
||||
|
||||
msgid "Enable colored output for pacman"
|
||||
msgstr ""
|
||||
|
||||
msgid "ESC to skip"
|
||||
msgstr "ESC per a ometre"
|
||||
|
||||
|
|
@ -1663,6 +1676,139 @@ msgstr "Iniciar el mode de cerca"
|
|||
msgid "Exit search mode"
|
||||
msgstr "Sortir del mode de cerca"
|
||||
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Navigation"
|
||||
msgstr "Guardar configuració"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Selection"
|
||||
msgstr "Seleccioneu regions"
|
||||
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
msgid "Down"
|
||||
msgstr ""
|
||||
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Confirm"
|
||||
msgstr "Confirmar i sortir"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Focus right"
|
||||
msgstr "Mou a la dreta"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Focus left"
|
||||
msgstr "Mou a l'esquerra"
|
||||
|
||||
msgid "Toggle"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Show/Hide help"
|
||||
msgstr "Mostrar l'ajuda"
|
||||
|
||||
msgid "Quit"
|
||||
msgstr ""
|
||||
|
||||
msgid "First"
|
||||
msgstr ""
|
||||
|
||||
msgid "Last"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select"
|
||||
msgstr "Seleccioneu regions"
|
||||
|
||||
msgid "Page Up"
|
||||
msgstr ""
|
||||
|
||||
msgid "Page Down"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Page up"
|
||||
msgstr "Group de paquets:"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Page down"
|
||||
msgstr "Mou avall"
|
||||
|
||||
msgid "Page Left"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Page Right"
|
||||
msgstr "Mou a la dreta"
|
||||
|
||||
msgid "Cursor up"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Cursor down"
|
||||
msgstr "Mou avall"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Cursor right"
|
||||
msgstr "Mou a la dreta"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Cursor left"
|
||||
msgstr "Mou a l'esquerra"
|
||||
|
||||
msgid "Top"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bottom"
|
||||
msgstr ""
|
||||
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "End"
|
||||
msgstr "Activat"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Toggle option"
|
||||
msgstr "Opcions del subvolum"
|
||||
|
||||
msgid "Scroll Up"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Scroll Down"
|
||||
msgstr "Previsualització avall"
|
||||
|
||||
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 necessita accés al vostre seient (gestor de dispositius de maquinari, com ara teclat, ratolí, etc)"
|
||||
|
||||
|
|
@ -1881,6 +2027,23 @@ msgstr "Utilitzar Network Manager (backend per a iwd)"
|
|||
msgid "Firewall"
|
||||
msgstr "Tallafocs"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Additional fonts"
|
||||
msgstr "Repositoris addicionals"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select font packages to install"
|
||||
msgstr "Selecció del bootloader a instal·lar"
|
||||
|
||||
msgid "Unicode font coverage for most languages"
|
||||
msgstr ""
|
||||
|
||||
msgid "color emoji for browsers and apps"
|
||||
msgstr ""
|
||||
|
||||
msgid "Chinese, Japanese, Korean characters"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select audio configuration"
|
||||
msgstr "Seleccionar configuració d'àudio"
|
||||
|
||||
|
|
@ -2002,3 +2165,52 @@ msgstr "Seguretat de la contrasenya: alta"
|
|||
|
||||
msgid "The selected desktop profile requires a regular user to log in via the greeter"
|
||||
msgstr "El perfil d'escriptori seleccionat necessita de l'inici de sessió d'un usuari mitjançant el gestor"
|
||||
|
||||
#, fuzzy, python-brace-format
|
||||
msgid "Environment type: {} {}"
|
||||
msgstr "Tipus d'entorn: {}"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Input cannot be empty"
|
||||
msgstr "El valor no pot ser buit"
|
||||
|
||||
msgid "Recommended"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Package"
|
||||
msgstr "Group de paquets:"
|
||||
|
||||
msgid "Curated selection of KDE Plasma packages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dependencies"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Package group"
|
||||
msgstr "Group de paquets:"
|
||||
|
||||
msgid "Extensive KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Packages in group"
|
||||
msgstr "Group de paquets:"
|
||||
|
||||
msgid "Minimal KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Description"
|
||||
msgstr "Xifrat de disc"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select a flavor of KDE Plasma to install"
|
||||
msgstr "Selecció del bootloader a instal·lar"
|
||||
|
||||
msgid "Arial/Times/Courier replacement, Cyrillic support for Steam/games"
|
||||
msgstr ""
|
||||
|
||||
msgid "wide Unicode coverage, good fallback font"
|
||||
msgstr ""
|
||||
|
|
|
|||
|
|
@ -815,6 +815,19 @@ msgstr "Neplatný vstup! Zkuste to, prosím, znovu s platným vstupem [1 až {ma
|
|||
msgid "Parallel Downloads"
|
||||
msgstr "Paralelní stahování"
|
||||
|
||||
msgid "Pacman"
|
||||
msgstr ""
|
||||
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, python-brace-format
|
||||
msgid "Enter the number of parallel downloads (1-{})"
|
||||
msgstr "Zadejte povolený počet paralelních stahování, která mají být povolena"
|
||||
|
||||
msgid "Enable colored output for pacman"
|
||||
msgstr ""
|
||||
|
||||
msgid "ESC to skip"
|
||||
msgstr "Pomocí ESC přeskočíte"
|
||||
|
||||
|
|
@ -1655,6 +1668,139 @@ msgstr "Spustit režim vyhledávání"
|
|||
msgid "Exit search mode"
|
||||
msgstr "Opustit režim vyhledávání"
|
||||
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Navigation"
|
||||
msgstr "Uložit konfiguraci"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Selection"
|
||||
msgstr "Zvolte regiony"
|
||||
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
msgid "Down"
|
||||
msgstr ""
|
||||
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Confirm"
|
||||
msgstr "Potvrdit a ukončit"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Focus right"
|
||||
msgstr "Posunout doprava"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Focus left"
|
||||
msgstr "Posunout doleva"
|
||||
|
||||
msgid "Toggle"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Show/Hide help"
|
||||
msgstr "Zobrazit nápovědu"
|
||||
|
||||
msgid "Quit"
|
||||
msgstr ""
|
||||
|
||||
msgid "First"
|
||||
msgstr ""
|
||||
|
||||
msgid "Last"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select"
|
||||
msgstr "Zvolte regiony"
|
||||
|
||||
msgid "Page Up"
|
||||
msgstr ""
|
||||
|
||||
msgid "Page Down"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Page up"
|
||||
msgstr "Skupina balíčků:"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Page down"
|
||||
msgstr "Posunout dolů"
|
||||
|
||||
msgid "Page Left"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Page Right"
|
||||
msgstr "Posunout doprava"
|
||||
|
||||
msgid "Cursor up"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Cursor down"
|
||||
msgstr "Posunout dolů"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Cursor right"
|
||||
msgstr "Posunout doprava"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Cursor left"
|
||||
msgstr "Posunout doleva"
|
||||
|
||||
msgid "Top"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bottom"
|
||||
msgstr ""
|
||||
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "End"
|
||||
msgstr "Povoleno"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Toggle option"
|
||||
msgstr "Přepínače podsvazku"
|
||||
|
||||
msgid "Scroll Up"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Scroll Down"
|
||||
msgstr "Posunout náhled dolů"
|
||||
|
||||
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 vyžaduje přístup k vašemu sezení (soubor zařízení jako např. klávesnice, myš, atd.)"
|
||||
|
||||
|
|
@ -1873,6 +2019,23 @@ msgstr "Použít Network Manager (iwd backend)"
|
|||
msgid "Firewall"
|
||||
msgstr "Firewall"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Additional fonts"
|
||||
msgstr "Dodatečné repozitáře"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select font packages to install"
|
||||
msgstr "Zvolte zavaděč k instalaci"
|
||||
|
||||
msgid "Unicode font coverage for most languages"
|
||||
msgstr ""
|
||||
|
||||
msgid "color emoji for browsers and apps"
|
||||
msgstr ""
|
||||
|
||||
msgid "Chinese, Japanese, Korean characters"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select audio configuration"
|
||||
msgstr "Zvolte konfiguraci zvuku"
|
||||
|
||||
|
|
@ -1900,6 +2063,7 @@ msgstr "Zvolte disky pro instalaci"
|
|||
msgid "Enter a mountpoint"
|
||||
msgstr "Zadejte přípojný bod"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Enter a size (default: {}): "
|
||||
msgstr "Zadejte velikost (výchozí: {}): "
|
||||
|
||||
|
|
@ -1994,3 +2158,52 @@ msgstr "Síla hesla: Silné"
|
|||
|
||||
msgid "The selected desktop profile requires a regular user to log in via the greeter"
|
||||
msgstr "Zvolený profil plochy vyžaduje, aby se normální uživatel přihlásil prostřednictvím přihlašovací obrazovky"
|
||||
|
||||
#, fuzzy, python-brace-format
|
||||
msgid "Environment type: {} {}"
|
||||
msgstr "Typ prostředí: {}"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Input cannot be empty"
|
||||
msgstr "Hodnota nesmí být prázdná"
|
||||
|
||||
msgid "Recommended"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Package"
|
||||
msgstr "Skupina balíčků:"
|
||||
|
||||
msgid "Curated selection of KDE Plasma packages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dependencies"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Package group"
|
||||
msgstr "Skupina balíčků:"
|
||||
|
||||
msgid "Extensive KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Packages in group"
|
||||
msgstr "Skupina balíčků:"
|
||||
|
||||
msgid "Minimal KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Description"
|
||||
msgstr "Šifrování disku"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select a flavor of KDE Plasma to install"
|
||||
msgstr "Zvolte zavaděč k instalaci"
|
||||
|
||||
msgid "Arial/Times/Courier replacement, Cyrillic support for Steam/games"
|
||||
msgstr ""
|
||||
|
||||
msgid "wide Unicode coverage, good fallback font"
|
||||
msgstr ""
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -299,7 +299,7 @@ msgid "Automatic time sync (NTP)"
|
|||
msgstr "Automatische Zeitsynchronisierung (NTP)"
|
||||
|
||||
msgid "Install ({} config(s) missing)"
|
||||
msgstr "Installieren ({} Konfiguration(en) ausständig)"
|
||||
msgstr "Installieren ({} Konfiguration(en) ausstehend)"
|
||||
|
||||
msgid ""
|
||||
"You decided to skip harddrive selection\n"
|
||||
|
|
@ -824,6 +824,19 @@ msgstr "Ungültige Eingabe! Erneut mit gültiger Eingabe versuchen [1 bis {max_d
|
|||
msgid "Parallel Downloads"
|
||||
msgstr "Parallele Downloads"
|
||||
|
||||
msgid "Pacman"
|
||||
msgstr "Pacman"
|
||||
|
||||
msgid "Color"
|
||||
msgstr "Farbe"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Enter the number of parallel downloads (1-{})"
|
||||
msgstr "Anzahl paralleler Downloads eingeben (1-{})"
|
||||
|
||||
msgid "Enable colored output for pacman"
|
||||
msgstr "Farbige Ausgabe für Pacman aktivieren"
|
||||
|
||||
msgid "ESC to skip"
|
||||
msgstr "Drücken Sie ESC, um zu überspringen"
|
||||
|
||||
|
|
@ -854,7 +867,7 @@ msgstr "Konnte Profil nicht von der angegebenen URL holen: {}"
|
|||
|
||||
#, python-brace-format
|
||||
msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}"
|
||||
msgstr "Profile müssen einen eindeutige Namen haben, aber Profildefinition mit gleichem Namen gefunden: {}"
|
||||
msgstr "Profile müssen einen eindeutigen Namen haben, aber Profildefinition mit gleichem Namen gefunden: {}"
|
||||
|
||||
msgid "Select one or more devices to use and configure"
|
||||
msgstr "Wählen Sie ein oder mehrere Gerät(e) aus, die konfiguriert und verwendet werden sollen"
|
||||
|
|
@ -1037,7 +1050,7 @@ msgid "The proprietary Nvidia driver is not supported by Sway. It is likely that
|
|||
msgstr "Der proprietäre Nvidia-Treiber wird von Sway nicht unterstützt. Es ist wahrscheinlich, dass Fehler auftreten werden, trotzdem fortfahren?"
|
||||
|
||||
msgid "Installed packages"
|
||||
msgstr "Installiere Pakete"
|
||||
msgstr "Installierte Pakete"
|
||||
|
||||
msgid "Add profile"
|
||||
msgstr "Profil hinzufügen"
|
||||
|
|
@ -1072,7 +1085,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"\n"
|
||||
"\n"
|
||||
"Wählen sie einen Grafiktreiber aus oder leer lassen um alle quelloffenen Treiber zu installieren"
|
||||
"Wählen Sie einen Grafiktreiber aus oder leer lassen, um alle quelloffenen Treiber zu installieren"
|
||||
|
||||
msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)"
|
||||
msgstr "Sway benötigt Zugriff auf ihren Seat (Sammlung von Hardwaregeräten wie Tastatur, Maus, usw.)"
|
||||
|
|
@ -1467,7 +1480,7 @@ msgid "Confirm password"
|
|||
msgstr "Passwort bestätigen"
|
||||
|
||||
msgid "The confirmation password did not match, please try again"
|
||||
msgstr "Das Passwort stimmt nicht überein, bitte versuche es erneut"
|
||||
msgstr "Das Passwort stimmt nicht überein, bitte versuchen Sie es erneut"
|
||||
|
||||
msgid "Not a valid directory"
|
||||
msgstr "Ungültiges Verzeichnis"
|
||||
|
|
@ -1546,7 +1559,7 @@ msgid "Some packages could not be found in the repository"
|
|||
msgstr "Einige Pakete konnten nicht in den Repositorien gefunden werden"
|
||||
|
||||
msgid "User"
|
||||
msgstr "Benutzername"
|
||||
msgstr "Benutzer"
|
||||
|
||||
msgid "The specified configuration will be applied"
|
||||
msgstr "Die festgelegte Konfiguration wird angewendet"
|
||||
|
|
@ -1665,6 +1678,123 @@ msgstr "Suchmodus starten"
|
|||
msgid "Exit search mode"
|
||||
msgstr "Suchmodus beenden"
|
||||
|
||||
msgid "General"
|
||||
msgstr "Allgemein"
|
||||
|
||||
msgid "Navigation"
|
||||
msgstr "Navigation"
|
||||
|
||||
msgid "Selection"
|
||||
msgstr "Auswahl"
|
||||
|
||||
msgid "Search"
|
||||
msgstr "Suchen"
|
||||
|
||||
msgid "Down"
|
||||
msgstr "Runter"
|
||||
|
||||
msgid "Up"
|
||||
msgstr "Hoch"
|
||||
|
||||
msgid "Confirm"
|
||||
msgstr "Bestätigen und Schließen"
|
||||
|
||||
msgid "Focus right"
|
||||
msgstr "Nach rechts bewegen"
|
||||
|
||||
msgid "Focus left"
|
||||
msgstr "Nach links bewegen"
|
||||
|
||||
msgid "Toggle"
|
||||
msgstr "Umschalten"
|
||||
|
||||
msgid "Show/Hide help"
|
||||
msgstr "Hilfe anzeigen/ausblenden"
|
||||
|
||||
msgid "Quit"
|
||||
msgstr "Beenden"
|
||||
|
||||
msgid "First"
|
||||
msgstr "Erste"
|
||||
|
||||
msgid "Last"
|
||||
msgstr "Letzte"
|
||||
|
||||
msgid "Select"
|
||||
msgstr "Auswählen"
|
||||
|
||||
msgid "Page Up"
|
||||
msgstr "Bild nach oben"
|
||||
|
||||
msgid "Page Down"
|
||||
msgstr "Bild nach unten"
|
||||
|
||||
msgid "Page up"
|
||||
msgstr "Bild nach oben"
|
||||
|
||||
msgid "Page down"
|
||||
msgstr "Bild nach unten"
|
||||
|
||||
msgid "Page Left"
|
||||
msgstr "Seite nach links"
|
||||
|
||||
msgid "Page Right"
|
||||
msgstr "Seite nach rechts"
|
||||
|
||||
msgid "Cursor up"
|
||||
msgstr "Cursor nach oben"
|
||||
|
||||
msgid "Cursor down"
|
||||
msgstr "Cursor nach unten"
|
||||
|
||||
msgid "Cursor right"
|
||||
msgstr "Cursor nach rechts"
|
||||
|
||||
msgid "Cursor left"
|
||||
msgstr "Cursor nach links"
|
||||
|
||||
msgid "Top"
|
||||
msgstr "Zum Anfang"
|
||||
|
||||
msgid "Bottom"
|
||||
msgstr "Zum Ende"
|
||||
|
||||
msgid "Home"
|
||||
msgstr "Pos1"
|
||||
|
||||
msgid "End"
|
||||
msgstr "Ende"
|
||||
|
||||
msgid "Toggle option"
|
||||
msgstr "Option umschalten"
|
||||
|
||||
msgid "Scroll Up"
|
||||
msgstr "Nach oben scrollen"
|
||||
|
||||
msgid "Scroll Down"
|
||||
msgstr "Nach unten scrollen"
|
||||
|
||||
msgid "Scroll Left"
|
||||
msgstr "Nach links scrollen"
|
||||
|
||||
msgid "Scroll Right"
|
||||
msgstr "Nach rechts scrollen"
|
||||
|
||||
msgid "Scroll Home"
|
||||
msgstr "Zum Anfang scrollen"
|
||||
|
||||
msgid "Scroll End"
|
||||
msgstr "Zum Ende scrollen"
|
||||
|
||||
msgid "Focus Next"
|
||||
msgstr "Nächstes fokussieren"
|
||||
|
||||
msgid "Focus Previous"
|
||||
msgstr "Vorheriges fokussieren"
|
||||
|
||||
msgid "Copy selected text"
|
||||
msgstr "Ausgewählten Text kopieren"
|
||||
|
||||
msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)"
|
||||
msgstr "labwc benötigt Zugriff auf ihren Seat (Sammlung von Hardwaregeräten wie Tastatur, Maus, usw.)"
|
||||
|
||||
|
|
@ -1740,10 +1870,10 @@ msgid "Print service"
|
|||
msgstr "Drucker-Service"
|
||||
|
||||
msgid "Would you like to configure the print service?"
|
||||
msgstr "Möchten Sie Bluetooth aktivieren?"
|
||||
msgstr "Möchten Sie den Drucker-Service konfigurieren?"
|
||||
|
||||
msgid "Power management"
|
||||
msgstr "Partitionsverwaltung: {}"
|
||||
msgstr "Energieverwaltung"
|
||||
|
||||
msgid "Authentication"
|
||||
msgstr "Authentifizierung"
|
||||
|
|
@ -1794,31 +1924,31 @@ msgid "You may need to enter the PIN and then touch your U2F device to register
|
|||
msgstr "Sie müssen möglicherweise Ihre PIN eingeben und danach Ihr U2F-Gerät berühren, um es zu registrieren"
|
||||
|
||||
msgid "Starting device modifications in "
|
||||
msgstr ""
|
||||
msgstr "Starte Geräteänderungen in "
|
||||
|
||||
msgid "No network connection found"
|
||||
msgstr "Keine Netzwerkkonfiguration"
|
||||
msgstr "Keine Netzwerkverbindung gefunden"
|
||||
|
||||
msgid "Would you like to connect to a Wifi?"
|
||||
msgstr "Möchten Sie fortfahren?"
|
||||
msgstr "Möchten Sie sich mit einem WLAN verbinden?"
|
||||
|
||||
msgid "No wifi interface found"
|
||||
msgstr "Schnittstellen konfigurieren"
|
||||
msgstr "Kein WLAN-Interface gefunden"
|
||||
|
||||
msgid "Select wifi network to connect to"
|
||||
msgstr "Wählen Sie einen Netzwerkadapter zur Konfiguration aus"
|
||||
msgstr "WLAN-Netzwerk zum Verbinden auswählen"
|
||||
|
||||
msgid "Scanning wifi networks..."
|
||||
msgstr "Suche nach WLAN-Netzwerken..."
|
||||
|
||||
msgid "No wifi networks found"
|
||||
msgstr "Keine Netzwerkkonfiguration"
|
||||
msgstr "Keine WLAN-Netzwerke gefunden"
|
||||
|
||||
msgid "Failed setting up wifi"
|
||||
msgstr "WLAN-Einrichtung fehlgeschlagen."
|
||||
|
||||
msgid "Enter wifi password"
|
||||
msgstr "Passwort eingeben: "
|
||||
msgstr "WLAN-Passwort eingeben"
|
||||
|
||||
msgid "Ok"
|
||||
msgstr "Ok"
|
||||
|
|
@ -1869,10 +1999,10 @@ msgid "Compression algorithm"
|
|||
msgstr "Komprimierungsalgorithmus"
|
||||
|
||||
msgid "Only packages such as base, sudo, linux, linux-firmware, efibootmgr and optional profile packages are installed."
|
||||
msgstr "Nur Pakete wie base, base-devel, linux, linux-firmware, efibootmgr und optionale Profilpakete werden installiert."
|
||||
msgstr "Nur Pakete wie base, sudo, linux, linux-firmware, efibootmgr und optionale Profilpakete werden installiert."
|
||||
|
||||
msgid "Select zram compression algorithm:"
|
||||
msgstr "Wählen Sie einen Einhängeort aus:"
|
||||
msgstr "Zram-Komprimierungsalgorithmus auswählen:"
|
||||
|
||||
msgid "Use Network Manager (default backend)"
|
||||
msgstr "NetworkManager verwenden (Standard-Backend)"
|
||||
|
|
@ -1881,160 +2011,188 @@ msgid "Use Network Manager (iwd backend)"
|
|||
msgstr "NetworkManager verwenden (iwd-Backend)"
|
||||
|
||||
msgid "Firewall"
|
||||
msgstr "Firewall"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Additional fonts"
|
||||
msgstr "Zusätzliche Repositorien"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select font packages to install"
|
||||
msgstr "Bootloader zur Installation auswählen"
|
||||
|
||||
msgid "Unicode font coverage for most languages"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select audio configuration"
|
||||
msgstr "Benutzerkonfiguration speichern"
|
||||
msgid "color emoji for browsers and apps"
|
||||
msgstr ""
|
||||
|
||||
msgid "Chinese, Japanese, Korean characters"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select audio configuration"
|
||||
msgstr "Audiokonfiguration auswählen"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter credentials file decryption password"
|
||||
msgstr "Passwort für die Entschlüsselung der Anmeldedaten-Datei"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter root password"
|
||||
msgstr "Passwort eingeben: "
|
||||
msgstr "Root-Passwort eingeben"
|
||||
|
||||
msgid "Select bootloader to install"
|
||||
msgstr ""
|
||||
msgstr "Bootloader zur Installation auswählen"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Configuration preview"
|
||||
msgstr "Konfiguration"
|
||||
msgstr "Konfigurationsvorschau"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter a directory for the configuration(s) to be saved"
|
||||
msgstr "Geben Sie einen Ordner an, in dem Konfigurationen gespeichert werden sollen: "
|
||||
msgstr "Verzeichnis für die zu speichernden Konfiguration(en) eingeben"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select encryption type"
|
||||
msgstr "Verschlüsselungstyp"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select disks for the installation"
|
||||
msgstr "Gewünschter Gerätename/Hostname für die Installation: "
|
||||
msgstr "Festplatten für die Installation auswählen"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter a mountpoint"
|
||||
msgstr "Wählen Sie einen Einhängeort aus:"
|
||||
|
||||
#, fuzzy, python-brace-format
|
||||
#, python-brace-format
|
||||
msgid "Enter a size (default: {}): "
|
||||
msgstr "Geben Sie das Ende ein (Standard: {}): "
|
||||
msgstr "Größe eingeben (Standard: {}): "
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter subvolume name"
|
||||
msgstr "Name des Subvolumes"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter subvolume mountpoint"
|
||||
msgstr "Subvolume-Einhängeort"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select a disk configuration"
|
||||
msgstr "Laufwerkskonfiguration"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter root mount directory"
|
||||
msgstr "Einhängeverzeichnis der Root-Partition"
|
||||
|
||||
msgid "You will use whatever drive-setup is mounted at the specified directory"
|
||||
msgstr ""
|
||||
msgstr "Es wird das Laufwerk-Setup verwendet, das im angegebenen Verzeichnis eingehängt ist"
|
||||
|
||||
msgid "WARNING: Archinstall won't check the suitability of this setup"
|
||||
msgstr ""
|
||||
msgstr "WARNUNG: Archinstall überprüft die Eignung dieser Konfiguration nicht"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select main filesystem"
|
||||
msgstr "Dateisystem ändern"
|
||||
msgstr "Hauptdateisystem auswählen"
|
||||
|
||||
msgid "Enter a hostname"
|
||||
msgstr ""
|
||||
msgstr "Hostnamen eingeben"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select timezone"
|
||||
msgstr "Wählen Sie eine Zeitzone aus"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter the number of parallel downloads to be enabled"
|
||||
msgstr ""
|
||||
"Geben Sie die Nummer an parallelen Downloads an.\n"
|
||||
"\n"
|
||||
"Achtung:\n"
|
||||
msgstr "Anzahl paralleler Downloads eingeben"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Value must be between 1 and {}"
|
||||
msgstr ""
|
||||
msgstr "Der Wert muss zwischen 1 und {} liegen"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select which kernel(s) to install"
|
||||
msgstr "Bitte den zu installierenden Greeter (Begrüßer/Anmeldebildschirm) auswählen"
|
||||
msgstr "Zu installierenden Kernel auswählen"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter a respository name"
|
||||
msgstr "Name des Repositoriums"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter the repository url"
|
||||
msgstr "Benutzerdefiniertes Repositorium bearbeiten"
|
||||
msgstr "Repository-URL eingeben"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter server url"
|
||||
msgstr "Server-URL"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select mirror regions to be enabled"
|
||||
msgstr "Ausgewählte Spiegelserver-Regionen"
|
||||
msgstr "Zu aktivierende Spiegelserver-Regionen auswählen"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select optional repositories to be enabled"
|
||||
msgstr "Wählen Sie aus, welche zusätzlichen Repositories verwendet werden sollen"
|
||||
msgstr "Optionale Repositorien auswählen"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select an interface"
|
||||
msgstr "Verbindung löschen"
|
||||
msgstr "Netzwerkschnittstelle auswählen"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Choose network configuration"
|
||||
msgstr "Keine Netzwerkkonfiguration"
|
||||
msgstr "Netzwerkkonfiguration wählen"
|
||||
|
||||
#, fuzzy
|
||||
msgid "No packages found"
|
||||
msgstr "Keine U2F-Geräte gefunden"
|
||||
msgstr "Keine Pakete gefunden"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select which greeter to install"
|
||||
msgstr "Bitte den zu installierenden Greeter (Begrüßer/Anmeldebildschirm) auswählen"
|
||||
msgstr "Zu installierenden Greeter auswählen"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select a profile type"
|
||||
msgstr "Ausgewählte Profile: "
|
||||
msgstr "Profiltyp auswählen"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter new password"
|
||||
msgstr "Passwort eingeben: "
|
||||
msgstr "Neues Passwort eingeben"
|
||||
|
||||
msgid "Enter a username"
|
||||
msgstr ""
|
||||
msgstr "Benutzernamen eingeben"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter a password"
|
||||
msgstr "Passwort eingeben: "
|
||||
|
||||
#, fuzzy
|
||||
msgid "The password did not match, please try again"
|
||||
msgstr "Das Passwort stimmt nicht überein, bitte versuche es erneut"
|
||||
msgstr "Das Passwort stimmt nicht überein, bitte versuchen Sie es erneut"
|
||||
|
||||
msgid "Password strength: Weak"
|
||||
msgstr ""
|
||||
msgstr "Passwortstärke: Schwach"
|
||||
|
||||
msgid "Password strength: Moderate"
|
||||
msgstr ""
|
||||
msgstr "Passwortstärke: Mittel"
|
||||
|
||||
msgid "Password strength: Strong"
|
||||
msgstr ""
|
||||
msgstr "Passwortstärke: Stark"
|
||||
|
||||
msgid "The selected desktop profile requires a regular user to log in via the greeter"
|
||||
msgstr "Das ausgewählte Desktop-Profil erfordert einen regulären Benutzer zur Anmeldung über den Greeter"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Environment type: {} {}"
|
||||
msgstr "Umgebungstyp: {} {}"
|
||||
|
||||
msgid "Input cannot be empty"
|
||||
msgstr "Der Wert darf nicht leer sein"
|
||||
|
||||
msgid "Recommended"
|
||||
msgstr "Empfohlen"
|
||||
|
||||
msgid "Package"
|
||||
msgstr "Paket"
|
||||
|
||||
msgid "Curated selection of KDE Plasma packages"
|
||||
msgstr "Kuratierte Auswahl an KDE-Plasma-Paketen"
|
||||
|
||||
msgid "Dependencies"
|
||||
msgstr "Abhängigkeiten"
|
||||
|
||||
msgid "Package group"
|
||||
msgstr "Paketgruppe"
|
||||
|
||||
msgid "Extensive KDE Plasma installation"
|
||||
msgstr "Umfangreiche KDE-Plasma-Installation"
|
||||
|
||||
msgid "Packages in group"
|
||||
msgstr "Pakete in der Gruppe"
|
||||
|
||||
msgid "Minimal KDE Plasma installation"
|
||||
msgstr "Minimale KDE-Plasma-Installation"
|
||||
|
||||
msgid "Description"
|
||||
msgstr "Beschreibung"
|
||||
|
||||
msgid "Select a flavor of KDE Plasma to install"
|
||||
msgstr "KDE-Plasma-Variante zur Installation auswählen"
|
||||
|
||||
msgid "Arial/Times/Courier replacement, Cyrillic support for Steam/games"
|
||||
msgstr ""
|
||||
|
||||
msgid "wide Unicode coverage, good fallback font"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "All open-source"
|
||||
|
|
|
|||
|
|
@ -823,6 +823,22 @@ msgstr "Μη έγκυρη είσοδος! Προσπαθήστε ξανά με
|
|||
msgid "Parallel Downloads"
|
||||
msgstr "Παράλληλες Λήψεις"
|
||||
|
||||
msgid "Pacman"
|
||||
msgstr ""
|
||||
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, python-brace-format
|
||||
msgid "Enter the number of parallel downloads (1-{})"
|
||||
msgstr ""
|
||||
"Εισάγετε τον αριθμό των παράλληλων λήψεων προς ενεργοποίηση.\n"
|
||||
" (Εισάγετε μία τιμή από 1 μέχρι {})\n"
|
||||
"Σημείωση:"
|
||||
|
||||
msgid "Enable colored output for pacman"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "ESC to skip"
|
||||
msgstr "Χρησιμοποιήστε ESC για παράλειψη"
|
||||
|
|
@ -1791,6 +1807,128 @@ msgstr ""
|
|||
msgid "Exit search mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Navigation"
|
||||
msgstr "Αποθήκευση διαμόρφωσης"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Selection"
|
||||
msgstr "Επιλέξτε διεπαφή προς προσθήκη"
|
||||
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
msgid "Down"
|
||||
msgstr ""
|
||||
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
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 ""
|
||||
|
||||
#, fuzzy
|
||||
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 ""
|
||||
|
||||
#, fuzzy
|
||||
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 ""
|
||||
|
||||
|
|
@ -2042,6 +2180,23 @@ msgstr ""
|
|||
msgid "Firewall"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Additional fonts"
|
||||
msgstr "Προαιρετικά αποθετήρια"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select font packages to install"
|
||||
msgstr "Επιλέξτε ποιες διαμερίσεις να κρυπτογραφηθούν."
|
||||
|
||||
msgid "Unicode font coverage for most languages"
|
||||
msgstr ""
|
||||
|
||||
msgid "color emoji for browsers and apps"
|
||||
msgstr ""
|
||||
|
||||
msgid "Chinese, Japanese, Korean characters"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select audio configuration"
|
||||
msgstr "Αποθήκευση διαμόρφωσης χρήστη"
|
||||
|
|
@ -2192,3 +2347,49 @@ msgstr ""
|
|||
|
||||
msgid "The selected desktop profile requires a regular user to log in via the greeter"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, 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 ""
|
||||
|
||||
msgid "Dependencies"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Package group"
|
||||
msgstr "Διαμορφωμένες {} διεπαφές"
|
||||
|
||||
msgid "Extensive KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Packages in group"
|
||||
msgstr ""
|
||||
|
||||
msgid "Minimal KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Description"
|
||||
msgstr "Κρυπτογράφηση δίσκου"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select a flavor of KDE Plasma to install"
|
||||
msgstr "Επιλέξτε ποιες διαμερίσεις να κρυπτογραφηθούν."
|
||||
|
||||
msgid "Arial/Times/Courier replacement, Cyrillic support for Steam/games"
|
||||
msgstr ""
|
||||
|
||||
msgid "wide Unicode coverage, good fallback font"
|
||||
msgstr ""
|
||||
|
|
|
|||
|
|
@ -774,6 +774,19 @@ msgstr ""
|
|||
msgid "Parallel Downloads"
|
||||
msgstr ""
|
||||
|
||||
msgid "Pacman"
|
||||
msgstr ""
|
||||
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Enter the number of parallel downloads (1-{})"
|
||||
msgstr ""
|
||||
|
||||
msgid "Enable colored output for pacman"
|
||||
msgstr ""
|
||||
|
||||
msgid "ESC to skip"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1598,6 +1611,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 ""
|
||||
|
||||
|
|
@ -1816,6 +1946,21 @@ msgstr ""
|
|||
msgid "Firewall"
|
||||
msgstr ""
|
||||
|
||||
msgid "Additional fonts"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select font packages to install"
|
||||
msgstr ""
|
||||
|
||||
msgid "Unicode font coverage for most languages"
|
||||
msgstr ""
|
||||
|
||||
msgid "color emoji for browsers and apps"
|
||||
msgstr ""
|
||||
|
||||
msgid "Chinese, Japanese, Korean characters"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select audio configuration"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1937,3 +2082,46 @@ 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 ""
|
||||
|
||||
msgid "Dependencies"
|
||||
msgstr ""
|
||||
|
||||
msgid "Package group"
|
||||
msgstr ""
|
||||
|
||||
msgid "Extensive KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Packages in group"
|
||||
msgstr ""
|
||||
|
||||
msgid "Minimal KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select a flavor of KDE Plasma to install"
|
||||
msgstr ""
|
||||
|
||||
msgid "Arial/Times/Courier replacement, Cyrillic support for Steam/games"
|
||||
msgstr ""
|
||||
|
||||
msgid "wide Unicode coverage, good fallback font"
|
||||
msgstr ""
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -826,6 +826,19 @@ msgstr "¡Entrada no válida! Intente nuevamente con una entrada válida [1 a {m
|
|||
msgid "Parallel Downloads"
|
||||
msgstr "Descargas paralelas"
|
||||
|
||||
msgid "Pacman"
|
||||
msgstr ""
|
||||
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, python-brace-format
|
||||
msgid "Enter the number of parallel downloads (1-{})"
|
||||
msgstr "Ingrese el número de descargas paralelas que desea habilitar"
|
||||
|
||||
msgid "Enable colored output for pacman"
|
||||
msgstr ""
|
||||
|
||||
msgid "ESC to skip"
|
||||
msgstr "ESC para omitir"
|
||||
|
||||
|
|
@ -1667,6 +1680,139 @@ msgstr "Iniciar modo de búsqueda"
|
|||
msgid "Exit search mode"
|
||||
msgstr "Salir del modo de búsqueda"
|
||||
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Navigation"
|
||||
msgstr "Guardar configuración"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Selection"
|
||||
msgstr "Seleccione regiones"
|
||||
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
msgid "Down"
|
||||
msgstr ""
|
||||
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Confirm"
|
||||
msgstr "Confirmar y salir"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Focus right"
|
||||
msgstr "Mover a la derecha"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Focus left"
|
||||
msgstr "Mover a la izquierda"
|
||||
|
||||
msgid "Toggle"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Show/Hide help"
|
||||
msgstr "Mostrar ayuda"
|
||||
|
||||
msgid "Quit"
|
||||
msgstr ""
|
||||
|
||||
msgid "First"
|
||||
msgstr ""
|
||||
|
||||
msgid "Last"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select"
|
||||
msgstr "Seleccione regiones"
|
||||
|
||||
msgid "Page Up"
|
||||
msgstr ""
|
||||
|
||||
msgid "Page Down"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Page up"
|
||||
msgstr "Grupo de paquetes:"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Page down"
|
||||
msgstr "Bajar"
|
||||
|
||||
msgid "Page Left"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Page Right"
|
||||
msgstr "Mover a la derecha"
|
||||
|
||||
msgid "Cursor up"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Cursor down"
|
||||
msgstr "Bajar"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Cursor right"
|
||||
msgstr "Mover a la derecha"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Cursor left"
|
||||
msgstr "Mover a la izquierda"
|
||||
|
||||
msgid "Top"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bottom"
|
||||
msgstr ""
|
||||
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "End"
|
||||
msgstr "Habilitado"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Toggle option"
|
||||
msgstr "Opciones del subvolumen"
|
||||
|
||||
msgid "Scroll Up"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Scroll Down"
|
||||
msgstr "Bajar en vista previa"
|
||||
|
||||
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 necesita acceso a su asiento (colección de dispositivos de hardware, es decir, teclado, ratón, etc.)"
|
||||
|
||||
|
|
@ -1885,6 +2031,23 @@ msgstr "Usar gestor de Red (backend iwd)"
|
|||
msgid "Firewall"
|
||||
msgstr "Cortafuegos"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Additional fonts"
|
||||
msgstr "Repositorios adicionales"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select font packages to install"
|
||||
msgstr "Seleccione el gestor de arranque que desea instalar"
|
||||
|
||||
msgid "Unicode font coverage for most languages"
|
||||
msgstr ""
|
||||
|
||||
msgid "color emoji for browsers and apps"
|
||||
msgstr ""
|
||||
|
||||
msgid "Chinese, Japanese, Korean characters"
|
||||
msgstr ""
|
||||
|
||||
msgid "Select audio configuration"
|
||||
msgstr "Seleccionar configuración de audio"
|
||||
|
||||
|
|
@ -2007,6 +2170,55 @@ 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
|
||||
msgid "Environment type: {} {}"
|
||||
msgstr "Tipo de entorno: {}"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Input cannot be empty"
|
||||
msgstr "El valor no puede estár vacío"
|
||||
|
||||
msgid "Recommended"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Package"
|
||||
msgstr "Grupo de paquetes:"
|
||||
|
||||
msgid "Curated selection of KDE Plasma packages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dependencies"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Package group"
|
||||
msgstr "Grupo de paquetes:"
|
||||
|
||||
msgid "Extensive KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Packages in group"
|
||||
msgstr "Grupo de paquetes:"
|
||||
|
||||
msgid "Minimal KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Description"
|
||||
msgstr "Cifrado de disco"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select a flavor of KDE Plasma to install"
|
||||
msgstr "Seleccione el gestor de arranque que desea instalar"
|
||||
|
||||
msgid "Arial/Times/Courier replacement, Cyrillic support for Steam/games"
|
||||
msgstr ""
|
||||
|
||||
msgid "wide Unicode coverage, good fallback font"
|
||||
msgstr ""
|
||||
|
||||
#~ msgid "Add :"
|
||||
#~ msgstr "Añadir :"
|
||||
|
||||
|
|
|
|||
|
|
@ -838,6 +838,22 @@ msgstr "Vale sisestus! Proovige uuesti kehtiva sisendiga [1 {max_downloads} või
|
|||
msgid "Parallel Downloads"
|
||||
msgstr "Paralleelsed allalaadimised"
|
||||
|
||||
msgid "Pacman"
|
||||
msgstr ""
|
||||
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, python-brace-format
|
||||
msgid "Enter the number of parallel downloads (1-{})"
|
||||
msgstr ""
|
||||
"Sisestage lubatavate paralleelsete allalaadimiste arv.\n"
|
||||
" (Sisestage väärtus vahemikus 1 kuni {max_downloads})\n"
|
||||
"note:"
|
||||
|
||||
msgid "Enable colored output for pacman"
|
||||
msgstr ""
|
||||
|
||||
msgid "ESC to skip"
|
||||
msgstr "ESC vahelejätmiseks"
|
||||
|
||||
|
|
@ -1774,6 +1790,128 @@ msgstr ""
|
|||
msgid "Exit search mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Navigation"
|
||||
msgstr "Salvesta konfiguratsioon"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Selection"
|
||||
msgstr "Valige allkirja valik"
|
||||
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
msgid "Down"
|
||||
msgstr ""
|
||||
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Confirm"
|
||||
msgstr "Kinnita ja lahku"
|
||||
|
||||
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 ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select"
|
||||
msgstr "Valige allkirja valik"
|
||||
|
||||
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 ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Toggle option"
|
||||
msgstr "Alamhulga valikud"
|
||||
|
||||
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 ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)"
|
||||
msgstr "Sway vajab juurdepääsu teie seatile (riistvaraseadmete kogum, st klaviatuur, hiir jne."
|
||||
|
|
@ -2030,6 +2168,23 @@ msgstr ""
|
|||
msgid "Firewall"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Additional fonts"
|
||||
msgstr "Valikulised repositooriumid"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select font packages to install"
|
||||
msgstr "Palun valige millist tervitajat installida"
|
||||
|
||||
msgid "Unicode font coverage for most languages"
|
||||
msgstr ""
|
||||
|
||||
msgid "color emoji for browsers and apps"
|
||||
msgstr ""
|
||||
|
||||
msgid "Chinese, Japanese, Korean characters"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select audio configuration"
|
||||
msgstr "Salvesta kasutaja konfiguratsioon"
|
||||
|
|
@ -2180,3 +2335,49 @@ msgstr ""
|
|||
|
||||
msgid "The selected desktop profile requires a regular user to log in via the greeter"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, python-brace-format
|
||||
msgid "Environment type: {} {}"
|
||||
msgstr "Keskkonna tüüp: {}"
|
||||
|
||||
msgid "Input cannot be empty"
|
||||
msgstr ""
|
||||
|
||||
msgid "Recommended"
|
||||
msgstr ""
|
||||
|
||||
msgid "Package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Curated selection of KDE Plasma packages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dependencies"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Package group"
|
||||
msgstr "Konfigureeritud {} liidesed"
|
||||
|
||||
msgid "Extensive KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Packages in group"
|
||||
msgstr ""
|
||||
|
||||
msgid "Minimal KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Description"
|
||||
msgstr "Ketta krüpteerimine"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select a flavor of KDE Plasma to install"
|
||||
msgstr "Palun valige millist tervitajat installida"
|
||||
|
||||
msgid "Arial/Times/Courier replacement, Cyrillic support for Steam/games"
|
||||
msgstr ""
|
||||
|
||||
msgid "wide Unicode coverage, good fallback font"
|
||||
msgstr ""
|
||||
|
|
|
|||
|
|
@ -824,6 +824,22 @@ msgstr "Virheellinen arvo! Yritä uudelleen kelvollisella arvolla [1 - {max_down
|
|||
msgid "Parallel Downloads"
|
||||
msgstr "Rinnakkaiset lataukset"
|
||||
|
||||
msgid "Pacman"
|
||||
msgstr ""
|
||||
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, python-brace-format
|
||||
msgid "Enter the number of parallel downloads (1-{})"
|
||||
msgstr ""
|
||||
"Anna rinnakkaisten latausten määrä.\n"
|
||||
"\n"
|
||||
"Huomaa:\n"
|
||||
|
||||
msgid "Enable colored output for pacman"
|
||||
msgstr ""
|
||||
|
||||
msgid "ESC to skip"
|
||||
msgstr "Ohita painamalla ESC"
|
||||
|
||||
|
|
@ -1744,6 +1760,137 @@ msgstr ""
|
|||
msgid "Exit search mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Navigation"
|
||||
msgstr "Tallenna määritykset"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Selection"
|
||||
msgstr "Valitse allekirjoituksen asetus"
|
||||
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
msgid "Down"
|
||||
msgstr ""
|
||||
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Confirm"
|
||||
msgstr "Vahvista ja poistu"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Focus right"
|
||||
msgstr "Liiku oikealle"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Focus left"
|
||||
msgstr "Liiku vasemmalle"
|
||||
|
||||
msgid "Toggle"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Show/Hide help"
|
||||
msgstr "Näytä apua"
|
||||
|
||||
msgid "Quit"
|
||||
msgstr ""
|
||||
|
||||
msgid "First"
|
||||
msgstr ""
|
||||
|
||||
msgid "Last"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select"
|
||||
msgstr "Valitse allekirjoituksen asetus"
|
||||
|
||||
msgid "Page Up"
|
||||
msgstr ""
|
||||
|
||||
msgid "Page Down"
|
||||
msgstr ""
|
||||
|
||||
msgid "Page up"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Page down"
|
||||
msgstr "Liikku alas"
|
||||
|
||||
msgid "Page Left"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Page Right"
|
||||
msgstr "Liiku oikealle"
|
||||
|
||||
msgid "Cursor up"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Cursor down"
|
||||
msgstr "Liikku alas"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Cursor right"
|
||||
msgstr "Liiku oikealle"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Cursor left"
|
||||
msgstr "Liiku vasemmalle"
|
||||
|
||||
msgid "Top"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bottom"
|
||||
msgstr ""
|
||||
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "End"
|
||||
msgstr "Käytössä"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Toggle option"
|
||||
msgstr "Alitaltion valinnat"
|
||||
|
||||
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 ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)"
|
||||
msgstr "Sway tarvitsee pääsyn istuntoon (kokoelma laitteistoja, kuten näppäimistö, hiiri jne.)"
|
||||
|
|
@ -2000,6 +2147,23 @@ msgstr ""
|
|||
msgid "Firewall"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Additional fonts"
|
||||
msgstr "Valinnaiset arkistot"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select font packages to install"
|
||||
msgstr "Valitse asennettava käyttöliittymä"
|
||||
|
||||
msgid "Unicode font coverage for most languages"
|
||||
msgstr ""
|
||||
|
||||
msgid "color emoji for browsers and apps"
|
||||
msgstr ""
|
||||
|
||||
msgid "Chinese, Japanese, Korean characters"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select audio configuration"
|
||||
msgstr "Tallenna käyttäjän määritykset"
|
||||
|
|
@ -2150,3 +2314,49 @@ msgstr ""
|
|||
|
||||
msgid "The selected desktop profile requires a regular user to log in via the greeter"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, python-brace-format
|
||||
msgid "Environment type: {} {}"
|
||||
msgstr "Ympäristötyyppi: {}"
|
||||
|
||||
msgid "Input cannot be empty"
|
||||
msgstr ""
|
||||
|
||||
msgid "Recommended"
|
||||
msgstr ""
|
||||
|
||||
msgid "Package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Curated selection of KDE Plasma packages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dependencies"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Package group"
|
||||
msgstr "Määritetty {} liittymää"
|
||||
|
||||
msgid "Extensive KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Packages in group"
|
||||
msgstr ""
|
||||
|
||||
msgid "Minimal KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Description"
|
||||
msgstr "Levyn salaus"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select a flavor of KDE Plasma to install"
|
||||
msgstr "Valitse asennettava käyttöliittymä"
|
||||
|
||||
msgid "Arial/Times/Courier replacement, Cyrillic support for Steam/games"
|
||||
msgstr ""
|
||||
|
||||
msgid "wide Unicode coverage, good fallback font"
|
||||
msgstr ""
|
||||
|
|
|
|||
|
|
@ -823,6 +823,22 @@ msgstr "Entrée invalide ! Réessayer avec une entrée valide [1 pour {max_downl
|
|||
msgid "Parallel Downloads"
|
||||
msgstr "Téléchargements parallèles"
|
||||
|
||||
msgid "Pacman"
|
||||
msgstr ""
|
||||
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, python-brace-format
|
||||
msgid "Enter the number of parallel downloads (1-{})"
|
||||
msgstr ""
|
||||
"Saisir le nombre de téléchargements parallèles à activer.\n"
|
||||
"\n"
|
||||
"Note :\n"
|
||||
|
||||
msgid "Enable colored output for pacman"
|
||||
msgstr ""
|
||||
|
||||
msgid "ESC to skip"
|
||||
msgstr "ESC pour ignorer"
|
||||
|
||||
|
|
@ -1663,6 +1679,139 @@ msgstr "Démarrer le mode de recherche"
|
|||
msgid "Exit search mode"
|
||||
msgstr "Quitter le mode de recherche"
|
||||
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Navigation"
|
||||
msgstr "Enregistrer la configuration"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Selection"
|
||||
msgstr "Sélectionner des régions"
|
||||
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
msgid "Down"
|
||||
msgstr ""
|
||||
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Confirm"
|
||||
msgstr "Confirmer et quitter"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Focus right"
|
||||
msgstr "Déplacer vers la droite"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Focus left"
|
||||
msgstr "Déplacer vers la gauche"
|
||||
|
||||
msgid "Toggle"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Show/Hide help"
|
||||
msgstr "Afficher de l'aide"
|
||||
|
||||
msgid "Quit"
|
||||
msgstr ""
|
||||
|
||||
msgid "First"
|
||||
msgstr ""
|
||||
|
||||
msgid "Last"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select"
|
||||
msgstr "Sélectionner des régions"
|
||||
|
||||
msgid "Page Up"
|
||||
msgstr ""
|
||||
|
||||
msgid "Page Down"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Page up"
|
||||
msgstr "Groupe de paquets :"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Page down"
|
||||
msgstr "Déplacer vers le bas"
|
||||
|
||||
msgid "Page Left"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Page Right"
|
||||
msgstr "Déplacer vers la droite"
|
||||
|
||||
msgid "Cursor up"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Cursor down"
|
||||
msgstr "Déplacer vers le bas"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Cursor right"
|
||||
msgstr "Déplacer vers la droite"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Cursor left"
|
||||
msgstr "Déplacer vers la gauche"
|
||||
|
||||
msgid "Top"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bottom"
|
||||
msgstr ""
|
||||
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "End"
|
||||
msgstr "Activé"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Toggle option"
|
||||
msgstr "Options de sous-volume"
|
||||
|
||||
msgid "Scroll Up"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Scroll Down"
|
||||
msgstr "Faire défiler l’aperçu vers le bas"
|
||||
|
||||
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 a besoin d’accéder à votre siège (ensemble d’appareils matériels, c’est-à-dire clavier, souris, etc.)"
|
||||
|
||||
|
|
@ -1906,6 +2055,23 @@ msgstr ""
|
|||
msgid "Firewall"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Additional fonts"
|
||||
msgstr "Dépôts supplémentaires"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select font packages to install"
|
||||
msgstr "Veuillez choisir le greeter (interface de connexion) à installer"
|
||||
|
||||
msgid "Unicode font coverage for most languages"
|
||||
msgstr ""
|
||||
|
||||
msgid "color emoji for browsers and apps"
|
||||
msgstr ""
|
||||
|
||||
msgid "Chinese, Japanese, Korean characters"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select audio configuration"
|
||||
msgstr "Enregistrer la configuration utilisateur"
|
||||
|
|
@ -2060,6 +2226,55 @@ msgstr ""
|
|||
msgid "The selected desktop profile requires a regular user to log in via the greeter"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, python-brace-format
|
||||
msgid "Environment type: {} {}"
|
||||
msgstr "Type d'environnement : {}"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Input cannot be empty"
|
||||
msgstr "La valeur ne peut pas être vide"
|
||||
|
||||
msgid "Recommended"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Package"
|
||||
msgstr "Groupe de paquets :"
|
||||
|
||||
msgid "Curated selection of KDE Plasma packages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dependencies"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Package group"
|
||||
msgstr "Groupe de paquets :"
|
||||
|
||||
msgid "Extensive KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Packages in group"
|
||||
msgstr "Groupe de paquets :"
|
||||
|
||||
msgid "Minimal KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Description"
|
||||
msgstr "Chiffrement du disque"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select a flavor of KDE Plasma to install"
|
||||
msgstr "Veuillez choisir le greeter (interface de connexion) à installer"
|
||||
|
||||
msgid "Arial/Times/Courier replacement, Cyrillic support for Steam/games"
|
||||
msgstr ""
|
||||
|
||||
msgid "wide Unicode coverage, good fallback font"
|
||||
msgstr ""
|
||||
|
||||
#, python-brace-format
|
||||
#~ msgid "Edit {origkey} :"
|
||||
#~ msgstr "Modifier {origkey} :"
|
||||
|
|
|
|||
|
|
@ -823,6 +823,22 @@ msgstr "Ionchur neamhbhailí! Bain triail eile as le hionchur bailí [1 go {max_
|
|||
msgid "Parallel Downloads"
|
||||
msgstr "Comhuaineach íosluchtuithe"
|
||||
|
||||
msgid "Pacman"
|
||||
msgstr ""
|
||||
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, python-brace-format
|
||||
msgid "Enter the number of parallel downloads (1-{})"
|
||||
msgstr ""
|
||||
"Cuir isteach líon na n-íoslódálacha comhthreomhara atá le cumasú.\n"
|
||||
"\n"
|
||||
"Nóta:\n"
|
||||
|
||||
msgid "Enable colored output for pacman"
|
||||
msgstr ""
|
||||
|
||||
msgid "ESC to skip"
|
||||
msgstr "ESC a scipeáil"
|
||||
|
||||
|
|
@ -1731,6 +1747,128 @@ msgstr ""
|
|||
msgid "Exit search mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Navigation"
|
||||
msgstr "Sábháil cumraíocht"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Selection"
|
||||
msgstr "Roghnaigh an rogha sínithe"
|
||||
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
msgid "Down"
|
||||
msgstr ""
|
||||
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Confirm"
|
||||
msgstr "Deimhnigh agus scoir"
|
||||
|
||||
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 ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select"
|
||||
msgstr "Roghnaigh an rogha sínithe"
|
||||
|
||||
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 ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Toggle option"
|
||||
msgstr "Roghanna subvolume"
|
||||
|
||||
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 ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)"
|
||||
msgstr "Teastaíonn rochtain ó Sway ar do shuíochán (bailiúchán de ghléasanna crua-earraí i.e. méarchlár, luch, srl)"
|
||||
|
|
@ -1987,6 +2125,23 @@ msgstr ""
|
|||
msgid "Firewall"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Additional fonts"
|
||||
msgstr "Taisclanna roghnacha"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select font packages to install"
|
||||
msgstr "Roghnaigh cé acu beannaitheoir atá le suiteáil"
|
||||
|
||||
msgid "Unicode font coverage for most languages"
|
||||
msgstr ""
|
||||
|
||||
msgid "color emoji for browsers and apps"
|
||||
msgstr ""
|
||||
|
||||
msgid "Chinese, Japanese, Korean characters"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select audio configuration"
|
||||
msgstr "Sábháil cumraíocht úsáideora"
|
||||
|
|
@ -2137,3 +2292,49 @@ msgstr ""
|
|||
|
||||
msgid "The selected desktop profile requires a regular user to log in via the greeter"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, python-brace-format
|
||||
msgid "Environment type: {} {}"
|
||||
msgstr "Cineál timpeallachta: {}"
|
||||
|
||||
msgid "Input cannot be empty"
|
||||
msgstr ""
|
||||
|
||||
msgid "Recommended"
|
||||
msgstr ""
|
||||
|
||||
msgid "Package"
|
||||
msgstr ""
|
||||
|
||||
msgid "Curated selection of KDE Plasma packages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dependencies"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Package group"
|
||||
msgstr "Comhéadain {} cumraithe"
|
||||
|
||||
msgid "Extensive KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Packages in group"
|
||||
msgstr ""
|
||||
|
||||
msgid "Minimal KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Description"
|
||||
msgstr "Criptiú diosca"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select a flavor of KDE Plasma to install"
|
||||
msgstr "Roghnaigh cé acu beannaitheoir atá le suiteáil"
|
||||
|
||||
msgid "Arial/Times/Courier replacement, Cyrillic support for Steam/games"
|
||||
msgstr ""
|
||||
|
||||
msgid "wide Unicode coverage, good fallback font"
|
||||
msgstr ""
|
||||
|
|
|
|||
|
|
@ -826,6 +826,22 @@ msgstr "¡Entrada no válida! Intente nuevamente con unha entrada válida [1 a {
|
|||
msgid "Parallel Downloads"
|
||||
msgstr "Descargas paralelas"
|
||||
|
||||
msgid "Pacman"
|
||||
msgstr ""
|
||||
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, python-brace-format
|
||||
msgid "Enter the number of parallel downloads (1-{})"
|
||||
msgstr ""
|
||||
"Ingrese el número de descargas paralelas que se habilitarán.\n"
|
||||
"\n"
|
||||
"Nota:\n"
|
||||
|
||||
msgid "Enable colored output for pacman"
|
||||
msgstr ""
|
||||
|
||||
msgid "ESC to skip"
|
||||
msgstr "ESC para omitir"
|
||||
|
||||
|
|
@ -1667,6 +1683,139 @@ msgstr "Iniciar modo de búsqueda"
|
|||
msgid "Exit search mode"
|
||||
msgstr "Salir do modo de búsqueda"
|
||||
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Navigation"
|
||||
msgstr "Guardar configuración"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Selection"
|
||||
msgstr "Seleccione regiones"
|
||||
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
msgid "Down"
|
||||
msgstr ""
|
||||
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Confirm"
|
||||
msgstr "Confirmar e salir"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Focus right"
|
||||
msgstr "Mover a la dereita"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Focus left"
|
||||
msgstr "Mover a la esquerda"
|
||||
|
||||
msgid "Toggle"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Show/Hide help"
|
||||
msgstr "Mostrar axuda"
|
||||
|
||||
msgid "Quit"
|
||||
msgstr ""
|
||||
|
||||
msgid "First"
|
||||
msgstr ""
|
||||
|
||||
msgid "Last"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select"
|
||||
msgstr "Seleccione regiones"
|
||||
|
||||
msgid "Page Up"
|
||||
msgstr ""
|
||||
|
||||
msgid "Page Down"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Page up"
|
||||
msgstr "Grupo de paquetes:"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Page down"
|
||||
msgstr "Bajar"
|
||||
|
||||
msgid "Page Left"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Page Right"
|
||||
msgstr "Mover a la dereita"
|
||||
|
||||
msgid "Cursor up"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Cursor down"
|
||||
msgstr "Bajar"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Cursor right"
|
||||
msgstr "Mover a la dereita"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Cursor left"
|
||||
msgstr "Mover a la esquerda"
|
||||
|
||||
msgid "Top"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bottom"
|
||||
msgstr ""
|
||||
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "End"
|
||||
msgstr "Habilitado"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Toggle option"
|
||||
msgstr "Opciones do subvolumen"
|
||||
|
||||
msgid "Scroll Up"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Scroll Down"
|
||||
msgstr "Bajar en vista previa"
|
||||
|
||||
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 necesita acceso a o seu asiento (colección de dispositivos de hardware, es decir, teclado, ratón, etc.)"
|
||||
|
||||
|
|
@ -2027,6 +2176,61 @@ msgstr "Ingrese unha contraseña: "
|
|||
msgid "The password did not match, please try again"
|
||||
msgstr "A contraseña de confirmación no coincide, por favor intente nuevamente"
|
||||
|
||||
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 ""
|
||||
|
||||
#, fuzzy, python-brace-format
|
||||
msgid "Environment type: {} {}"
|
||||
msgstr "Tipo de entorno: {}"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Input cannot be empty"
|
||||
msgstr "O valor no pode estár vacío"
|
||||
|
||||
msgid "Recommended"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Package"
|
||||
msgstr "Grupo de paquetes:"
|
||||
|
||||
msgid "Curated selection of KDE Plasma packages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dependencies"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Package group"
|
||||
msgstr "Grupo de paquetes:"
|
||||
|
||||
msgid "Extensive KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Packages in group"
|
||||
msgstr "Grupo de paquetes:"
|
||||
|
||||
msgid "Minimal KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Description"
|
||||
msgstr "Cifrado de disco"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select a flavor of KDE Plasma to install"
|
||||
msgstr "Por favor, elixa qué xestor de inicio de sesión instalar"
|
||||
|
||||
#~ msgid "Add :"
|
||||
#~ msgstr "Añadir :"
|
||||
|
||||
|
|
|
|||
|
|
@ -830,6 +830,22 @@ msgstr "קלט שגוי! נא לנסות שוב עם קלט תקין [1 עד {ma
|
|||
msgid "Parallel Downloads"
|
||||
msgstr "הורדות במקביל"
|
||||
|
||||
msgid "Pacman"
|
||||
msgstr ""
|
||||
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, python-brace-format
|
||||
msgid "Enter the number of parallel downloads (1-{})"
|
||||
msgstr ""
|
||||
"נא למלא את מספר ההורדות המקביליות להפעלה.\n"
|
||||
"\n"
|
||||
"הערה:\n"
|
||||
|
||||
msgid "Enable colored output for pacman"
|
||||
msgstr ""
|
||||
|
||||
msgid "ESC to skip"
|
||||
msgstr "ESC לדילוג"
|
||||
|
||||
|
|
@ -1691,6 +1707,129 @@ msgstr ""
|
|||
msgid "Exit search mode"
|
||||
msgstr ""
|
||||
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Navigation"
|
||||
msgstr "שמירת הגדרה"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Selection"
|
||||
msgstr "בחירת אפשרות חתימות"
|
||||
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
msgid "Down"
|
||||
msgstr ""
|
||||
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
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 ""
|
||||
|
||||
#, fuzzy
|
||||
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 ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "End"
|
||||
msgstr "פעיל"
|
||||
|
||||
#, fuzzy
|
||||
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 ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)"
|
||||
msgstr "Sway צריך גישה למושב (אוסף של התקני חומרה כמו למשל מקלדת, עכבר וכו׳) שלך"
|
||||
|
|
@ -1938,6 +2077,23 @@ msgstr ""
|
|||
msgid "Firewall"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Additional fonts"
|
||||
msgstr "מאגרים נוספים"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select font packages to install"
|
||||
msgstr "נא לבחור איזו מערכת קבלת פנים להתקין"
|
||||
|
||||
msgid "Unicode font coverage for most languages"
|
||||
msgstr ""
|
||||
|
||||
msgid "color emoji for browsers and apps"
|
||||
msgstr ""
|
||||
|
||||
msgid "Chinese, Japanese, Korean characters"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select audio configuration"
|
||||
msgstr "שמירת הגדרת משתמש"
|
||||
|
|
@ -2090,3 +2246,49 @@ msgstr ""
|
|||
|
||||
msgid "The selected desktop profile requires a regular user to log in via the greeter"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, 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 ""
|
||||
|
||||
msgid "Dependencies"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Package group"
|
||||
msgstr "הגדרת מנשקים"
|
||||
|
||||
msgid "Extensive KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
msgid "Packages in group"
|
||||
msgstr ""
|
||||
|
||||
msgid "Minimal KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Description"
|
||||
msgstr "הצפנת כונן"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select a flavor of KDE Plasma to install"
|
||||
msgstr "נא לבחור איזו מערכת קבלת פנים להתקין"
|
||||
|
||||
msgid "Arial/Times/Courier replacement, Cyrillic support for Steam/games"
|
||||
msgstr ""
|
||||
|
||||
msgid "wide Unicode coverage, good fallback font"
|
||||
msgstr ""
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -5,7 +5,7 @@ msgstr ""
|
|||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Atharv <atharvnegi26@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: he\n"
|
||||
"Language: hi\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
|
@ -807,10 +807,10 @@ msgstr ""
|
|||
" (1 से {} के बीच मान दर्ज करें)\n"
|
||||
"नोट:"
|
||||
|
||||
msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )"
|
||||
msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )"
|
||||
msgstr " - अधिकतम मान : {} ( {} समानांतर डाउनलोड की अनुमति देता है, एक समय में {} डाउनलोड की अनुमति देता है )"
|
||||
|
||||
msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )"
|
||||
msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )"
|
||||
msgstr " - न्यूनतम मान : 1 ( 1 समानांतर डाउनलोड की अनुमति देता है, एक समय में 2 डाउनलोड की अनुमति देता है )"
|
||||
|
||||
msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )"
|
||||
|
|
@ -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 दबाएँ"
|
||||
|
||||
|
|
@ -1163,7 +1176,7 @@ msgstr "मिरर (Mirrors)"
|
|||
msgid "Mirror regions"
|
||||
msgstr "मिरर क्षेत्र"
|
||||
|
||||
msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )"
|
||||
msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )"
|
||||
msgstr " - अधिकतम मान : {} ( {} समानांतर डाउनलोड की अनुमति देता है, एक समय में {max_downloads+1} डाउनलोड की अनुमति देता है )"
|
||||
|
||||
msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]"
|
||||
|
|
@ -1412,6 +1425,7 @@ msgstr "आपके द्वारा दर्ज किया गया य
|
|||
msgid "Username"
|
||||
msgstr "उपयोगकर्ता नाम"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Should \"{}\" be a superuser (sudo)?\n"
|
||||
msgstr "क्या \"{}\" को superuser (sudo) होना चाहिए?\n"
|
||||
|
||||
|
|
@ -1489,7 +1503,7 @@ msgid "Disabled"
|
|||
msgstr "अक्षम"
|
||||
|
||||
msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues"
|
||||
msgstr "कृपया इस समस्या (और फ़ाइल) को https://github.com/archlinux/archinstall/issues पर सबमिट करें"
|
||||
msgstr "कृपया इस समस्या (और फ़ाइल) को https://github.com/archlinux/archinstall/issues पर सबमिट करें।"
|
||||
|
||||
msgid "Mirror name"
|
||||
msgstr "मिरर का नाम"
|
||||
|
|
@ -1662,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 को आपकी सीट (हार्डवेयर डिवाइसेज का संग्रह यानी कीबोर्ड, माउस, आदि) तक पहुंच की आवश्यकता है"
|
||||
|
||||
|
|
@ -1876,3 +2007,186 @@ msgstr "नेटवर्क मैनेजर का उपयोग कर
|
|||
|
||||
msgid "Use Network Manager (iwd backend)"
|
||||
msgstr "नेटवर्क मैनेजर का उपयोग करें (iwd बैकएंड)"
|
||||
|
||||
msgid "Firewall"
|
||||
msgstr "फ़ायरवॉल"
|
||||
|
||||
msgid "Additional fonts"
|
||||
msgstr "अतिरिक्त फ़ॉन्ट"
|
||||
|
||||
msgid "Select font packages to install"
|
||||
msgstr "इंस्टॉल करने के लिए फ़ॉन्ट पैकेज चुनें"
|
||||
|
||||
msgid "Unicode font coverage for most languages"
|
||||
msgstr "अधिकांश भाषाओं के लिए यूनिकोड फ़ॉन्ट समर्थन"
|
||||
|
||||
msgid "color emoji for browsers and apps"
|
||||
msgstr "ब्राउज़र और ऐप्स के लिए रंगीन इमोजी"
|
||||
|
||||
msgid "Chinese, Japanese, Korean characters"
|
||||
msgstr "चीनी, जापानी, कोरियाई वर्ण"
|
||||
|
||||
msgid "Select audio configuration"
|
||||
msgstr "ऑडियो कॉन्फ़िगरेशन चुनें"
|
||||
|
||||
msgid "Enter credentials file decryption password"
|
||||
msgstr "क्रेडेंशियल्स फ़ाइल डिक्रिप्शन पासवर्ड दर्ज करें"
|
||||
|
||||
msgid "Enter root password"
|
||||
msgstr "रूट पासवर्ड दर्ज करें"
|
||||
|
||||
msgid "Select bootloader to install"
|
||||
msgstr "इंस्टॉल करने के लिए बूटलोडर चुनें"
|
||||
|
||||
msgid "Configuration preview"
|
||||
msgstr "कॉन्फ़िगरेशन पूर्वावलोकन देखें"
|
||||
|
||||
msgid "Enter a directory for the configuration(s) to be saved"
|
||||
msgstr "कॉन्फ़िगरेशन सहेजने के लिए डायरेक्टरी दर्ज करें"
|
||||
|
||||
msgid "Select encryption type"
|
||||
msgstr "एन्क्रिप्शन प्रकार चुनें"
|
||||
|
||||
msgid "Select disks for the installation"
|
||||
msgstr "इंस्टॉलेशन के लिए डिस्क चुनें"
|
||||
|
||||
msgid "Enter a mountpoint"
|
||||
msgstr "माउंटपॉइंट दर्ज करें"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Enter a size (default: {}): "
|
||||
msgstr "आकार दर्ज करें (डिफ़ॉल्ट: {}): "
|
||||
|
||||
msgid "Enter subvolume name"
|
||||
msgstr "सबवॉल्यूम का नाम दर्ज करें"
|
||||
|
||||
msgid "Enter subvolume mountpoint"
|
||||
msgstr "सबवॉल्यूम माउंटपॉइंट दर्ज करें"
|
||||
|
||||
msgid "Select a disk configuration"
|
||||
msgstr "एक डिस्क कॉन्फ़िगरेशन चुनें"
|
||||
|
||||
msgid "Enter root mount directory"
|
||||
msgstr "रूट माउंट डायरेक्टरी दर्ज करें"
|
||||
|
||||
msgid "You will use whatever drive-setup is mounted at the specified directory"
|
||||
msgstr "आप निर्दिष्ट डायरेक्टरी पर माउंट किए गए किसी भी ड्राइव-सेटअप का उपयोग करेंगे"
|
||||
|
||||
msgid "WARNING: Archinstall won't check the suitability of this setup"
|
||||
msgstr "चेतावनी: Archinstall इस सेटअप की उपयुक्तता की जाँच नहीं करेगा"
|
||||
|
||||
msgid "Select main filesystem"
|
||||
msgstr "मुख्य फ़ाइलसिस्टम चुनें"
|
||||
|
||||
msgid "Enter a hostname"
|
||||
msgstr "होस्टनेम दर्ज करें"
|
||||
|
||||
msgid "Select timezone"
|
||||
msgstr "समयक्षेत्र चुनें"
|
||||
|
||||
msgid "Enter the number of parallel downloads to be enabled"
|
||||
msgstr "सक्षम किए जाने वाले समानांतर डाउनलोड की संख्या दर्ज करें"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Value must be between 1 and {}"
|
||||
msgstr "मान 1 और {} के बीच होना चाहिए"
|
||||
|
||||
msgid "Select which kernel(s) to install"
|
||||
msgstr "इंस्टॉल करने के लिए कौन से कर्नेल चुनें"
|
||||
|
||||
msgid "Enter a respository name"
|
||||
msgstr "रिपॉजिटरी का नाम दर्ज करें"
|
||||
|
||||
msgid "Enter the repository url"
|
||||
msgstr "रिपॉजिटरी URL दर्ज करें"
|
||||
|
||||
msgid "Enter server url"
|
||||
msgstr "सर्वर URL दर्ज करें"
|
||||
|
||||
msgid "Select mirror regions to be enabled"
|
||||
msgstr "सक्षम करने के लिए मिरर क्षेत्र चुनें"
|
||||
|
||||
msgid "Select optional repositories to be enabled"
|
||||
msgstr "सक्षम करने के लिए वैकल्पिक रिपॉजिटरी चुनें"
|
||||
|
||||
msgid "Select an interface"
|
||||
msgstr "एक इंटरफ़ेस चुनें"
|
||||
|
||||
msgid "Choose network configuration"
|
||||
msgstr "नेटवर्क कॉन्फ़िगरेशन चुनें"
|
||||
|
||||
msgid "No packages found"
|
||||
msgstr "कोई पैकेज नहीं मिला"
|
||||
|
||||
msgid "Select which greeter to install"
|
||||
msgstr "कौन सा ग्रीटर इंस्टॉल करना है चुनें"
|
||||
|
||||
msgid "Select a profile type"
|
||||
msgstr "प्रोफ़ाइल प्रकार चुनें"
|
||||
|
||||
msgid "Enter new password"
|
||||
msgstr "नया पासवर्ड दर्ज करें"
|
||||
|
||||
msgid "Enter a username"
|
||||
msgstr "यूज़रनेम दर्ज करें"
|
||||
|
||||
msgid "Enter a password"
|
||||
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/गेम्स के लिए Cyrillic समर्थन"
|
||||
|
||||
msgid "wide Unicode coverage, good fallback font"
|
||||
msgstr "विस्तृत यूनिकोड कवरेज, अच्छा फॉलबैक फ़ॉन्ट"
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -2,14 +2,14 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"POT-Creation-Date: \n"
|
||||
"PO-Revision-Date: 2026-01-20 19:23+0100\n"
|
||||
"PO-Revision-Date: 2026-04-12 10:26+0200\n"
|
||||
"Last-Translator: Van Matten\n"
|
||||
"Language-Team: Alessio Cuccovillo <alessio.cuccovillo.dev@gmail.com>, Van Matten\n"
|
||||
"Language: it\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 3.8\n"
|
||||
"X-Generator: Poedit 3.9\n"
|
||||
"X-Poedit-Basepath: ../..\n"
|
||||
"X-Poedit-SearchPath-0: base.pot\n"
|
||||
|
||||
|
|
@ -1028,7 +1028,7 @@ msgid "Back"
|
|||
msgstr "Indietro"
|
||||
|
||||
msgid "Please chose which greeter to install for the chosen profiles: {}"
|
||||
msgstr "Scegli quale messaggio di benvenuto installare per i profili scelti: {}"
|
||||
msgstr "Scegli quale greeter installare per i profili scelti: {}"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Environment type: {}"
|
||||
|
|
@ -1090,10 +1090,10 @@ msgid "Graphics driver"
|
|||
msgstr "Driver grafici"
|
||||
|
||||
msgid "Greeter"
|
||||
msgstr "Programma di benvenuto"
|
||||
msgstr "Greeter"
|
||||
|
||||
msgid "Please chose which greeter to install"
|
||||
msgstr "Scegli quale programma di benvenuto installare"
|
||||
msgstr "Scegli quale greeter installare"
|
||||
|
||||
msgid "This is a list of pre-programmed default_profiles"
|
||||
msgstr "Questo è un elenco di default_profiles preprogrammati"
|
||||
|
|
@ -1243,7 +1243,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"\n"
|
||||
"\n"
|
||||
"Scegli un’opzione per concedere a Hyprland l'accesso al tuo hardware a Hyprland"
|
||||
"Scegli un’opzione per concedere a Hyprland l'accesso al tuo hardware"
|
||||
|
||||
msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..."
|
||||
msgstr "Tutti i valori immessi possono avere come suffisso un’unità: %, B, KB, KiB, MB, MiB…"
|
||||
|
|
@ -1561,7 +1561,7 @@ msgid "Loading packages..."
|
|||
msgstr "Caricamento pacchetti in corso..."
|
||||
|
||||
msgid "Select any packages from the below list that should be installed additionally"
|
||||
msgstr "Seleziona dalla lista sotto i pacchetti da installare"
|
||||
msgstr "Seleziona dalla lista sotto i pacchetti aggiuntivi da installare"
|
||||
|
||||
msgid "Add a custom repository"
|
||||
msgstr "Aggiungi una repository personalizzata"
|
||||
|
|
@ -1621,10 +1621,10 @@ msgid "Exit help"
|
|||
msgstr "Chiudi aiuto"
|
||||
|
||||
msgid "Preview scroll up"
|
||||
msgstr "Anteprima scorrimento vero l'alto"
|
||||
msgstr "Anteprima scorrimento su"
|
||||
|
||||
msgid "Preview scroll down"
|
||||
msgstr "Anteprima scorrimento vero il basso"
|
||||
msgstr "Anteprima scorrimento giù"
|
||||
|
||||
msgid "Move up"
|
||||
msgstr "Muovi su"
|
||||
|
|
@ -1665,6 +1665,123 @@ msgstr "Avvia modalità ricerca"
|
|||
msgid "Exit search mode"
|
||||
msgstr "Chiudi modalità ricerca"
|
||||
|
||||
msgid "General"
|
||||
msgstr "Generale"
|
||||
|
||||
msgid "Navigation"
|
||||
msgstr "Navigazione"
|
||||
|
||||
msgid "Selection"
|
||||
msgstr "Selezione"
|
||||
|
||||
msgid "Search"
|
||||
msgstr "Cerca"
|
||||
|
||||
msgid "Down"
|
||||
msgstr "In fondo"
|
||||
|
||||
msgid "Up"
|
||||
msgstr "Su"
|
||||
|
||||
msgid "Confirm"
|
||||
msgstr "Conferma"
|
||||
|
||||
msgid "Focus right"
|
||||
msgstr "Vai a destra"
|
||||
|
||||
msgid "Focus left"
|
||||
msgstr "Vai a sinistra"
|
||||
|
||||
msgid "Toggle"
|
||||
msgstr "Attiva/disattiva"
|
||||
|
||||
msgid "Show/Hide help"
|
||||
msgstr "Mostra/nascondi aiuto"
|
||||
|
||||
msgid "Quit"
|
||||
msgstr "Esci"
|
||||
|
||||
msgid "First"
|
||||
msgstr "Primo"
|
||||
|
||||
msgid "Last"
|
||||
msgstr "Ultimo"
|
||||
|
||||
msgid "Select"
|
||||
msgstr "Seleziona"
|
||||
|
||||
msgid "Page Up"
|
||||
msgstr "Pagina su"
|
||||
|
||||
msgid "Page Down"
|
||||
msgstr "Pagina su"
|
||||
|
||||
msgid "Page up"
|
||||
msgstr "Pagina su"
|
||||
|
||||
msgid "Page down"
|
||||
msgstr "Pagina giù"
|
||||
|
||||
msgid "Page Left"
|
||||
msgstr "Pagina a sinistra"
|
||||
|
||||
msgid "Page Right"
|
||||
msgstr "Pagina a destra"
|
||||
|
||||
msgid "Cursor up"
|
||||
msgstr "Cursore su"
|
||||
|
||||
msgid "Cursor down"
|
||||
msgstr "Cursore giù"
|
||||
|
||||
msgid "Cursor right"
|
||||
msgstr "Cursore a destra"
|
||||
|
||||
msgid "Cursor left"
|
||||
msgstr "Cursore a sinistra"
|
||||
|
||||
msgid "Top"
|
||||
msgstr "In cima"
|
||||
|
||||
msgid "Bottom"
|
||||
msgstr "In fondo"
|
||||
|
||||
msgid "Home"
|
||||
msgstr "Inizio"
|
||||
|
||||
msgid "End"
|
||||
msgstr "Fine"
|
||||
|
||||
msgid "Toggle option"
|
||||
msgstr "Opzioni di attivazione"
|
||||
|
||||
msgid "Scroll Up"
|
||||
msgstr "Scorri Su"
|
||||
|
||||
msgid "Scroll Down"
|
||||
msgstr "Scorri giù"
|
||||
|
||||
msgid "Scroll Left"
|
||||
msgstr "Scorri a sinistra"
|
||||
|
||||
msgid "Scroll Right"
|
||||
msgstr "Scorri a destra"
|
||||
|
||||
msgid "Scroll Home"
|
||||
msgstr "Scorri all'inizio"
|
||||
|
||||
msgid "Scroll End"
|
||||
msgstr "Scorri alla fine"
|
||||
|
||||
msgid "Focus Next"
|
||||
msgstr "Vai al successivo"
|
||||
|
||||
msgid "Focus Previous"
|
||||
msgstr "Vai al precedente"
|
||||
|
||||
msgid "Copy selected text"
|
||||
msgstr "Copia il testo selezionato"
|
||||
|
||||
msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)"
|
||||
msgstr "labwc ha bisogno dell’accesso al tuo posto (insieme di dispositivi hardware, ad esempio tastiera, mouse, ecc.)"
|
||||
|
||||
|
|
@ -1883,39 +2000,24 @@ msgstr "Usa NetworkManager (backend iwd)"
|
|||
msgid "Firewall"
|
||||
msgstr "Firewall"
|
||||
|
||||
msgid "Enter credentials file decryption password"
|
||||
msgstr "Inserici la password di decrittazione del file delle credenziali"
|
||||
|
||||
msgid "Configuration preview"
|
||||
msgstr "Anteprima della configurazione"
|
||||
|
||||
msgid "Enter a directory for the configuration(s) to be saved"
|
||||
msgstr "Inserisci una cartella in cui salvare le configurazioni"
|
||||
|
||||
msgid "Enter a respository name"
|
||||
msgstr "Inserisci il nome di un repository"
|
||||
|
||||
msgid "Enter the repository url"
|
||||
msgstr "Inserisci l'URL della repository"
|
||||
|
||||
msgid "Enter server url"
|
||||
msgstr "Inserisci l'URL del server"
|
||||
|
||||
msgid "Select mirror regions to be enabled"
|
||||
msgstr "Seleziona quali regioni dei mirror abilitare"
|
||||
|
||||
msgid "Select optional repositories to be enabled"
|
||||
msgstr "Seleziona quali repository aggiuntive opzionali abilitare"
|
||||
|
||||
msgid "Select audio configuration"
|
||||
msgstr "Seleziona la configurazione audio"
|
||||
|
||||
msgid "Enter credentials file decryption password"
|
||||
msgstr "Inserici la password di decrittazione del file delle credenziali"
|
||||
|
||||
msgid "Enter root password"
|
||||
msgstr "Inserisci la password di root"
|
||||
|
||||
msgid "Select bootloader to install"
|
||||
msgstr "Seleziona il bootloader da installare"
|
||||
|
||||
msgid "Configuration preview"
|
||||
msgstr "Anteprima della configurazione"
|
||||
|
||||
msgid "Enter a directory for the configuration(s) to be saved"
|
||||
msgstr "Inserisci una cartella in cui salvare le configurazioni"
|
||||
|
||||
msgid "Select encryption type"
|
||||
msgstr "Seleziona il tipo di crittografia"
|
||||
|
||||
|
|
@ -1956,9 +2058,6 @@ msgstr "Inserisci un nome dell'host"
|
|||
msgid "Select timezone"
|
||||
msgstr "Seleziona il fuso orario"
|
||||
|
||||
msgid "No packages found"
|
||||
msgstr "Nessun pacchetto trovato"
|
||||
|
||||
msgid "Enter the number of parallel downloads to be enabled"
|
||||
msgstr "Inserisci il numero di download in parallelo da abilitare"
|
||||
|
||||
|
|
@ -1966,6 +2065,39 @@ msgstr "Inserisci il numero di download in parallelo da abilitare"
|
|||
msgid "Value must be between 1 and {}"
|
||||
msgstr "Il valore deve essere tra 1 e {}"
|
||||
|
||||
msgid "Select which kernel(s) to install"
|
||||
msgstr "Scegli quali kernel installare"
|
||||
|
||||
msgid "Enter a respository name"
|
||||
msgstr "Inserisci il nome di un repository"
|
||||
|
||||
msgid "Enter the repository url"
|
||||
msgstr "Inserisci l'URL della repository"
|
||||
|
||||
msgid "Enter server url"
|
||||
msgstr "Inserisci l'URL del server"
|
||||
|
||||
msgid "Select mirror regions to be enabled"
|
||||
msgstr "Seleziona quali regioni dei mirror abilitare"
|
||||
|
||||
msgid "Select optional repositories to be enabled"
|
||||
msgstr "Seleziona quali repository aggiuntive opzionali abilitare"
|
||||
|
||||
msgid "Select an interface"
|
||||
msgstr "Seleziona un'interfaccia"
|
||||
|
||||
msgid "Choose network configuration"
|
||||
msgstr "Scegli la configurazione di rete"
|
||||
|
||||
msgid "No packages found"
|
||||
msgstr "Nessun pacchetto trovato"
|
||||
|
||||
msgid "Select which greeter to install"
|
||||
msgstr "Seleziona quale greeter installare"
|
||||
|
||||
msgid "Select a profile type"
|
||||
msgstr "Seleziona un tipo di profilo"
|
||||
|
||||
msgid "Enter new password"
|
||||
msgstr "Inserisci una nuova password"
|
||||
|
||||
|
|
@ -1975,20 +2107,54 @@ msgstr "Inserisci un nome utente"
|
|||
msgid "Enter a password"
|
||||
msgstr "Inserisci una password"
|
||||
|
||||
msgid "Select an interface"
|
||||
msgstr "Seleziona un'interfaccia"
|
||||
|
||||
msgid "Choose network configuration"
|
||||
msgstr "Scegli la configurazione di rete"
|
||||
|
||||
msgid "Select which kernel(s) to install"
|
||||
msgstr "Scegli quali kernel installare"
|
||||
|
||||
msgid "Select which greeter to install"
|
||||
msgstr "Seleziona quale schermata di benvenuto installare"
|
||||
|
||||
msgid "Select a profile type"
|
||||
msgstr "Seleziona un tipo di profilo"
|
||||
|
||||
msgid "The password did not match, please try again"
|
||||
msgstr "La password non corrisponde, prova ancora"
|
||||
|
||||
msgid "Password strength: Weak"
|
||||
msgstr "Complessità password: Bassa"
|
||||
|
||||
msgid "Password strength: Moderate"
|
||||
msgstr "Complessità password: Media"
|
||||
|
||||
msgid "Password strength: Strong"
|
||||
msgstr "Complessità password: Alta"
|
||||
|
||||
msgid "The selected desktop profile requires a regular user to log in via the greeter"
|
||||
msgstr "Il profilo desktop selezionato richiede un utente regolare per accedere via greeter"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Environment type: {} {}"
|
||||
msgstr "Tipo di ambiente: {} {}"
|
||||
|
||||
msgid "Recommended"
|
||||
msgstr "Raccomandato"
|
||||
|
||||
msgid "Package"
|
||||
msgstr "Pacchetto"
|
||||
|
||||
msgid "Curated selection of KDE Plasma packages"
|
||||
msgstr "Selezione curata di pacchetti di KDE Plasma"
|
||||
|
||||
msgid "Dependencies"
|
||||
msgstr "Dipendenze"
|
||||
|
||||
msgid "Package group"
|
||||
msgstr "Gruppo di pacchetti"
|
||||
|
||||
msgid "Extensive KDE Plasma installation"
|
||||
msgstr "Installazione di KDE Plasma estesa"
|
||||
|
||||
msgid "Packages in group"
|
||||
msgstr "Pacchetti nel gruppo"
|
||||
|
||||
msgid "Minimal KDE Plasma installation"
|
||||
msgstr "Installazione di KDE Plasma minimale"
|
||||
|
||||
msgid "Description"
|
||||
msgstr "Descrizione"
|
||||
|
||||
msgid "Select a flavor of KDE Plasma to install"
|
||||
msgstr "Seleziona la configurazione di KDE Plasma da installare"
|
||||
|
||||
msgid "Input cannot be empty"
|
||||
msgstr "Il campo non può essere vuoto"
|
||||
|
|
|
|||
|
|
@ -823,6 +823,22 @@ msgstr "Têketineke nederbasdar! Bi têketineke derbasdar re dîsa hewl bide [1
|
|||
msgid "Parallel Downloads"
|
||||
msgstr "Daxistinên parallel"
|
||||
|
||||
msgid "Pacman"
|
||||
msgstr ""
|
||||
|
||||
msgid "Color"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy, python-brace-format
|
||||
msgid "Enter the number of parallel downloads (1-{})"
|
||||
msgstr ""
|
||||
"Jimara daxistinên paralel ên ku werin çalakkirin têxîne.\n"
|
||||
"\n"
|
||||
"Nîşe:\n"
|
||||
|
||||
msgid "Enable colored output for pacman"
|
||||
msgstr ""
|
||||
|
||||
msgid "ESC to skip"
|
||||
msgstr "ESC bo derbas bikî"
|
||||
|
||||
|
|
@ -1663,6 +1679,139 @@ msgstr "Awaya lêgerînê dest pê bike"
|
|||
msgid "Exit search mode"
|
||||
msgstr "Awaya lêgerînê bi dawî bike"
|
||||
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Navigation"
|
||||
msgstr "Rêkxisitinê tomar bike"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Selection"
|
||||
msgstr "Herêman hilbijêre"
|
||||
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
msgid "Down"
|
||||
msgstr ""
|
||||
|
||||
msgid "Up"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Confirm"
|
||||
msgstr "Biperjîne û derkeve"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Focus right"
|
||||
msgstr "Bilivîne rastê"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Focus left"
|
||||
msgstr "Bilivîne çepê"
|
||||
|
||||
msgid "Toggle"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Show/Hide help"
|
||||
msgstr "Alîkariyê nîşan bide"
|
||||
|
||||
msgid "Quit"
|
||||
msgstr ""
|
||||
|
||||
msgid "First"
|
||||
msgstr ""
|
||||
|
||||
msgid "Last"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select"
|
||||
msgstr "Herêman hilbijêre"
|
||||
|
||||
msgid "Page Up"
|
||||
msgstr ""
|
||||
|
||||
msgid "Page Down"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Page up"
|
||||
msgstr "Koma pakêtê:"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Page down"
|
||||
msgstr "Bilivîne jêrê"
|
||||
|
||||
msgid "Page Left"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Page Right"
|
||||
msgstr "Bilivîne rastê"
|
||||
|
||||
msgid "Cursor up"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Cursor down"
|
||||
msgstr "Bilivîne jêrê"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Cursor right"
|
||||
msgstr "Bilivîne rastê"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Cursor left"
|
||||
msgstr "Bilivîne çepê"
|
||||
|
||||
msgid "Top"
|
||||
msgstr ""
|
||||
|
||||
msgid "Bottom"
|
||||
msgstr ""
|
||||
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "End"
|
||||
msgstr "Çalakkirî"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Toggle option"
|
||||
msgstr "Vebijêrkên binpeldankê"
|
||||
|
||||
msgid "Scroll Up"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Scroll Down"
|
||||
msgstr "Pêşdîtina şemitandina jêr"
|
||||
|
||||
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 gihîştina cihê te pêwîst dike (komek ji reqalavan b.m. kilîtdank, mişk, hwd)"
|
||||
|
||||
|
|
@ -1885,3 +2034,202 @@ msgstr ""
|
|||
|
||||
msgid "Use Network Manager (iwd backend)"
|
||||
msgstr ""
|
||||
|
||||
msgid "Firewall"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select audio configuration"
|
||||
msgstr "Rêkxisitinê bikarhêner tomar bike"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter credentials file decryption password"
|
||||
msgstr "Borînpeyva şîfrekirina pelê bawernameyan"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter root password"
|
||||
msgstr "Borînpeyvekê têxîne: "
|
||||
|
||||
msgid "Select bootloader to install"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Configuration preview"
|
||||
msgstr "Rêkxistin"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter a directory for the configuration(s) to be saved"
|
||||
msgstr "Ji bo rêkxisitin ku werin tomarkirin pelrêçekê têxîne: "
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select encryption type"
|
||||
msgstr "Cûreyê şîfrekirinê"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select disks for the installation"
|
||||
msgstr "Navê mêvandarê xwestî ji bo sazkirinê: "
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter a mountpoint"
|
||||
msgstr "Xaleke siwarkirinê hilbijêre:"
|
||||
|
||||
#, fuzzy, python-brace-format
|
||||
msgid "Enter a size (default: {}): "
|
||||
msgstr "Dawî têxîne (kesane: {}): "
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter subvolume name"
|
||||
msgstr "Navê binpeldankê"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter subvolume mountpoint"
|
||||
msgstr "Xala siwarkirinê ya binpeldankê"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select a disk configuration"
|
||||
msgstr "Rêkxisitina dîskê"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter root mount directory"
|
||||
msgstr "Pelrêça siwarkirina root"
|
||||
|
||||
msgid "You will use whatever drive-setup is mounted at the specified directory"
|
||||
msgstr ""
|
||||
|
||||
msgid "WARNING: Archinstall won't check the suitability of this setup"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select main filesystem"
|
||||
msgstr "Pergala pelê biguherîne"
|
||||
|
||||
msgid "Enter a hostname"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select timezone"
|
||||
msgstr "Herêmeke demê hilbijêre"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter the number of parallel downloads to be enabled"
|
||||
msgstr ""
|
||||
"Jimara daxistinên paralel ên ku werin çalakkirin têxîne.\n"
|
||||
"\n"
|
||||
"Nîşe:\n"
|
||||
|
||||
#, python-brace-format
|
||||
msgid "Value must be between 1 and {}"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select which kernel(s) to install"
|
||||
msgstr "Tika ka kîjan silavkar divê were sazkirin hilbijêre"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter a respository name"
|
||||
msgstr "Navê depoyê"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter the repository url"
|
||||
msgstr "Depoya kesane biguherîne"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter server url"
|
||||
msgstr "Girêdana rajekar"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select mirror regions to be enabled"
|
||||
msgstr "Herêmên eynikê ên hilbijartî"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select optional repositories to be enabled"
|
||||
msgstr "Ka kîjan depoyên vebijêrkî divê çalak bibe hilbijêre"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select an interface"
|
||||
msgstr "Navrûyê jê bibe"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Choose network configuration"
|
||||
msgstr "Rêkxisitina torê tune ye"
|
||||
|
||||
#, fuzzy
|
||||
msgid "No packages found"
|
||||
msgstr "Amûrên U2F nehatin dîtin"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select which greeter to install"
|
||||
msgstr "Tika ka kîjan silavkar divê were sazkirin hilbijêre"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select a profile type"
|
||||
msgstr "Profîlên hilbijartî: "
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter new password"
|
||||
msgstr "Borînpeyva wifi têxîne"
|
||||
|
||||
msgid "Enter a username"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Enter a password"
|
||||
msgstr "Borînpeyvekê têxîne: "
|
||||
|
||||
#, fuzzy
|
||||
msgid "The password did not match, please try again"
|
||||
msgstr "Pejirandina borînpeyvê li hev nehat, tika dîsa hewl bide"
|
||||
|
||||
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 ""
|
||||
|
||||
#, fuzzy, python-brace-format
|
||||
msgid "Environment type: {} {}"
|
||||
msgstr "Cûreya jîngehê: {}"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Input cannot be empty"
|
||||
msgstr "Nirx nabe ku vala be"
|
||||
|
||||
msgid "Recommended"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Package"
|
||||
msgstr "Koma pakêtê:"
|
||||
|
||||
msgid "Curated selection of KDE Plasma packages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dependencies"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Package group"
|
||||
msgstr "Koma pakêtê:"
|
||||
|
||||
msgid "Extensive KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Packages in group"
|
||||
msgstr "Koma pakêtê:"
|
||||
|
||||
msgid "Minimal KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Description"
|
||||
msgstr "Şîfrekirina dîskê"
|
||||
|
||||
msgid "Select a flavor of KDE Plasma to install"
|
||||
msgstr ""
|
||||
|
|
|
|||
|
|
@ -169,7 +169,7 @@
|
|||
{"abbr": "tr", "lang": "Turkish", "translated_lang" : "Türkçe"},
|
||||
{"abbr": "tw", "lang": "Twi"},
|
||||
{"abbr": "ug", "lang": "Uighur"},
|
||||
{"abbr": "uk", "lang": "Ukrainian"},
|
||||
{"abbr": "uk", "lang": "Ukrainian", "console_font": "UniCyr_8x16"},
|
||||
{"abbr": "ur", "lang": "Urdu", "translated_lang": "اردو"},
|
||||
{"abbr": "uz", "lang": "Uzbek", "translated_lang": "O'zbek"},
|
||||
{"abbr": "ve", "lang": "Venda"},
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -28,7 +28,7 @@ msgid " Please submit this issue (and file) to https://github.com/archlinux/a
|
|||
msgstr " Por favor, envie este problema (e o arquivo) para: https://github.com/archlinux/archinstall/issues"
|
||||
|
||||
msgid "Do you really want to abort?"
|
||||
msgstr "Tem certeza de que deseja abortar?"
|
||||
msgstr "Tem certeza que deseja abortar?"
|
||||
|
||||
msgid "And one more time for verification: "
|
||||
msgstr "Digite novamente para confirmação: "
|
||||
|
|
@ -195,7 +195,7 @@ msgid "Select what you wish to do with the selected block devices"
|
|||
msgstr "Selecione o que deseja fazer com os dispositivos de bloco selecionados"
|
||||
|
||||
msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments"
|
||||
msgstr "Esta é uma lista de perfis pré-programados, que podem por exemplo facilitar a instalação de ambientes gráficos"
|
||||
msgstr "Esta é uma lista de perfis pré-programados, que podem, por exemplo, facilitar a instalação de ambientes gráficos"
|
||||
|
||||
msgid "Select keyboard layout"
|
||||
msgstr "Selecione o layout de teclado"
|
||||
|
|
@ -207,10 +207,10 @@ msgid "Select one or more hard drives to use and configure"
|
|||
msgstr "Selecione um ou mais discos rígidos para usar e 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 melhor compatibilidade com seu hardware AMD, recomenda-se usar a opção totalmente open source ou as opções AMD / ATI."
|
||||
msgstr "Para melhor compatibilidade com seu hardware AMD, recomenda-se usar a opção totalmente open-source ou as opções 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 melhor compatibilidade com seu hardware Intel, recomenda-se usar a opção totalmente open source ou as opções Intel.\n"
|
||||
msgstr "Para melhor compatibilidade com seu hardware Intel, recomenda-se usar a opção totalmente open-source ou as opções Intel.\n"
|
||||
|
||||
msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n"
|
||||
msgstr "Para melhor compatibilidade com seu hardware Nvidia, recomenda-se usar o driver proprietário da Nvidia.\n"
|
||||
|
|
@ -222,13 +222,13 @@ msgid ""
|
|||
msgstr ""
|
||||
"\n"
|
||||
"\n"
|
||||
"Selecione um driver de vídeo ou deixe em branco para instalar os drivers completamente open-source"
|
||||
"Selecione um driver de vídeo ou deixe em branco para instalar os drivers open-source"
|
||||
|
||||
msgid "All open-source (default)"
|
||||
msgstr "Tudo open-source (padrão)"
|
||||
|
||||
msgid "Choose which kernels to use or leave blank for default \"{}\""
|
||||
msgstr "Escolhe quais kernels usar ou deixe em branco para o kernel padrão \"{}\""
|
||||
msgstr "Escolha quais kernels usar ou deixe em branco para o kernel padrão \"{}\""
|
||||
|
||||
msgid "Choose which locale language to use"
|
||||
msgstr "Escolha qual idioma de localização usar"
|
||||
|
|
@ -249,7 +249,7 @@ msgid "You need to enter a valid fs-type in order to continue. See `man parted`
|
|||
msgstr "Você precisa definir um tipo de sistema de arquivo válido. Consulte o `man parted` para verificar os tipos de sistemas de arquivo válido."
|
||||
|
||||
msgid "Error: Listing profiles on URL \"{}\" resulted in:"
|
||||
msgstr "Erro: Listando os perfis em URL \"{}\" resulta em:"
|
||||
msgstr "Erro: Listando os perfis em URL \"{}\" resultou em:"
|
||||
|
||||
msgid "Error: Could not decode \"{}\" result as JSON:"
|
||||
msgstr "Erro: Não foi possível decodificar \"{}\" como JSON:"
|
||||
|
|
@ -309,7 +309,7 @@ msgid "Automatic time sync (NTP)"
|
|||
msgstr "Sincronização automática de tempo (NTP)"
|
||||
|
||||
msgid "Install ({} config(s) missing)"
|
||||
msgstr "Instalar ({} configuração(s) em falta)"
|
||||
msgstr "Instalar ({} a(s) configuração(ões) em falta)"
|
||||
|
||||
msgid ""
|
||||
"You decided to skip harddrive selection\n"
|
||||
|
|
@ -387,7 +387,7 @@ msgid "Enter disk encryption password (leave blank for no encryption): "
|
|||
msgstr "Digite a senha de encriptação do disco (deixe em branco para não encriptar): "
|
||||
|
||||
msgid "Create a required super-user with sudo privileges: "
|
||||
msgstr "Criar um superusuário requerido com privilégios de sudo: "
|
||||
msgstr "Criar um superusuário necessário com privilégios de sudo: "
|
||||
|
||||
msgid "Enter root password (leave blank to disable root): "
|
||||
msgstr "Digite uma senha de root (deixe em branco para desativar root): "
|
||||
|
|
@ -446,7 +446,7 @@ msgid "Copy to new key:"
|
|||
msgstr "Copiar para nova chave:"
|
||||
|
||||
msgid "Unknown nic type: {}. Possible values are {}"
|
||||
msgstr "Tipo de NIC desconhecido: {}. Possíveis valores são {}"
|
||||
msgstr "Tipo de NIC desconhecido: {}. Valores possíveis são {}"
|
||||
|
||||
msgid ""
|
||||
"\n"
|
||||
|
|
@ -456,7 +456,7 @@ msgstr ""
|
|||
"Esta é a configuração escolhida escolhida por você:"
|
||||
|
||||
msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate."
|
||||
msgstr "O Pacman já está em execução, aguarde no máximo até 10 minutos para terminar."
|
||||
msgstr "O Pacman já está em execução, esperando até o máximo de 10 minutos para terminar."
|
||||
|
||||
msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall."
|
||||
msgstr "A trava pré-existente do Pacman não terminou. Por favor, limpe as sessões de pacman existentes antes de usar o archinstall."
|
||||
|
|
@ -550,13 +550,13 @@ msgid "Missing configurations:\n"
|
|||
msgstr "Configurações em falta:\n"
|
||||
|
||||
msgid "Either root-password or at least 1 superuser must be specified"
|
||||
msgstr "Deve se especificar uma senha de root ou pelo menos 1 superusuário"
|
||||
msgstr "Deve-se especificar uma senha de root ou pelo menos 1 superusuário"
|
||||
|
||||
msgid "Manage superuser accounts: "
|
||||
msgstr "Administrar contas de superusuário: "
|
||||
|
||||
msgid "Manage ordinary user accounts: "
|
||||
msgstr "Administrar contas de usuário padrão: "
|
||||
msgstr "Administrar contas de usuário comuns: "
|
||||
|
||||
msgid " Subvolume :{:16}"
|
||||
msgstr " Subvolume :{:16}"
|
||||
|
|
@ -743,7 +743,7 @@ msgid "Value: "
|
|||
msgstr "Valor: "
|
||||
|
||||
msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)"
|
||||
msgstr "Você pode ignorar a seleção de unidade e particionar seja lá o que estiver montado em /mnt (experimental)"
|
||||
msgstr "Você pode ignorar a seleção de unidade e particionar o que já estiver montado em /mnt (experimental)"
|
||||
|
||||
msgid "Select one of the disks or skip and use /mnt as default"
|
||||
msgstr "Selecione um dos discos ou ignore e use /mnt como padrão"
|
||||
|
|
@ -833,8 +833,21 @@ msgstr "Entrada inválida! Tente novamente com uma entrada válida [1 para {max_
|
|||
msgid "Parallel Downloads"
|
||||
msgstr "Downloads Paralelos"
|
||||
|
||||
msgid "Pacman"
|
||||
msgstr "Pacman"
|
||||
|
||||
msgid "Color"
|
||||
msgstr "Cor"
|
||||
|
||||
#, fuzzy, python-brace-format
|
||||
msgid "Enter the number of parallel downloads (1-{})"
|
||||
msgstr "Insira o número de downloads paralelos (1-{})"
|
||||
|
||||
msgid "Enable colored output for pacman"
|
||||
msgstr "Ative a saída colorida para o pacman"
|
||||
|
||||
msgid "ESC to skip"
|
||||
msgstr "ESC para sair"
|
||||
msgstr "ESC para pular"
|
||||
|
||||
msgid "CTRL+C to reset"
|
||||
msgstr "CTRL+C para reiniciar"
|
||||
|
|
@ -1674,6 +1687,139 @@ msgstr "Iniciar modo de busca"
|
|||
msgid "Exit search mode"
|
||||
msgstr "Sair do modo de busca"
|
||||
|
||||
msgid "General"
|
||||
msgstr "Geral"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Navigation"
|
||||
msgstr "Salvar configuração"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Selection"
|
||||
msgstr "Selecionar regiões"
|
||||
|
||||
msgid "Search"
|
||||
msgstr "Buscar"
|
||||
|
||||
msgid "Down"
|
||||
msgstr "Abaixo"
|
||||
|
||||
msgid "Up"
|
||||
msgstr "Acima"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Confirm"
|
||||
msgstr "Confirmar"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Focus right"
|
||||
msgstr "Focar à direita"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Focus left"
|
||||
msgstr "Focar à esquerda"
|
||||
|
||||
msgid "Toggle"
|
||||
msgstr "Alternar"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Show/Hide help"
|
||||
msgstr "Mostrar/Esconder ajuda"
|
||||
|
||||
msgid "Quit"
|
||||
msgstr "Sair"
|
||||
|
||||
msgid "First"
|
||||
msgstr "Primeiro"
|
||||
|
||||
msgid "Last"
|
||||
msgstr "Último"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select"
|
||||
msgstr "Selecionar"
|
||||
|
||||
msgid "Page Up"
|
||||
msgstr "Página acima"
|
||||
|
||||
msgid "Page Down"
|
||||
msgstr "Página abaixo"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Page up"
|
||||
msgstr "Página acima"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Page down"
|
||||
msgstr "Página abaixo"
|
||||
|
||||
msgid "Page Left"
|
||||
msgstr "Página à esquerda"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Page Right"
|
||||
msgstr "Página à direita"
|
||||
|
||||
msgid "Cursor up"
|
||||
msgstr "Cursor acima"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Cursor down"
|
||||
msgstr "Cursor abaixo"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Cursor right"
|
||||
msgstr "Cursor à direita"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Cursor left"
|
||||
msgstr "Cursor à esquerda"
|
||||
|
||||
msgid "Top"
|
||||
msgstr "Topo"
|
||||
|
||||
msgid "Bottom"
|
||||
msgstr "Rodapé"
|
||||
|
||||
msgid "Home"
|
||||
msgstr "Início"
|
||||
|
||||
#, fuzzy
|
||||
msgid "End"
|
||||
msgstr "Final"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Toggle option"
|
||||
msgstr "Alternar opção"
|
||||
|
||||
msgid "Scroll Up"
|
||||
msgstr "Rolar visualização para cima"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Scroll Down"
|
||||
msgstr "Rolar visualização para baixo"
|
||||
|
||||
msgid "Scroll Left"
|
||||
msgstr "Rolar visualização para a esquerda"
|
||||
|
||||
msgid "Scroll Right"
|
||||
msgstr "Rolar visualização para a direita"
|
||||
|
||||
msgid "Scroll Home"
|
||||
msgstr "Rolar visualização até o começo"
|
||||
|
||||
msgid "Scroll End"
|
||||
msgstr "Rolar visualização até o final"
|
||||
|
||||
msgid "Focus Next"
|
||||
msgstr "Focar no próximo"
|
||||
|
||||
msgid "Focus Previous"
|
||||
msgstr "Focar no anterior"
|
||||
|
||||
msgid "Copy selected text"
|
||||
msgstr "Copiar o texto selecionado"
|
||||
|
||||
msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)"
|
||||
msgstr "labwc precisa de acesso ao seu seat (conjunto de dispositivos de hardware, como teclado, mouse etc.)"
|
||||
|
||||
|
|
@ -1866,7 +2012,7 @@ msgid "Will install to custom location with NVRAM entry"
|
|||
msgstr "Será instalado em um local personalizado com entrada NVRAM"
|
||||
|
||||
msgid "Firmware that does not properly support NVRAM boot entries like most MSI motherboards,"
|
||||
msgstr "Firmware que não oferece suporte adequado a entradas de boot na NVRAM,"
|
||||
msgstr "Firmware que não oferece suporte adequado a entradas de boot na NVRAM, como a maioria das placas-mãe MSI,"
|
||||
|
||||
msgid "most Apple Macs, many laptops..."
|
||||
msgstr "a maioria dos Macs da Apple, muitos laptops..."
|
||||
|
|
@ -1875,7 +2021,7 @@ msgid "Language"
|
|||
msgstr "Idioma"
|
||||
|
||||
msgid "Compression algorithm"
|
||||
msgstr "Algorítimo de compressão"
|
||||
msgstr "Algoritmo de compressão"
|
||||
|
||||
msgid "Only packages such as base, sudo, linux, linux-firmware, efibootmgr and optional profile packages are installed."
|
||||
msgstr "Apenas pacotes como base, base-devel, linux, linux-firmware, efibootmgr e pacotes opcionais de perfil são instalados."
|
||||
|
|
@ -1884,10 +2030,10 @@ msgid "Select zram compression algorithm:"
|
|||
msgstr "Selecione o algoritmo de compressão zram:"
|
||||
|
||||
msgid "Use Network Manager (default backend)"
|
||||
msgstr "Use o Network Manager (default backend)"
|
||||
msgstr "Use o Network Manager (backend padrão)"
|
||||
|
||||
msgid "Use Network Manager (iwd backend)"
|
||||
msgstr "Use o Network Manager (iwd backend)"
|
||||
msgstr "Use o Network Manager (backend com iwd)"
|
||||
|
||||
msgid "Firewall"
|
||||
msgstr "Firewall"
|
||||
|
|
@ -2002,5 +2148,60 @@ msgstr "Digite uma senha"
|
|||
msgid "The password did not match, please try again"
|
||||
msgstr "A senha não corresponde. Tente novamente"
|
||||
|
||||
msgid "Password strength: Weak"
|
||||
msgstr "Nível de segurança da senha: Fraca"
|
||||
|
||||
msgid "Password strength: Moderate"
|
||||
msgstr "Nível de segurança da senha: Moderada"
|
||||
|
||||
msgid "Password strength: Strong"
|
||||
msgstr "Nível de segurança da senha: Forte"
|
||||
|
||||
msgid "The selected desktop profile requires a regular user to log in via the greeter"
|
||||
msgstr "O perfil de desktop selecionado requer um usuário regular para fazer o login pelo greeter"
|
||||
|
||||
#, fuzzy, python-brace-format
|
||||
msgid "Environment type: {} {}"
|
||||
msgstr "Tipo de ambiente: {}"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Input cannot be empty"
|
||||
msgstr "Valor não pode estar vazio"
|
||||
|
||||
msgid "Recommended"
|
||||
msgstr "Recomendado"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Package"
|
||||
msgstr "Pacote"
|
||||
|
||||
msgid "Curated selection of KDE Plasma packages"
|
||||
msgstr "Coleção selecionada de pacotes do KDE Plasma"
|
||||
|
||||
msgid "Dependencies"
|
||||
msgstr "Dependências"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Package group"
|
||||
msgstr "Grupo de pacotes:"
|
||||
|
||||
msgid "Extensive KDE Plasma installation"
|
||||
msgstr "Instalação extensiva do KDE Plasma"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Packages in group"
|
||||
msgstr "Pacotes no grupo"
|
||||
|
||||
msgid "Minimal KDE Plasma installation"
|
||||
msgstr "Instalação mínima do KDE Plasma"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Description"
|
||||
msgstr "Descrição"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select a flavor of KDE Plasma to install"
|
||||
msgstr "Selecione uma versão do KDE Plasma para instalar"
|
||||
|
||||
#~ msgid "When picking a directory to save configuration files to, by default we will ignore the following folders: "
|
||||
#~ msgstr "Ao selecionar um diretório para salvar arquivos de configuração, por padrão nós ignoramos as seguintes pastas: "
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -826,6 +826,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, щоб пропустити"
|
||||
|
||||
|
|
@ -1666,6 +1679,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 потребує доступ до вашого місця (набору апаратних пристроїв, таких як клавіатура, миша тощо)"
|
||||
|
||||
|
|
@ -1884,6 +2014,21 @@ msgstr "Використовувати NetworkManager (з 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 "Оберіть конфігурацію аудіо"
|
||||
|
||||
|
|
@ -2008,3 +2153,46 @@ msgstr "Надійність пароля: Сильна"
|
|||
|
||||
msgid "The selected desktop profile requires a regular user to log in via the greeter"
|
||||
msgstr "Обраний профіль робочого столу вимагає входу звичайного користувача через менеджер входу"
|
||||
|
||||
#, fuzzy, python-brace-format
|
||||
msgid "Environment type: {} {}"
|
||||
msgstr "Тип середовища: {}"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Input cannot be empty"
|
||||
msgstr "Значення не може бути пустим"
|
||||
|
||||
msgid "Recommended"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Package"
|
||||
msgstr "Група пакетів:"
|
||||
|
||||
msgid "Curated selection of KDE Plasma packages"
|
||||
msgstr ""
|
||||
|
||||
msgid "Dependencies"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Package group"
|
||||
msgstr "Група пакетів:"
|
||||
|
||||
msgid "Extensive KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Packages in group"
|
||||
msgstr "Група пакетів:"
|
||||
|
||||
msgid "Minimal KDE Plasma installation"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Description"
|
||||
msgstr "Шифрування диска"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Select a flavor of KDE Plasma to install"
|
||||
msgstr "Оберіть завантажувач для встановлення"
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ from archinstall.lib.networking import ping
|
|||
from archinstall.lib.output import debug, error, info, warn
|
||||
from archinstall.lib.packages.util import check_version_upgrade
|
||||
from archinstall.lib.pacman.pacman import Pacman
|
||||
from archinstall.lib.translationhandler import tr
|
||||
from archinstall.lib.translationhandler import tr, translation_handler
|
||||
from archinstall.lib.utils.util import running_from_iso
|
||||
from archinstall.tui.ui.components import tui
|
||||
|
||||
|
|
@ -95,6 +95,8 @@ def run() -> int:
|
|||
print(tr('Archinstall requires root privileges to run. See --help for more.'))
|
||||
return 1
|
||||
|
||||
translation_handler.save_console_font()
|
||||
|
||||
_log_sys_info()
|
||||
|
||||
if not arch_config_handler.args.offline:
|
||||
|
|
@ -159,6 +161,8 @@ def main() -> int:
|
|||
_error_message(exc)
|
||||
rc = 1
|
||||
|
||||
translation_handler.restore_console_font()
|
||||
|
||||
return rc
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -39,12 +39,10 @@ def show_menu(
|
|||
arch_config_handler.config,
|
||||
mirror_list_handler,
|
||||
arch_config_handler.args.skip_boot,
|
||||
advanced=arch_config_handler.args.advanced,
|
||||
title=title_text,
|
||||
)
|
||||
|
||||
if not arch_config_handler.args.advanced:
|
||||
global_menu.set_enabled('parallel_downloads', False)
|
||||
|
||||
result: ArchConfig | None = tui.run(global_menu)
|
||||
if result is None:
|
||||
sys.exit(0)
|
||||
|
|
@ -94,7 +92,7 @@ def perform_installation(
|
|||
)
|
||||
|
||||
if disk_config.config_type != DiskLayoutType.Pre_mount:
|
||||
if disk_config.disk_encryption and disk_config.disk_encryption.encryption_type != EncryptionType.NoEncryption:
|
||||
if disk_config.disk_encryption and disk_config.disk_encryption.encryption_type != EncryptionType.NO_ENCRYPTION:
|
||||
# generate encryption key files for the mounted luks devices
|
||||
installation.generate_key_files()
|
||||
|
||||
|
|
@ -106,6 +104,7 @@ def perform_installation(
|
|||
mkinitcpio=run_mkinitcpio,
|
||||
hostname=arch_config_handler.config.hostname,
|
||||
locale_config=locale_config,
|
||||
pacman_config=config.pacman_config,
|
||||
)
|
||||
|
||||
if mirror_config := config.mirror_config:
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
import sys
|
||||
from abc import ABC, abstractmethod
|
||||
from collections.abc import Awaitable, Callable
|
||||
from dataclasses import dataclass
|
||||
from dataclasses import dataclass, replace
|
||||
from enum import Enum, auto
|
||||
from typing import Any, ClassVar, Literal, TypeVar, cast, override
|
||||
|
||||
from textual import work
|
||||
from textual.app import App, ComposeResult
|
||||
from textual.binding import Binding
|
||||
from textual.binding import Binding, BindingsMap
|
||||
from textual.containers import Center, Horizontal, ScrollableContainer, Vertical
|
||||
from textual.events import Key
|
||||
from textual.geometry import Offset
|
||||
|
|
@ -27,6 +27,18 @@ from archinstall.tui.ui.result import Result, ResultType
|
|||
ValueT = TypeVar('ValueT')
|
||||
|
||||
|
||||
def _translate_bindings(source: BindingsMap | None, target: BindingsMap) -> None:
|
||||
"""Translate binding descriptions from source to target.
|
||||
|
||||
Uses source (original, immutable class-level cache) to avoid
|
||||
double-translation on repeated calls (e.g. language switch).
|
||||
"""
|
||||
if source is None:
|
||||
return
|
||||
for key, bindings in source.key_to_bindings.items():
|
||||
target.key_to_bindings[key] = [replace(b, description=tr(b.description)) if b.description else b for b in bindings]
|
||||
|
||||
|
||||
class BaseScreen(Screen[Result[ValueT]]):
|
||||
BINDINGS: ClassVar = [
|
||||
Binding('escape', 'cancel_operation', 'Cancel', show=True),
|
||||
|
|
@ -97,6 +109,7 @@ class LoadingScreen(BaseScreen[ValueT]):
|
|||
yield Footer()
|
||||
|
||||
def on_mount(self) -> None:
|
||||
_translate_bindings(self._merged_bindings, self._bindings)
|
||||
if self._data_callback:
|
||||
self._exec_callback()
|
||||
else:
|
||||
|
|
@ -129,6 +142,10 @@ class _OptionList(OptionList):
|
|||
Binding('k', 'cursor_up', 'Up', show=False),
|
||||
]
|
||||
|
||||
@override
|
||||
def on_mount(self) -> None:
|
||||
_translate_bindings(self._merged_bindings, self._bindings)
|
||||
|
||||
|
||||
class OptionListScreen(BaseScreen[ValueT]):
|
||||
"""
|
||||
|
|
@ -271,6 +288,7 @@ class OptionListScreen(BaseScreen[ValueT]):
|
|||
yield Footer()
|
||||
|
||||
def on_mount(self) -> None:
|
||||
_translate_bindings(self._merged_bindings, self._bindings)
|
||||
self._update_options(self._options)
|
||||
self.query_one(OptionList).focus()
|
||||
|
||||
|
|
@ -356,6 +374,10 @@ class _SelectionList(SelectionList[ValueT]):
|
|||
Binding('space', 'select', 'Toggle', show=True),
|
||||
]
|
||||
|
||||
@override
|
||||
def on_mount(self) -> None:
|
||||
_translate_bindings(self._merged_bindings, self._bindings)
|
||||
|
||||
|
||||
class SelectListScreen(BaseScreen[ValueT]):
|
||||
"""
|
||||
|
|
@ -500,6 +522,7 @@ class SelectListScreen(BaseScreen[ValueT]):
|
|||
self._handle_search_action()
|
||||
|
||||
def on_mount(self) -> None:
|
||||
_translate_bindings(self._merged_bindings, self._bindings)
|
||||
self._update_options(self._options)
|
||||
self.query_one(SelectionList).focus()
|
||||
|
||||
|
|
@ -670,6 +693,7 @@ class ConfirmationScreen(BaseScreen[ValueT]):
|
|||
yield Footer()
|
||||
|
||||
def on_mount(self) -> None:
|
||||
_translate_bindings(self._merged_bindings, self._bindings)
|
||||
self._update_selection()
|
||||
|
||||
def action_focus_right(self) -> None:
|
||||
|
|
@ -825,6 +849,7 @@ class InputScreen(BaseScreen[str]):
|
|||
yield Footer()
|
||||
|
||||
def on_mount(self) -> None:
|
||||
_translate_bindings(self._merged_bindings, self._bindings)
|
||||
input_field = self.query_one('#main_input', Input)
|
||||
input_field.focus()
|
||||
|
||||
|
|
@ -872,6 +897,10 @@ class _DataTable(DataTable[ValueT]):
|
|||
Binding('enter', 'select_cursor', 'Confirm', show=True),
|
||||
]
|
||||
|
||||
@override
|
||||
def on_mount(self) -> None:
|
||||
_translate_bindings(self._merged_bindings, self._bindings)
|
||||
|
||||
|
||||
class TableSelectionScreen(BaseScreen[ValueT]):
|
||||
BINDINGS: ClassVar = [
|
||||
|
|
@ -992,6 +1021,7 @@ class TableSelectionScreen(BaseScreen[ValueT]):
|
|||
yield Footer()
|
||||
|
||||
def on_mount(self) -> None:
|
||||
_translate_bindings(self._merged_bindings, self._bindings)
|
||||
self._display_header(True)
|
||||
data_table = self.query_one(DataTable)
|
||||
data_table.cell_padding = 2
|
||||
|
|
@ -1016,6 +1046,20 @@ class TableSelectionScreen(BaseScreen[ValueT]):
|
|||
header = self.query_one('#header_text', Label)
|
||||
header.display = not is_loading
|
||||
|
||||
def _get_column_keys(self, items: list[MenuItem]) -> list[str]:
|
||||
all_keys: list[str] = []
|
||||
for item in items:
|
||||
if item.value:
|
||||
all_keys.extend(item.value.table_data().keys())
|
||||
|
||||
# Create unique list while preserving order
|
||||
unique_keys: list[str] = list(dict.fromkeys(all_keys))
|
||||
|
||||
if self._multi:
|
||||
unique_keys.insert(0, ' ')
|
||||
|
||||
return unique_keys
|
||||
|
||||
def _put_data_to_table(self, table: DataTable[ValueT], group: MenuItemGroup) -> None:
|
||||
items = group.items
|
||||
selected = group.selected_items
|
||||
|
|
@ -1024,15 +1068,7 @@ class TableSelectionScreen(BaseScreen[ValueT]):
|
|||
_ = self.dismiss(Result(ResultType.Selection))
|
||||
return
|
||||
|
||||
value = items[0].value
|
||||
if not value:
|
||||
_ = self.dismiss(Result(ResultType.Selection))
|
||||
return
|
||||
|
||||
cols = list(value.table_data().keys())
|
||||
|
||||
if self._multi:
|
||||
cols.insert(0, ' ')
|
||||
cols = self._get_column_keys(items)
|
||||
|
||||
table.add_columns(*cols)
|
||||
|
||||
|
|
@ -1236,6 +1272,13 @@ class _AppInstance(App[ValueT]):
|
|||
super().__init__(ansi_color=True)
|
||||
self._main = main
|
||||
|
||||
@override
|
||||
async def _on_exit_app(self) -> None:
|
||||
from archinstall.lib.translationhandler import translation_handler
|
||||
|
||||
translation_handler.restore_console_font()
|
||||
await super()._on_exit_app()
|
||||
|
||||
def action_trigger_help(self) -> None:
|
||||
from textual.widgets import HelpPanel
|
||||
|
||||
|
|
@ -1245,6 +1288,10 @@ class _AppInstance(App[ValueT]):
|
|||
_ = self.screen.mount(HelpPanel())
|
||||
|
||||
def on_mount(self) -> None:
|
||||
from archinstall.lib.translationhandler import translation_handler
|
||||
|
||||
translation_handler.apply_console_font()
|
||||
_translate_bindings(self._merged_bindings, self._bindings)
|
||||
self._run_worker()
|
||||
|
||||
@work
|
||||
|
|
@ -1291,5 +1338,10 @@ class TApp:
|
|||
assert TApp.app
|
||||
TApp.app.exit(result)
|
||||
|
||||
def translate_bindings(self) -> None:
|
||||
"""Re-translate app-level binding descriptions after language change."""
|
||||
if TApp.app is not None:
|
||||
_translate_bindings(TApp.app._merged_bindings, TApp.app._bindings)
|
||||
|
||||
|
||||
tui = TApp()
|
||||
|
|
|
|||
|
|
@ -64,8 +64,8 @@ After running ``python -m archinstall test_installer`` it should print something
|
|||
_PartitionInfo(
|
||||
partition=<parted.partition.Partition object at 0x7fbe166c4a90>,
|
||||
name='primary',
|
||||
type=<PartitionType.Primary: 'primary'>,
|
||||
fs_type=<FilesystemType.Fat32: 'fat32'>,
|
||||
type=<PartitionType.PRIMARY: 'primary'>,
|
||||
fs_type=<FilesystemType.FAT32: 'fat32'>,
|
||||
path='/dev/nvme0n1p1',
|
||||
start=Size(value=2048, unit=<Unit.sectors: 'sectors'>, sector_size=SectorSize(value=512, unit=<Unit.B: 1>)),
|
||||
length=Size(value=535822336, unit=<Unit.B: 1>, sector_size=SectorSize(value=512, unit=<Unit.B: 1>)),
|
||||
|
|
|
|||
|
|
@ -37,20 +37,20 @@ device_modification = DeviceModification(device, wipe=True)
|
|||
|
||||
# create a new boot partition
|
||||
boot_partition = PartitionModification(
|
||||
status=ModificationStatus.Create,
|
||||
type=PartitionType.Primary,
|
||||
status=ModificationStatus.CREATE,
|
||||
type=PartitionType.PRIMARY,
|
||||
start=Size(1, Unit.MiB, device.device_info.sector_size),
|
||||
length=Size(512, Unit.MiB, device.device_info.sector_size),
|
||||
mountpoint=Path('/boot'),
|
||||
fs_type=FilesystemType.Fat32,
|
||||
fs_type=FilesystemType.FAT32,
|
||||
flags=[PartitionFlag.BOOT],
|
||||
)
|
||||
device_modification.add_partition(boot_partition)
|
||||
|
||||
# create a root partition
|
||||
root_partition = PartitionModification(
|
||||
status=ModificationStatus.Create,
|
||||
type=PartitionType.Primary,
|
||||
status=ModificationStatus.CREATE,
|
||||
type=PartitionType.PRIMARY,
|
||||
start=Size(513, Unit.MiB, device.device_info.sector_size),
|
||||
length=Size(20, Unit.GiB, device.device_info.sector_size),
|
||||
mountpoint=None,
|
||||
|
|
@ -64,8 +64,8 @@ length_home = device.device_info.total_size - start_home
|
|||
|
||||
# create a new home partition
|
||||
home_partition = PartitionModification(
|
||||
status=ModificationStatus.Create,
|
||||
type=PartitionType.Primary,
|
||||
status=ModificationStatus.CREATE,
|
||||
type=PartitionType.PRIMARY,
|
||||
start=start_home,
|
||||
length=length_home,
|
||||
mountpoint=Path('/home'),
|
||||
|
|
@ -82,7 +82,7 @@ disk_config = DiskLayoutConfiguration(
|
|||
# disk encryption configuration (Optional)
|
||||
disk_encryption = DiskEncryption(
|
||||
encryption_password=Password(plaintext='enc_password'),
|
||||
encryption_type=EncryptionType.Luks,
|
||||
encryption_type=EncryptionType.LUKS,
|
||||
partitions=[home_partition],
|
||||
hsm_device=None,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|||
|
||||
[project]
|
||||
name = "archinstall"
|
||||
version = "4.1"
|
||||
version = "4.3"
|
||||
description = "Arch Linux installer - guided, templates etc."
|
||||
authors = [
|
||||
{name = "Anton Hvornum", email = "anton@hvornum.se"},
|
||||
|
|
@ -18,11 +18,12 @@ classifiers = [
|
|||
"Operating System :: POSIX :: Linux",
|
||||
]
|
||||
dependencies = [
|
||||
"pyparted>=3.13.0",
|
||||
"pyparted==3.13.0",
|
||||
"pydantic==2.12.5",
|
||||
"cryptography>=45.0.7",
|
||||
"textual>=5.3.0",
|
||||
"markdown-it-py[linkify]>=4.0.0",
|
||||
"cryptography==46.0.7",
|
||||
"textual==8.2.3",
|
||||
"markdown-it-py==4.0.0",
|
||||
"linkify-it-py==2.1.0",
|
||||
]
|
||||
|
||||
[project.urls]
|
||||
|
|
@ -33,10 +34,10 @@ Source = "https://github.com/archlinux/archinstall"
|
|||
[project.optional-dependencies]
|
||||
log = ["systemd_python==235"]
|
||||
dev = [
|
||||
"mypy==1.20.0",
|
||||
"mypy==1.20.1",
|
||||
"flake8==7.3.0",
|
||||
"pre-commit==4.5.1",
|
||||
"ruff==0.15.10",
|
||||
"ruff==0.15.11",
|
||||
"pylint==4.0.5",
|
||||
"pytest==9.0.3",
|
||||
]
|
||||
|
|
|
|||
|
|
@ -8,6 +8,32 @@
|
|||
"pre-commit": {
|
||||
"enabled": true
|
||||
},
|
||||
"customManagers": [
|
||||
{
|
||||
"customType": "regex",
|
||||
"description": "Track runtime Python deps via Arch Linux repos instead of PyPI",
|
||||
"managerFilePatterns": ["**/pyproject.toml"],
|
||||
"matchStrings": [
|
||||
"\"(?<depName>pyparted|pydantic|cryptography|textual|markdown-it-py|linkify-it-py)==(?<currentValue>[^\"]+)\""
|
||||
],
|
||||
"depNameTemplate": "arch/python-{{{depName}}}",
|
||||
"datasourceTemplate": "repology",
|
||||
"versioningTemplate": "loose",
|
||||
"extractVersionTemplate": "^(?<version>.+)-\\d+$"
|
||||
},
|
||||
{
|
||||
"customType": "regex",
|
||||
"description": "Track systemd_python via Arch Linux repos (different package name)",
|
||||
"managerFilePatterns": ["**/pyproject.toml"],
|
||||
"matchStrings": [
|
||||
"\"systemd_python==(?<currentValue>[^\"]+)\""
|
||||
],
|
||||
"depNameTemplate": "arch/python-systemd",
|
||||
"datasourceTemplate": "repology",
|
||||
"versioningTemplate": "loose",
|
||||
"extractVersionTemplate": "^(?<version>.+)-\\d+$"
|
||||
}
|
||||
],
|
||||
"packageRules": [
|
||||
{
|
||||
"matchDepTypes": [
|
||||
|
|
@ -24,6 +50,20 @@
|
|||
"astral-sh/ruff-pre-commit"
|
||||
],
|
||||
"automerge": true
|
||||
},
|
||||
{
|
||||
"description": "Disable PyPI updates for runtime deps tracked via Arch repos",
|
||||
"matchDatasources": ["pypi"],
|
||||
"matchPackageNames": [
|
||||
"pyparted",
|
||||
"pydantic",
|
||||
"cryptography",
|
||||
"textual",
|
||||
"markdown-it-py",
|
||||
"linkify-it-py",
|
||||
"systemd_python"
|
||||
],
|
||||
"enabled": false
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@ from archinstall.lib.models.locale import LocaleConfiguration
|
|||
from archinstall.lib.models.mirrors import CustomRepository, CustomServer, MirrorConfiguration, MirrorRegion, SignCheck, SignOption
|
||||
from archinstall.lib.models.network import NetworkConfiguration, Nic, NicType
|
||||
from archinstall.lib.models.packages import Repository
|
||||
from archinstall.lib.models.pacman import PacmanConfiguration
|
||||
from archinstall.lib.models.profile import ProfileConfiguration
|
||||
from archinstall.lib.models.users import Password, User
|
||||
from archinstall.lib.profile.profiles_handler import profile_handler
|
||||
|
|
@ -234,7 +235,7 @@ def test_config_file_parsing(
|
|||
kernels=['linux-zen'],
|
||||
ntp=True,
|
||||
packages=['firefox'],
|
||||
parallel_downloads=66,
|
||||
pacman_config=PacmanConfiguration(parallel_downloads=66),
|
||||
swap=ZramConfiguration(enabled=False),
|
||||
timezone='UTC',
|
||||
services=['service_1', 'service_2'],
|
||||
|
|
|
|||
Loading…
Reference in New Issue