index : archinstall32 | |
Archlinux32 installer | gitolite user |
summaryrefslogtreecommitdiff |
author | Andreas Baumann <mail@andreasbaumann.cc> | 2022-05-28 10:36:38 +0200 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2022-05-28 10:36:38 +0200 |
commit | faf925de1882be722d2994d697a802918282e509 (patch) | |
tree | 4856c76b10b36e94875ce3c9add961960bb23bf0 | |
parent | 3801bee921d22e23435c781c469d9ec0adfa00bd (diff) | |
parent | 78449f75bc44f0e2b03cb9d909b9b78e4f7ca4c8 (diff) |
@@ -1,7 +1,7 @@ [flake8] count = True # Several of the following could be autofixed or improved by running the code through psf/black -ignore = E123,E126,E128,E203,E231,E261,E302,E402,E722,F541,W191,W292,W293 +ignore = E123,E126,E128,E203,E231,E261,E302,E402,E722,F541,W191,W292,W293,W503 max-complexity = 40 max-line-length = 236 show-source = True diff --git a/.github/workflows/mypy.yaml b/.github/workflows/mypy.yaml index 6fd0876f..d14d8553 100644 --- a/.github/workflows/mypy.yaml +++ b/.github/workflows/mypy.yaml @@ -15,4 +15,4 @@ jobs: # one day this will be enabled # run: mypy --strict --module archinstall || exit 0 - name: run mypy - run: mypy --follow-imports=skip archinstall/lib/menu/selection_menu.py archinstall/lib/models/network_configuration.py archinstall/lib/menu/list_manager.py archinstall/lib/user_interaction/network_conf.py + run: mypy --follow-imports=silent archinstall/lib/menu/selection_menu.py archinstall/lib/menu/global_menu.py archinstall/lib/models/network_configuration.py archinstall/lib/menu/list_manager.py archinstall/lib/user_interaction/network_conf.py archinstall/lib/models/users.py @@ -4,7 +4,7 @@ # Contributor: demostanis worlds <demostanis@protonmail.com> pkgname=archinstall -pkgver=2.4.2 +pkgver=2.4.3rc1 #pkgver=$(git describe --long | sed 's/\([^-]*-g\)/r\1/;s/-/./g') pkgrel=1 pkgdesc="Just another guided/automated Arch Linux installer with a twist" @@ -35,7 +35,7 @@ Prequisites: Assuming you are on a Arch Linux live-ISO and booted into EFI mode. - # archinstall --config <path to config file or URL> + # archinstall --config <path to user config file or URL> --disk-layout <path to disk layout config file or URL> --creds <path to user credentials config file or URL> # Help? @@ -105,7 +105,8 @@ with archinstall.Installer('/mnt') as installation: # In this case, we install a minimal profile that is empty installation.install_profile('minimal') - installation.user_create('devel', 'devel') + user = User('devel', 'devel', False) + installation.create_users(user) installation.user_set_pw('root', 'airoot') ``` @@ -118,7 +119,7 @@ This installer will perform the following: * Installs and configures a bootloader to partition 0 on uefi. On BIOS, it sets the root to partition 0. * Install additional packages *(nano, wget, git)* -> **Creating your own ISO with this script on it:** Follow [ArchISO](https://wiki.archlinux.org/index.php/archiso)'s guide on how to create your own ISO or use a pre-built [guided ISO](https://hvornum.se/archiso/) to skip the python installation step, or to create auto-installing ISO templates. Further down are examples and cheat sheets on how to create different live ISO's. +> **Creating your own ISO with this script on it:** Follow [ArchISO](https://wiki.archlinux.org/index.php/archiso)'s guide on how to create your own ISO. ## Unattended installation based on MAC address diff --git a/archinstall/__init__.py b/archinstall/__init__.py index f3620648..7edeaa80 100644 --- a/archinstall/__init__.py +++ b/archinstall/__init__.py @@ -1,7 +1,4 @@ """Arch Linux installer - guided, templates etc.""" -import urllib.error -import urllib.parse -import urllib.request from argparse import ArgumentParser from .lib.disk import * @@ -13,6 +10,7 @@ from .lib.locale_helpers import * from .lib.luks import * from .lib.mirrors import * from .lib.models.network_configuration import NetworkConfigurationHandler +from .lib.models.users import User from .lib.networking import * from .lib.output import * from .lib.models.dataclasses import ( @@ -45,9 +43,14 @@ from .lib.menu.selection_menu import ( from .lib.translation import Translation, DeferredTranslation from .lib.plugins import plugins, load_plugin # This initiates the plugin loading ceremony from .lib.configuration import * +from .lib.udev import udevadm_info +from .lib.hsm import ( + get_fido2_devices, + fido2_enroll +) parser = ArgumentParser() -__version__ = "2.4.2" +__version__ = "2.5.0" storage['__version__'] = __version__ # add the custome _ as a builtin, it can now be used anywhere in the @@ -55,6 +58,10 @@ storage['__version__'] = __version__ DeferredTranslation.install() +def set_unicode_font(): + SysCommand('setfont UniCyr_8x16') + + def define_arguments(): """ Define which explicit arguments do we allow. @@ -145,22 +152,13 @@ def get_arguments() -> Dict[str, Any]: # preprocess the json files. # TODO Expand the url access to the other JSON file arguments ? if args.config is not None: - try: - # First, let's check if this is a URL scheme instead of a filename - parsed_url = urllib.parse.urlparse(args.config) + if not json_stream_to_structure('--config', args.config, config): + exit(1) - if not parsed_url.scheme: # The Profile was not a direct match on a remote URL, it must be a local file. - if not json_stream_to_structure('--config',args.config,config): - exit(1) - else: # Attempt to load the configuration from the URL. - with urllib.request.urlopen(urllib.request.Request(args.config, headers={'User-Agent': 'ArchInstall'})) as response: - config.update(json.loads(response.read())) - except Exception as e: - raise ValueError(f"Could not load --config because: {e}") + if args.creds is not None: + if not json_stream_to_structure('--creds', args.creds, config): + exit(1) - if args.creds is not None: - if not json_stream_to_structure('--creds',args.creds,config): - exit(1) # load the parameters. first the known, then the unknowns config.update(vars(args)) config.update(parse_unspecified_argument_list(unknowns)) @@ -211,6 +209,11 @@ def load_config(): handler = NetworkConfigurationHandler() handler.parse_arguments(arguments.get('nic')) arguments['nic'] = handler.configuration + if arguments.get('!users', None) is not None or arguments.get('!superusers', None) is not None: + users = arguments.get('!users', None) + superusers = arguments.get('!superusers', None) + arguments['!users'] = User.parse_arguments(users, superusers) + def post_process_arguments(arguments): storage['arguments'] = arguments @@ -243,6 +246,9 @@ def post_process_arguments(arguments): load_config() +# to ensure that cyrillic characters work in the installer +# set_unicode_font() + define_arguments() arguments = get_arguments() post_process_arguments(arguments) diff --git a/archinstall/lib/configuration.py b/archinstall/lib/configuration.py index c971768f..510f7103 100644 --- a/archinstall/lib/configuration.py +++ b/archinstall/lib/configuration.py @@ -1,12 +1,23 @@ import json import logging -from pathlib import Path +import pathlib from typing import Optional, Dict from .storage import storage from .general import JSON, UNSAFE_JSON from .output import log - +from .exceptions import RequirementError +from .hsm import get_fido2_devices + +def configuration_sanity_check(): + if storage['arguments'].get('HSM'): + if not get_fido2_devices(): + raise RequirementError( + f"In order to use HSM to pair with the disk encryption," + + f" one needs to be accessible through /dev/hidraw* and support" + + f" the FIDO2 protocol. You can check this by running" + + f" 'systemd-cryptenroll --fido2-device=list'." + ) class ConfigurationOutput: def __init__(self, config: Dict): @@ -21,12 +32,12 @@ class ConfigurationOutput: self._user_credentials = {} self._disk_layout = None self._user_config = {} - self._default_save_path = Path(storage.get('LOG_PATH', '.')) + self._default_save_path = pathlib.Path(storage.get('LOG_PATH', '.')) self._user_config_file = 'user_configuration.json' self._user_creds_file = "user_credentials.json" self._disk_layout_file = "user_disk_layout.json" - self._sensitive = ['!users', '!superusers', '!encryption-password'] + self._sensitive = ['!users', '!encryption-password'] self._ignore = ['abort', 'install', 'config', 'creds', 'dry_run'] self._process_config() @@ -84,7 +95,7 @@ class ConfigurationOutput: print() - def _is_valid_path(self, dest_path :Path) -> bool: + def _is_valid_path(self, dest_path :pathlib.Path) -> bool: if (not dest_path.exists()) or not (dest_path.is_dir()): log( 'Destination directory {} does not exist or is not a directory,\n Configuration files can not be saved'.format(dest_path.resolve()), @@ -93,26 +104,26 @@ class ConfigurationOutput: return False return True - def save_user_config(self, dest_path :Path = None): + def save_user_config(self, dest_path :pathlib.Path = None): if self._is_valid_path(dest_path): with open(dest_path / self._user_config_file, 'w') as config_file: config_file.write(self.user_config_to_json()) - def save_user_creds(self, dest_path :Path = None): + def save_user_creds(self, dest_path :pathlib.Path = None): if self._is_valid_path(dest_path): if user_creds := self.user_credentials_to_json(): target = dest_path / self._user_creds_file with open(target, 'w') as config_file: config_file.write(user_creds) - def save_disk_layout(self, dest_path :Path = None): + def save_disk_layout(self, dest_path :pathlib.Path = None): if self._is_valid_path(dest_path): if disk_layout := self.disk_layout_to_json(): target = dest_path / self._disk_layout_file with target.open('w') as config_file: config_file.write(disk_layout) - def save(self, dest_path :Path = None): + def save(self, dest_path :pathlib.Path = None): if not dest_path: dest_path = self._default_save_path diff --git a/archinstall/lib/disk/__init__.py b/archinstall/lib/disk/__init__.py index bb6eb815..352d04b9 100644 --- a/archinstall/lib/disk/__init__.py +++ b/archinstall/lib/disk/__init__.py @@ -4,4 +4,4 @@ from .blockdevice import BlockDevice from .filesystem import Filesystem, MBR, GPT from .partition import * from .user_guides import * -from .validators import * +from .validators import *
\ No newline at end of file diff --git a/archinstall/lib/disk/blockdevice.py b/archinstall/lib/disk/blockdevice.py index 206c3b7e..c7b69205 100644 --- a/archinstall/lib/disk/blockdevice.py +++ b/archinstall/lib/disk/blockdevice.py @@ -3,6 +3,7 @@ import os import json import logging import time +from functools import cached_property from typing import Optional, Dict, Any, Iterator, Tuple, List, TYPE_CHECKING # https://stackoverflow.com/a/39757388/929999 if TYPE_CHECKING: @@ -32,7 +33,29 @@ class BlockDevice: # I'm placing the encryption password on a BlockDevice level. def __repr__(self, *args :str, **kwargs :str) -> str: - return f"BlockDevice({self.device_or_backfile}, size={self.size}GB, free_space={'+'.join(part[2] for part in self.free_space)}, bus_type={self.bus_type})" + return self._str_repr + + @cached_property + def _str_repr(self) -> str: + return f"BlockDevice({self.device_or_backfile}, size={self._safe_size}GB, free_space={self._safe_free_space}, bus_type={self.bus_type})" + + @cached_property + def display_info(self) -> str: + columns = { + str(_('Device')): self.device_or_backfile, + str(_('Size')): f'{self._safe_size}GB', + str(_('Free space')): f'{self._safe_free_space}', + str(_('Bus-type')): f'{self.bus_type}' + } + + padding = max([len(k) for k in columns.keys()]) + + pretty = '' + for k, v in columns.items(): + k = k.ljust(padding, ' ') + pretty += f'{k} = {v}\n' + + return pretty.rstrip() def __iter__(self) -> Iterator[Partition]: for partition in self.partitions: @@ -74,7 +97,7 @@ class BlockDevice: for device in output['blockdevices']: return device['pttype'] - @property + @cached_property def device_or_backfile(self) -> str: """ Returns the actual device-endpoint of the BlockDevice. @@ -157,7 +180,7 @@ class BlockDevice: from .filesystem import GPT return GPT - @property + @cached_property def uuid(self) -> str: log('BlockDevice().uuid is untested!', level=logging.WARNING, fg='yellow') """ @@ -167,7 +190,19 @@ class BlockDevice: """ return SysCommand(f'blkid -s PTUUID -o value {self.path}').decode('UTF-8') - @property + @cached_property + def _safe_size(self) -> float: + from .helpers import convert_size_to_gb + + try: + output = json.loads(SysCommand(f"lsblk --json -b -o+SIZE {self.path}").decode('UTF-8')) + except SysCallError: + return -1.0 + + for device in output['blockdevices']: + return convert_size_to_gb(device['size']) + + @cached_property def size(self) -> float: from .helpers import convert_size_to_gb @@ -176,22 +211,29 @@ class BlockDevice: for device in output['blockdevices']: return convert_size_to_gb(device['size']) - @property + @cached_property def bus_type(self) -> str: output = json.loads(SysCommand(f"lsblk --json -o+ROTA,TRAN {self.path}").decode('UTF-8')) for device in output['blockdevices']: return device['tran'] - @property + @cached_property def spinning(self) -> bool: output = json.loads(SysCommand(f"lsblk --json -o+ROTA,TRAN {self.path}").decode('UTF-8')) for device in output['blockdevices']: return device['rota'] is True - @property - def free_space(self) -> Tuple[str, str, str]: + @cached_property + def _safe_free_space(self) -> Tuple[str, ...]: + try: + return '+'.join(part[2] for part in self.free_space) + except SysCallError: + return '?' + + @cached_property + def free_space(self) -> Tuple[str, ...]: # NOTE: parted -s will default to `cancel` on prompt, skipping any partition # that is "outside" the disk. in /dev/sr0 this is usually the case with Archiso, # so the free will ignore the ESP partition and just give the "free" space. @@ -204,7 +246,7 @@ class BlockDevice: except SysCallError as error: log(f"Could not get free space on {self.path}: {error}", level=logging.DEBUG) - @property + @cached_property def largest_free_space(self) -> List[str]: info = [] for space_info in self.free_space: @@ -216,7 +258,7 @@ class BlockDevice: info = space_info return info - @property + @cached_property def first_free_sector(self) -> str: if info := self.largest_free_space: start = info[0] @@ -224,7 +266,7 @@ class BlockDevice: start = '512MB' return start - @property + @cached_property def first_end_sector(self) -> str: if info := self.largest_free_space: end = info[1] @@ -247,19 +289,27 @@ class BlockDevice: def flush_cache(self) -> None: self.part_cache = {} - def get_partition(self, uuid :str) -> Partition: - count = 0 - while count < 5: - for partition_uuid, partition in self.partitions.items(): - if partition.uuid.lower() == uuid.lower(): - return partition - else: - log(f"uuid {uuid} not found. Waiting for {count +1} time",level=logging.DEBUG) - time.sleep(float(storage['arguments'].get('disk-sleep', 0.2))) - count += 1 - else: - log(f"Could not find {uuid} in disk after 5 retries",level=logging.INFO) - print(f"Cache: {self.part_cache}") - print(f"Partitions: {self.partitions.items()}") - print(f"UUID: {[uuid]}") - raise DiskError(f"New partition {uuid} never showed up after adding new partition on {self}") + def get_partition(self, uuid :Optional[str] = None, partuuid :Optional[str] = None) -> Partition: + if not uuid and not partuuid: + raise ValueError(f"BlockDevice.get_partition() requires either a UUID or a PARTUUID for lookups.") + + for count in range(storage.get('DISK_RETRY_ATTEMPTS', 5)): + for partition_index, partition in self.partitions.items(): + try: + if uuid and partition.uuid.lower() == uuid.lower(): + return partition + elif partuuid and partition.part_uuid.lower() == partuuid.lower(): + return partition + except DiskError as error: + # Most likely a blockdevice that doesn't support or use UUID's + # (like Microsoft recovery partition) + log(f"Could not get UUID/PARTUUID of {partition}: {error}", level=logging.DEBUG, fg="gray") + pass + + log(f"uuid {uuid} or {partuuid} not found. Waiting {storage.get('DISK_TIMEOUTS', 1) * count}s for next attempt",level=logging.DEBUG) + time.sleep(storage.get('DISK_TIMEOUTS', 1) * count) + + log(f"Could not find {uuid}/{partuuid} in disk after 5 retries", level=logging.INFO) + log(f"Cache: {self.part_cache}") + log(f"Partitions: {self.partitions.items()}") + raise DiskError(f"Partition {uuid}/{partuuid} was never found on {self} despite several attempts.") diff --git a/archinstall/lib/disk/btrfs.py b/archinstall/lib/disk/btrfs/__init__.py index 33f59721..84b9c0f6 100644 --- a/archinstall/lib/disk/btrfs.py +++ b/archinstall/lib/disk/btrfs/__init__.py @@ -4,44 +4,25 @@ import glob import logging import re from typing import Union, Dict, TYPE_CHECKING, Any, Iterator -from dataclasses import dataclass # https://stackoverflow.com/a/39757388/929999 if TYPE_CHECKING: - from ..installer import Installer -from .helpers import get_mount_info -from ..exceptions import DiskError -from ..general import SysCommand -from ..output import log -from ..exceptions import SysCallError - -@dataclass -class BtrfsSubvolume: - target :str - source :str - fstype :str - name :str - options :str - root :bool = False - -def get_subvolumes_from_findmnt(struct :Dict[str, Any], index=0) -> Iterator[BtrfsSubvolume]: - if '[' in struct['source']: - subvolume = re.findall(r'\[.*?\]', struct['source'])[0][1:-1] - struct['source'] = struct['source'].replace(f"[{subvolume}]", "") - yield BtrfsSubvolume( - target=struct['target'], - source=struct['source'], - fstype=struct['fstype'], - name=subvolume, - options=struct['options'], - root=index == 0 - ) - index += 1 - - for child in struct.get('children', []): - for item in get_subvolumes_from_findmnt(child, index=index): - yield item - index += 1 + from ...installer import Installer + +from .btrfs_helpers import ( + subvolume_info_from_path as subvolume_info_from_path, + find_parent_subvolume as find_parent_subvolume, + setup_subvolumes as setup_subvolumes, + mount_subvolume as mount_subvolume +) +from .btrfssubvolume import BtrfsSubvolume as BtrfsSubvolume +from .btrfspartition import BTRFSPartition as BTRFSPartition + +from ..helpers import get_mount_info +from ...exceptions import DiskError, Deprecated +from ...general import SysCommand +from ...output import log +from ...exceptions import SysCallError def get_subvolume_info(path :pathlib.Path) -> Dict[str, Any]: try: @@ -57,42 +38,6 @@ def get_subvolume_info(path :pathlib.Path) -> Dict[str, Any]: return result -def mount_subvolume(installation :Installer, subvolume_location :Union[pathlib.Path, str], force=False) -> bool: - """ - This function uses mount to mount a subvolume on a given device, at a given location with a given subvolume name. - - @installation: archinstall.Installer instance - @subvolume_location: a localized string or path inside the installation / or /boot for instance without specifying /mnt/boot - @force: overrides the check for weither or not the subvolume mountpoint is empty or not - - This function is DEPRECATED. you can get the same result creating a partition dict like any other partition, and using the standard mount procedure. - Only change partition['device_instance'].path with the apropriate bind name: real_partition_path[/subvolume_name] - """ - log("[Deprecated] function btrfs.mount_subvolume is deprecated. See code for alternatives",fg="yellow",level=logging.WARNING) - installation_mountpoint = installation.target - if type(installation_mountpoint) == str: - installation_mountpoint = pathlib.Path(installation_mountpoint) - # Set up the required physical structure - if type(subvolume_location) == str: - subvolume_location = pathlib.Path(subvolume_location) - - target = installation_mountpoint / subvolume_location.relative_to(subvolume_location.anchor) - - if not target.exists(): - target.mkdir(parents=True) - - if glob.glob(str(target / '*')) and force is False: - raise DiskError(f"Cannot mount subvolume to {target} because it contains data (non-empty folder target)") - - log(f"Mounting {target} as a subvolume", level=logging.INFO) - # Mount the logical volume to the physical structure - mount_information, mountpoint_device_real_path = get_mount_info(target, traverse=True, return_real_path=True) - if mountpoint_device_real_path == str(target): - log(f"Unmounting non-subvolume {mount_information['source']} previously mounted at {target}") - SysCommand(f"umount {mount_information['source']}") - - return SysCommand(f"mount {mount_information['source']} {target} -o subvol=@{subvolume_location}").exit_code == 0 - def create_subvolume(installation :Installer, subvolume_location :Union[pathlib.Path, str]) -> bool: """ This function uses btrfs to create a subvolume. @@ -132,13 +77,18 @@ def _has_option(option :str,options :list) -> bool: """ if not options: return False + for item in options: if option in item: return True + return False def manage_btrfs_subvolumes(installation :Installer, partition :Dict[str, str],) -> list: + + raise Deprecated("Use setup_subvolumes() instead.") + from copy import deepcopy """ we do the magic with subvolumes in a centralized place parameters: diff --git a/archinstall/lib/disk/btrfs/btrfs_helpers.py b/archinstall/lib/disk/btrfs/btrfs_helpers.py new file mode 100644 index 00000000..d577d82b --- /dev/null +++ b/archinstall/lib/disk/btrfs/btrfs_helpers.py @@ -0,0 +1,132 @@ +import pathlib +import logging +from typing import Optional + +from ...exceptions import SysCallError, DiskError +from ...general import SysCommand +from ...output import log +from ..helpers import get_mount_info +from .btrfssubvolume import BtrfsSubvolume + + +def mount_subvolume(installation, device, name, subvolume_information): + # we normalize the subvolume name (getting rid of slash at the start if exists. In our implemenation has no semantic load. + # Every subvolume is created from the top of the hierarchy- and simplifies its further use + name = name.lstrip('/') + + # renormalize the right hand. + mountpoint = subvolume_information.get('mountpoint', None) + if not mountpoint: + return None + + if type(mountpoint) == str: + mountpoint = pathlib.Path(mountpoint) + + installation_target = installation.target + if type(installation_target) == str: + installation_target = pathlib.Path(installation_target) + + mountpoint = installation_target / mountpoint.relative_to(mountpoint.anchor) + mountpoint.mkdir(parents=True, exist_ok=True) + + mount_options = subvolume_information.get('options', []) + if not any('subvol=' in x for x in mount_options): + mount_options += [f'subvol={name}'] + + log(f"Mounting subvolume {name} on {device} to {mountpoint}", level=logging.INFO, fg="gray") + SysCommand(f"mount {device.path} {mountpoint} -o {','.join(mount_options)}") + + +def setup_subvolumes(installation, partition_dict): + """ + Taken from: ..user_guides.py + + partition['btrfs'] = { + "subvolumes" : { + "@": "/", + "@home": "/home", + "@log": "/var/log", + "@pkg": "/var/cache/pacman/pkg", + "@.snapshots": "/.snapshots" + } + } + """ + log(f"Setting up subvolumes: {partition_dict['btrfs']['subvolumes']}", level=logging.INFO, fg="gray") + for name, right_hand in partition_dict['btrfs']['subvolumes'].items(): + # we normalize the subvolume name (getting rid of slash at the start if exists. In our implemenation has no semantic load. + # Every subvolume is created from the top of the hierarchy- and simplifies its further use + name = name.lstrip('/') + + # renormalize the right hand. + # mountpoint = None + subvol_options = [] + + match right_hand: + # case str(): # backwards-compatability + # mountpoint = right_hand + case dict(): + # mountpoint = right_hand.get('mountpoint', None) + subvol_options = right_hand.get('options', []) + + # We create the subvolume using the BTRFSPartition instance. + # That way we ensure not only easy access, but also accurate mount locations etc. + partition_dict['device_instance'].create_subvolume(name, installation=installation) + + # Make the nodatacow processing now + # It will be the main cause of creation of subvolumes which are not to be mounted + # it is not an options which can be established by subvolume (but for whole file systems), and can be + # set up via a simple attribute change in a directory (if empty). And here the directories are brand new + if 'nodatacow' in subvol_options: + if (cmd := SysCommand(f"chattr +C {installation.target}/{name}")).exit_code != 0: + raise DiskError(f"Could not set nodatacow attribute at {installation.target}/{name}: {cmd}") + # entry is deleted so nodatacow doesn't propagate to the mount options + del subvol_options[subvol_options.index('nodatacow')] + # Make the compress processing now + # it is not an options which can be established by subvolume (but for whole file systems), and can be + # set up via a simple attribute change in a directory (if empty). And here the directories are brand new + # in this way only zstd compression is activaded + # TODO WARNING it is not clear if it should be a standard feature, so it might need to be deactivated + + if 'compress' in subvol_options: + if not any(['compress' in filesystem_option for filesystem_option in partition_dict.get('filesystem', {}).get('mount_options', [])]): + if (cmd := SysCommand(f"chattr +c {installation.target}/{name}")).exit_code != 0: + raise DiskError(f"Could not set compress attribute at {installation.target}/{name}: {cmd}") + # entry is deleted so compress doesn't propagate to the mount options + del subvol_options[subvol_options.index('compress')] + +def subvolume_info_from_path(path :pathlib.Path) -> Optional[BtrfsSubvolume]: + try: + subvolume_name = None + result = {} + for index, line in enumerate(SysCommand(f"btrfs subvolume show {path}")): + if index == 0: + subvolume_name = line.strip().decode('UTF-8') + continue + + if b':' in line: + key, value = line.strip().decode('UTF-8').split(':', 1) + + # A bit of a hack, until I figure out how @dataclass + # allows for hooking in a pre-processor to do this we have to do it here: + result[key.lower().replace(' ', '_').replace('(s)', 's')] = value.strip() + + return BtrfsSubvolume(**{'full_path' : path, 'name' : subvolume_name, **result}) + + except SysCallError as error: + log(f"Could not retrieve subvolume information from {path}: {error}", level=logging.WARNING, fg="orange") + + return None + +def find_parent_subvolume(path :pathlib.Path, filters=[]): + # A root path cannot have a parent + if str(path) == '/': + return None + + if found_mount := get_mount_info(str(path.parent), traverse=True, ignore=filters): + if not (subvolume := subvolume_info_from_path(found_mount['target'])): + if found_mount['target'] == '/': + return None + + return find_parent_subvolume(path.parent, traverse=True, filters=[*filters, found_mount['target']]) + + return subvolume
\ No newline at end of file diff --git a/archinstall/lib/disk/btrfs/btrfspartition.py b/archinstall/lib/disk/btrfs/btrfspartition.py new file mode 100644 index 00000000..5020133d --- /dev/null +++ b/archinstall/lib/disk/btrfs/btrfspartition.py @@ -0,0 +1,116 @@ +import glob +import pathlib +import logging +from typing import Optional, TYPE_CHECKING + +from ...exceptions import DiskError +from ...storage import storage +from ...output import log +from ...general import SysCommand +from ..partition import Partition +from ..helpers import findmnt +from .btrfs_helpers import ( + subvolume_info_from_path +) + +if TYPE_CHECKING: + from ...installer import Installer + from .btrfssubvolume import BtrfsSubvolume + +class BTRFSPartition(Partition): + def __init__(self, *args, **kwargs): + Partition.__init__(self, *args, **kwargs) + + def __repr__(self, *args :str, **kwargs :str) -> str: + mount_repr = '' + if self.mountpoint: + mount_repr = f", mounted={self.mountpoint}" + elif self.target_mountpoint: + mount_repr = f", rel_mountpoint={self.target_mountpoint}" + + if self._encrypted: + return f'BTRFSPartition(path={self.path}, size={self.size}, PARTUUID={self._safe_uuid}, parent={self.real_device}, fs={self.filesystem}{mount_repr})' + else: + return f'BTRFSPartition(path={self.path}, size={self.size}, PARTUUID={self._safe_uuid}, fs={self.filesystem}{mount_repr})' + + @property + def subvolumes(self): + for filesystem in findmnt(pathlib.Path(self.path), recurse=True).get('filesystems', []): + if '[' in filesystem.get('source', ''): + yield subvolume_info_from_path(filesystem['target']) + + def iterate_children(struct): + for child in struct.get('children', []): + if '[' in child.get('source', ''): + yield subvolume_info_from_path(child['target']) + + for sub_child in iterate_children(child): + yield sub_child + + for child in iterate_children(filesystem): + yield child + + def create_subvolume(self, subvolume :pathlib.Path, installation :Optional['Installer'] = None) -> 'BtrfsSubvolume': + """ + Subvolumes have to be created within a mountpoint. + This means we need to get the current installation target. + After we get it, we need to verify it is a btrfs subvolume filesystem. + Finally, the destination must be empty. + """ + + # Allow users to override the installation session + if not installation: + installation = storage.get('installation_session') + + # Determain if the path given, is an absolute path or a releative path. + # We do this by checking if the path contains a known mountpoint. + if str(subvolume)[0] == '/': + if filesystems := findmnt(subvolume, traverse=True).get('filesystems'): + if (target := filesystems[0].get('target')) and target != '/' and str(subvolume).startswith(target): + # Path starts with a known mountpoint which isn't / + # Which means it's an absolut path to a mounted location. + pass + else: + # Since it's not an absolute position with a known start. + # We omit the anchor ('/' basically) and make sure it's appendable + # to the installation.target later + subvolume = subvolume.relative_to(subvolume.anchor) + # else: We don't need to do anything about relative paths, they should be appendable to installation.target as-is. + + # If the subvolume is not absolute, then we do two checks: + # 1. Check if the partition itself is mounted somewhere, and use that as a root + # 2. Use an active Installer().target as the root, assuming it's filesystem is btrfs + # If both above fail, we need to warn the user that such setup is not supported. + if str(subvolume)[0] != '/': + if self.mountpoint is None and installation is None: + raise DiskError("When creating a subvolume on BTRFSPartition()'s, you need to either initiate a archinstall.Installer() or give absolute paths when creating the subvoulme.") + elif self.mountpoint: + subvolume = self.mountpoint / subvolume + elif installation: + ongoing_installation_destination = installation.target + if type(ongoing_installation_destination) == str: + ongoing_installation_destination = pathlib.Path(ongoing_installation_destination) + + subvolume = ongoing_installation_destination / subvolume + + subvolume.parent.mkdir(parents=True, exist_ok=True) + + # <!-- + # We perform one more check from the given absolute position. + # And we traverse backwards in order to locate any if possible subvolumes above + # our new btrfs subvolume. This is because it needs to be mounted under it to properly + # function. + # if btrfs_parent := find_parent_subvolume(subvolume): + # print('Found parent:', btrfs_parent) + # --> + + log(f'Attempting to create subvolume at {subvolume}', level=logging.DEBUG, fg="grey") + + if glob.glob(str(subvolume / '*')): + raise DiskError(f"Cannot create subvolume at {subvolume} because it contains data (non-empty folder target is not supported by BTRFS)") + elif subvolinfo := subvolume_info_from_path(subvolume): + raise DiskError(f"Destination {subvolume} is already a subvolume: {subvolinfo}") + + SysCommand(f"btrfs subvolume create {subvolume}") + + return subvolume_info_from_path(subvolume)
\ No newline at end of file diff --git a/archinstall/lib/disk/btrfs/btrfssubvolume.py b/archinstall/lib/disk/btrfs/btrfssubvolume.py new file mode 100644 index 00000000..a96e2a94 --- /dev/null +++ b/archinstall/lib/disk/btrfs/btrfssubvolume.py @@ -0,0 +1,191 @@ +import pathlib +import datetime +import logging +import string +import random +import shutil +from dataclasses import dataclass +from typing import Optional, List# , TYPE_CHECKING +from functools import cached_property + +# if TYPE_CHECKING: +# from ..blockdevice import BlockDevice + +from ...exceptions import DiskError +from ...general import SysCommand +from ...output import log +from ...storage import storage + +@dataclass +class BtrfsSubvolume: + full_path :pathlib.Path + name :str + uuid :str + parent_uuid :str + creation_time :datetime.datetime + subvolume_id :int + generation :int + gen_at_creation :int + parent_id :int + top_level_id :int + send_transid :int + send_time :datetime.datetime + receive_transid :int + received_uuid :Optional[str] = None + flags :Optional[str] = None + receive_time :Optional[datetime.datetime] = None + snapshots :Optional[List] = None + + def __post_init__(self): + self.full_path = pathlib.Path(self.full_path) + + # Convert "-" entries to `None` + if self.parent_uuid == "-": + self.parent_uuid = None + if self.received_uuid == "-": + self.received_uuid = None + if self.flags == "-": + self.flags = None + if self.receive_time == "-": + self.receive_time = None + if self.snapshots == "": + self.snapshots = [] + + # Convert timestamps into datetime workable objects (and preserve timezone by using ISO formats) + self.creation_time = datetime.datetime.fromisoformat(self.convert_to_ISO_format(self.creation_time)) + self.send_time = datetime.datetime.fromisoformat(self.convert_to_ISO_format(self.send_time)) + if self.receive_time: + self.receive_time = datetime.datetime.fromisoformat(self.convert_to_ISO_format(self.receive_time)) + + @property + def parent_subvolume(self): + from .btrfs_helpers import find_parent_subvolume + + return find_parent_subvolume(self.full_path) + + @property + def root(self) -> bool: + from .btrfs_helpers import subvolume_info_from_path + + # TODO: Make this function traverse storage['MOUNT_POINT'] and find the first + # occurance of a mountpoint that is a btrfs volume instead of lazy assume / is a subvolume. + # It would also be nice if it could use findmnt(self.full_path) and traverse backwards + # finding the last occurance of a subvolume which 'self' belongs to. + if volume := subvolume_info_from_path(storage['MOUNT_POINT']): + return self.full_path == volume.full_path + + return False + + @cached_property + def partition(self): + from ..helpers import findmnt, get_parent_of_partition, all_blockdevices + from ..partition import Partition + from ..blockdevice import BlockDevice + from ..mapperdev import MapperDev + from .btrfspartition import BTRFSPartition + from .btrfs_helpers import subvolume_info_from_path + + try: + # If the subvolume is mounted, it's pretty trivial to lookup the partition (parent) device. + if filesystem := findmnt(self.full_path).get('filesystems', []): + if source := filesystem[0].get('source', None): + # Strip away subvolume definitions from findmnt + if '[' in source: + source = source[:source.find('[')] + + if filesystem[0].get('fstype', '') == 'btrfs': + return BTRFSPartition(source, BlockDevice(get_parent_of_partition(pathlib.Path(source)))) + elif filesystem[0].get('source', '').startswith('/dev/mapper'): + return MapperDev(source) + else: + return Partition(source, BlockDevice(get_parent_of_partition(pathlib.Path(source)))) + except DiskError: + # Subvolume has never been mounted, we have no reliable way of finding where it is. + # But we have the UUID of the partition, and can begin looking for it by mounting + # all blockdevices that we can reliably support.. This is taxing tho and won't cover all devices. + + log(f"Looking up {self}, this might take time.", fg="orange", level=logging.WARNING) + for blockdevice, instance in all_blockdevices(mappers=True, partitions=True, error=True).items(): + if type(instance) in (Partition, MapperDev): + we_mounted_it = False + detection_mountpoint = instance.mountpoint + if not detection_mountpoint: + if type(instance) == Partition and instance.encrypted: + # TODO: Perhaps support unlocking encrypted volumes? + # This will cause a lot of potential user interactions tho. + log(f"Ignoring {blockdevice} because it's encrypted.", fg="gray", level=logging.DEBUG) + continue + + detection_mountpoint = pathlib.Path(f"/tmp/{''.join([random.choice(string.ascii_letters) for x in range(20)])}") + detection_mountpoint.mkdir(parents=True, exist_ok=True) + + instance.mount(str(detection_mountpoint)) + we_mounted_it = True + + if (filesystem := findmnt(detection_mountpoint)) and (filesystem := filesystem.get('filesystems', [])): + if subvolume := subvolume_info_from_path(filesystem[0]['target']): + if subvolume.uuid == self.uuid: + # The top level subvolume matched of ourselves, + # which means the instance we're iterating has the subvol we're looking for. + log(f"Found the subvolume on device {instance}", level=logging.DEBUG, fg="gray") + return instance + + def iterate_children(struct): + for child in struct.get('children', []): + if '[' in child.get('source', ''): + yield subvolume_info_from_path(child['target']) + + for sub_child in iterate_children(child): + yield sub_child + + for child in iterate_children(filesystem[0]): + if child.uuid == self.uuid: + # We found a child within the instance that has the subvol we're looking for. + log(f"Found the subvolume on device {instance}", level=logging.DEBUG, fg="gray") + return instance + + if we_mounted_it: + instance.unmount() + shutil.rmtree(detection_mountpoint) + + @cached_property + def mount_options(self) -> Optional[List[str]]: + from ..helpers import findmnt + + if filesystem := findmnt(self.full_path).get('filesystems', []): + return filesystem[0].get('options').split(',') + + def convert_to_ISO_format(self, time_string): + time_string_almost_done = time_string.replace(' ', 'T', 1).replace(' ', '') + iso_string = f"{time_string_almost_done[:-2]}:{time_string_almost_done[-2:]}" + return iso_string + + def mount(self, mountpoint :pathlib.Path, options=None, include_previously_known_options=True): + from ..helpers import findmnt + + try: + if mnt_info := findmnt(pathlib.Path(mountpoint), traverse=False): + log(f"Unmounting {mountpoint} as it was already mounted using {mnt_info}") + SysCommand(f"umount {mountpoint}") + except DiskError: + # No previously mounted device at the mountpoint + pass + + if not options: + options = [] + + try: + if include_previously_known_options and (cached_options := self.mount_options): + options += cached_options + except DiskError: + pass + + if not any('subvol=' in x for x in options): + options += f'subvol={self.name}' + + SysCommand(f"mount {self.partition.path} {mountpoint} -o {','.join(options)}") + log(f"{self} has successfully been mounted to {mountpoint}", level=logging.INFO, fg="gray") + + def unmount(self, recurse :bool = True): + SysCommand(f"umount {'-R' if recurse else ''} {self.full_path}") + log(f"Successfully unmounted {self}", level=logging.INFO, fg="gray")
\ No newline at end of file diff --git a/archinstall/lib/disk/filesystem.py b/archinstall/lib/disk/filesystem.py index 8a531de0..f94b4b47 100644 --- a/archinstall/lib/disk/filesystem.py +++ b/archinstall/lib/disk/filesystem.py @@ -55,7 +55,7 @@ class Filesystem: output = json.loads(SysCommand(f"lsblk --json {self.blockdevice.device}").decode('UTF-8')) for device in output['blockdevices']: - for index, partition in enumerate(device['children']): + for index, partition in enumerate(device.get('children', [])): # But we'll use blkid to reliably grab the PARTUUID for that child device (partition) partition_uuid = SysCommand(f"blkid -s PARTUUID -o value /dev/{partition.get('name')}").decode().strip() if partition_uuid.lower() == uuid.lower(): @@ -65,6 +65,7 @@ class Filesystem: def load_layout(self, layout :Dict[str, Any]) -> None: from ..luks import luks2 + from .btrfs import BTRFSPartition # If the layout tells us to wipe the drive, we do so if layout.get('wipe', False): @@ -76,27 +77,34 @@ class Filesystem: raise KeyError(f"Could not create a MSDOS label on {self}") self.blockdevice.flush_cache() + time.sleep(3) prev_partition = None # We then iterate the partitions in order for partition in layout.get('partitions', []): # We don't want to re-add an existing partition (those containing a UUID already) if partition.get('wipe', False) and not partition.get('PARTUUID', None): - print(_("Adding partition....")) start = partition.get('start') or ( prev_partition and f'{prev_partition["device_instance"].end_sectors}s' or DEFAULT_PARTITION_START) partition['device_instance'] = self.add_partition(partition.get('type', 'primary'), start=start, end=partition.get('size', '100%'), - partition_format=partition.get('filesystem', {}).get('format', 'btrfs')) - # TODO: device_instance some times become None - # print('Device instance:', partition['device_instance']) - - elif (partition_uuid := partition.get('PARTUUID')) and (partition_instance := self.blockdevice.get_partition(uuid=partition_uuid)): - print(_("Re-using partition instance: {}").format(partition_instance)) - partition['device_instance'] = partition_instance + partition_format=partition.get('filesystem', {}).get('format', 'btrfs'), + skip_mklabel=layout.get('wipe', False) is not False) + + elif (partition_uuid := partition.get('PARTUUID')): + # We try to deal with both UUID and PARTUUID of a partition when it's being re-used. + # We should re-name or separate this logi based on partition.get('PARTUUID') and partition.get('UUID') + # but for now, lets just attempt to deal with both. + try: + partition['device_instance'] = self.blockdevice.get_partition(uuid=partition_uuid) + except DiskError: + partition['device_instance'] = self.blockdevice.get_partition(partuuid=partition_uuid) + + log(_("Re-using partition instance: {}").format(partition['device_instance']), level=logging.DEBUG, fg="gray") else: - raise ValueError(f"{self}.load_layout() doesn't know how to continue without a new partition definition or a UUID ({partition.get('PARTUUID')}) on the device ({self.blockdevice.get_partition(uuid=partition.get('PARTUUID'))}).") + log(f"{self}.load_layout() doesn't know how to work without 'wipe' being set or UUID ({partition.get('PARTUUID')}) was given and found.", fg="yellow", level=logging.WARNING) + continue if partition.get('filesystem', {}).get('format', False): @@ -137,20 +145,32 @@ class Filesystem: while True: partition['filesystem']['format'] = input(f"Enter a valid fs-type for newly encrypted partition {partition['filesystem']['format']}: ").strip() if not partition['filesystem']['format'] or valid_fs_type(partition['filesystem']['format']) is False: - print(_("You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's.")) + log(_("You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's.")) continue break unlocked_device.format(partition['filesystem']['format'], options=format_options) + elif partition.get('wipe', False): if not partition['device_instance']: raise DiskError(f"Internal error caused us to loose the partition. Please report this issue upstream!") partition['device_instance'].format(partition['filesystem']['format'], options=format_options) + if partition['filesystem']['format'] == 'btrfs': + # We upgrade the device instance to a BTRFSPartition if we format it as such. + # This is so that we can gain access to more features than otherwise available in Partition() + partition['device_instance'] = BTRFSPartition( + partition['device_instance'].path, + block_device=partition['device_instance'].block_device, + encrypted=False, + filesystem='btrfs', + autodetect_filesystem=False + ) + if partition.get('boot', False): log(f"Marking partition {partition['device_instance']} as bootable.") - self.set(self.partuuid_to_index(partition['device_instance'].uuid), 'boot on') + self.set(self.partuuid_to_index(partition['device_instance'].part_uuid), 'boot on') prev_partition = partition @@ -190,10 +210,27 @@ class Filesystem: # TODO: Implement this with declarative profiles instead. raise ValueError("Installation().use_entire_disk() has to be re-worked.") - def add_partition(self, partition_type :str, start :str, end :str, partition_format :Optional[str] = None) -> Partition: + def add_partition(self, partition_type :str, start :str, end :str, partition_format :Optional[str] = None, skip_mklabel :bool = False) -> Partition: log(f'Adding partition to {self.blockdevice}, {start}->{end}', level=logging.INFO) - previous_partition_uuids = {partition.uuid for partition in self.blockdevice.partitions.values()} + if len(self.blockdevice.partitions) == 0 and skip_mklabel is False: + # If it's a completely empty drive, and we're about to add partitions to it + # we need to make sure there's a filesystem label. + if self.mode == GPT: + if not self.parted_mklabel(self.blockdevice.device, "gpt"): + raise KeyError(f"Could not create a GPT label on {self}") + elif self.mode == MBR: + if not self.parted_mklabel(self.blockdevice.device, "msdos"): + raise KeyError(f"Could not create a MSDOS label on {self}") + + self.blockdevice.flush_cache() + + previous_partuuids = [] + for partition in self.blockdevice.partitions.values(): + try: + previous_partuuids.append(partition.part_uuid) + except DiskError: + pass if self.mode == MBR: if len(self.blockdevice.partitions) > 3: @@ -207,36 +244,36 @@ class Filesystem: log(f"Adding partition using the following parted command: {parted_string}", level=logging.DEBUG) if self.parted(parted_string): - count = 0 - while count < 10: - new_uuid = None - new_uuid_set = (previous_partition_uuids ^ {partition.uuid for partition in self.blockdevice.partitions.values()}) + for count in range(storage.get('DISK_RETRY_ATTEMPTS', 3)): + self.partprobe() - if len(new_uuid_set) > 0: - new_uuid = new_uuid_set.pop() + new_partition_uuids = [] + for partition in self.blockdevice.partitions.values(): + try: + new_partition_uuids.append(partition.part_uuid) + except DiskError: + pass + + new_partuuid_set = (set(previous_partuuids) ^ set(new_partition_uuids)) - if new_uuid: + if len(new_partuuid_set) and (new_partuuid := new_partuuid_set.pop()): try: - return self.blockdevice.get_partition(new_uuid) + return self.blockdevice.get_partition(partuuid=new_partuuid) except Exception as err: log(f'Blockdevice: {self.blockdevice}', level=logging.ERROR, fg="red") log(f'Partitions: {self.blockdevice.partitions}', level=logging.ERROR, fg="red") - log(f'Partition set: {new_uuid_set}', level=logging.ERROR, fg="red") - log(f'New UUID: {[new_uuid]}', level=logging.ERROR, fg="red") + log(f'Partition set: {new_partuuid_set}', level=logging.ERROR, fg="red") + log(f'New UUID: {[new_partuuid]}', level=logging.ERROR, fg="red") log(f'get_partition(): {self.blockdevice.get_partition}', level=logging.ERROR, fg="red") raise err else: - count += 1 - log(f"Could not get UUID for partition. Waiting before retry attempt {count} of 10 ...",level=logging.DEBUG) - time.sleep(float(storage['arguments'].get('disk-sleep', 0.2))) - else: - log("Add partition is exiting due to excessive wait time", level=logging.ERROR, fg="red") - raise DiskError(f"New partition never showed up after adding new partition on {self}.") + log(f"Could not get UUID for partition. Waiting {storage.get('DISK_TIMEOUTS', 1) * count}s before retrying.",level=logging.DEBUG) + time.sleep(storage.get('DISK_TIMEOUTS', 1) * count) # TODO: This should never be able to happen log(f"Could not find the new PARTUUID after adding the partition.", level=logging.ERROR, fg="red") - log(f"Previous partitions: {previous_partition_uuids}", level=logging.ERROR, fg="red") - log(f"New partitions: {(previous_partition_uuids ^ {partition.uuid for partition in self.blockdevice.partitions.values()})}", level=logging.ERROR, fg="red") + log(f"Previous partitions: {previous_partuuids}", level=logging.ERROR, fg="red") + log(f"New partitions: {(previous_partuuids ^ {partition.part_uuid for partition in self.blockdevice.partitions.values()})}", level=logging.ERROR, fg="red") raise DiskError(f"Could not add partition using: {parted_string}") def set_name(self, partition: int, name: str) -> bool: diff --git a/archinstall/lib/disk/helpers.py b/archinstall/lib/disk/helpers.py index 0799cd49..99856aad 100644 --- a/archinstall/lib/disk/helpers.py +++ b/archinstall/lib/disk/helpers.py @@ -291,11 +291,37 @@ def find_mountpoint(device_path :str) -> Dict[str, Any]: except SysCallError: return {} -def get_mount_info(path :Union[pathlib.Path, str], traverse :bool = False, return_real_path :bool = False) -> Dict[str, Any]: +def findmnt(path :pathlib.Path, traverse :bool = False, ignore :List = [], recurse :bool = True) -> Dict[str, Any]: + for traversal in list(map(str, [str(path)] + list(path.parents))): + if traversal in ignore: + continue + + try: + log(f"Getting mount information for device path {traversal}", level=logging.DEBUG) + if (output := SysCommand(f"/usr/bin/findmnt --json {'--submounts' if recurse else ''} {traversal}").decode('UTF-8')): + return json.loads(output) + + except SysCallError as error: + log(f"Could not get mount information on {path} but continuing and ignoring: {error}", level=logging.INFO, fg="gray") + pass + + if not traverse: + break + + raise DiskError(f"Could not get mount information for path {path}") + + +def get_mount_info(path :Union[pathlib.Path, str], traverse :bool = False, return_real_path :bool = False, ignore :List = []) -> Dict[str, Any]: + import traceback + + log(f"Deprecated: archinstall.get_mount_info(). Use archinstall.findmnt() instead, which does not do any automatic parsing. Please change at:\n{''.join(traceback.format_stack())}") device_path, bind_path = split_bind_name(path) output = {} for traversal in list(map(str, [str(device_path)] + list(pathlib.Path(str(device_path)).parents))): + if traversal in ignore: + continue + try: log(f"Getting mount information for device path {traversal}", level=logging.DEBUG) if (output := SysCommand(f'/usr/bin/findmnt --json {traversal}').decode('UTF-8')): @@ -385,9 +411,8 @@ def get_partitions_in_use(mountpoint :str) -> List[Partition]: def get_filesystem_type(path :str) -> Optional[str]: - device_name, bind_name = split_bind_name(path) try: - return SysCommand(f"blkid -o value -s TYPE {device_name}").decode('UTF-8').strip() + return SysCommand(f"blkid -o value -s TYPE {path}").decode('UTF-8').strip() except SysCallError: return None diff --git a/archinstall/lib/disk/mapperdev.py b/archinstall/lib/disk/mapperdev.py index 32e3ac9b..913dbc13 100644 --- a/archinstall/lib/disk/mapperdev.py +++ b/archinstall/lib/disk/mapperdev.py @@ -51,11 +51,11 @@ class MapperDev: raise ValueError(f"Could not convert {self.mappername} to a real dm-crypt device") @property - def mountpoint(self) -> Optional[str]: + def mountpoint(self) -> Optional[pathlib.Path]: try: data = json.loads(SysCommand(f"findmnt --json -R {self.path}").decode()) for filesystem in data['filesystems']: - return filesystem.get('target') + return pathlib.Path(filesystem.get('target')) except SysCallError as error: # Not mounted anywhere most likely @@ -76,8 +76,9 @@ class MapperDev: @property def subvolumes(self) -> Iterator['BtrfsSubvolume']: - from .btrfs import get_subvolumes_from_findmnt - + from .btrfs import subvolume_info_from_path + for mountpoint in self.mount_information: - for result in get_subvolumes_from_findmnt(mountpoint): - yield result
\ No newline at end of file + if target := mountpoint.get('target'): + if subvolume := subvolume_info_from_path(pathlib.Path(target)): + yield subvolume
\ No newline at end of file diff --git a/archinstall/lib/disk/partition.py b/archinstall/lib/disk/partition.py index e7568258..73c88597 100644 --- a/archinstall/lib/disk/partition.py +++ b/archinstall/lib/disk/partition.py @@ -13,7 +13,8 @@ from ..storage import storage from ..exceptions import DiskError, SysCallError, UnknownFilesystemFormat from ..output import log from ..general import SysCommand -from .btrfs import get_subvolumes_from_findmnt, BtrfsSubvolume +from .btrfs.btrfs_helpers import subvolume_info_from_path +from .btrfs.btrfssubvolume import BtrfsSubvolume class Partition: def __init__(self, @@ -96,11 +97,11 @@ class Partition: try: data = json.loads(SysCommand(f"findmnt --json -R {self.path}").decode()) for filesystem in data['filesystems']: - return filesystem.get('target') + return pathlib.Path(filesystem.get('target')) except SysCallError as error: # Not mounted anywhere most likely - log(f"Could not locate mount information for {self.path}: {error}", level=logging.DEBUG) + log(f"Could not locate mount information for {self.path}: {error}", level=logging.DEBUG, fg="grey") pass return None @@ -184,7 +185,7 @@ class Partition: return device['pttype'] @property - def uuid(self) -> Optional[str]: + def part_uuid(self) -> Optional[str]: """ Returns the PARTUUID as returned by lsblk. This is more reliable than relying on /dev/disk/by-partuuid as @@ -197,6 +198,26 @@ class Partition: time.sleep(max(0.1, storage['DISK_TIMEOUTS'] * i)) + partuuid = self._safe_part_uuid + if partuuid: + return partuuid + + raise DiskError(f"Could not get PARTUUID for {self.path} using 'blkid -s PARTUUID -o value {self.path}'") + + @property + def uuid(self) -> Optional[str]: + """ + Returns the UUID as returned by lsblk for the **partition**. + This is more reliable than relying on /dev/disk/by-uuid as + it doesn't seam to be able to detect md raid partitions. + For bind mounts all the subvolumes share the same uuid + """ + for i in range(storage['DISK_RETRY_ATTEMPTS']): + if not self.partprobe(): + raise DiskError(f"Could not perform partprobe on {self.device_path}") + + time.sleep(storage.get('DISK_TIMEOUTS', 1) * i) + partuuid = self._safe_uuid if partuuid: return partuuid @@ -217,6 +238,28 @@ class Partition: log(f"Could not reliably refresh PARTUUID of partition {self.device_path} due to partprobe error.", level=logging.DEBUG) try: + return SysCommand(f'blkid -s UUID -o value {self.device_path}').decode('UTF-8').strip() + except SysCallError as error: + if self.block_device.info.get('TYPE') == 'iso9660': + # Parent device is a Optical Disk (.iso dd'ed onto a device for instance) + return None + + log(f"Could not get PARTUUID of partition using 'blkid -s UUID -o value {self.device_path}': {error}") + + @property + def _safe_part_uuid(self) -> Optional[str]: + """ + A near copy of self.uuid but without any delays. + This function should only be used where uuid is not crucial. + For instance when you want to get a __repr__ of the class. + """ + if not self.partprobe(): + if self.block_device.info.get('TYPE') == 'iso9660': + return None + + log(f"Could not reliably refresh PARTUUID of partition {self.device_path} due to partprobe error.", level=logging.DEBUG) + + try: return SysCommand(f'blkid -s PARTUUID -o value {self.device_path}').decode('UTF-8').strip() except SysCallError as error: if self.block_device.info.get('TYPE') == 'iso9660': @@ -262,9 +305,26 @@ class Partition: @property def subvolumes(self) -> Iterator[BtrfsSubvolume]: + from .helpers import findmnt + + def iterate_children_recursively(information): + for child in information.get('children', []): + if target := child.get('target'): + if subvolume := subvolume_info_from_path(pathlib.Path(target)): + yield subvolume + + if child.get('children'): + for subchild in iterate_children_recursively(child): + yield subchild + for mountpoint in self.mount_information: - for result in get_subvolumes_from_findmnt(mountpoint): - yield result + if result := findmnt(pathlib.Path(mountpoint['target'])): + for filesystem in result.get('filesystems', []): + if subvolume := subvolume_info_from_path(pathlib.Path(mountpoint['target'])): + yield subvolume + + for child in iterate_children_recursively(filesystem): + yield child def partprobe(self) -> bool: try: @@ -315,7 +375,7 @@ class Partition: handle = luks2(self, None, None) return handle.encrypt(self, *args, **kwargs) - def format(self, filesystem :Optional[str] = None, path :Optional[str] = None, log_formatting :bool = True, options :List[str] = []) -> bool: + def format(self, filesystem :Optional[str] = None, path :Optional[str] = None, log_formatting :bool = True, options :List[str] = [], retry :bool = True) -> bool: """ Format can be given an overriding path, for instance /dev/null to test the formatting functionality and in essence the support for the given filesystem. @@ -337,63 +397,71 @@ class Partition: if log_formatting: log(f'Formatting {path} -> {filesystem}', level=logging.INFO) - if filesystem == 'btrfs': - options = ['-f'] + options + try: + if filesystem == 'btrfs': + options = ['-f'] + options - if 'UUID:' not in (mkfs := SysCommand(f"/usr/bin/mkfs.btrfs {' '.join(options)} {path}").decode('UTF-8')): - raise DiskError(f'Could not format {path} with {filesystem} because: {mkfs}') - self.filesystem = filesystem + if 'UUID:' not in (mkfs := SysCommand(f"/usr/bin/mkfs.btrfs {' '.join(options)} {path}").decode('UTF-8')): + raise DiskError(f'Could not format {path} with {filesystem} because: {mkfs}') + self.filesystem = filesystem - elif filesystem == 'vfat': - options = ['-F32'] + options + elif filesystem == 'vfat': + options = ['-F32'] + options - if (handle := SysCommand(f"/usr/bin/mkfs.vfat {' '.join(options)} {path}")).exit_code != 0: - raise DiskError(f"Could not format {path} with {filesystem} because: {handle.decode('UTF-8')}") - self.filesystem = filesystem + if (handle := SysCommand(f"/usr/bin/mkfs.vfat {' '.join(options)} {path}")).exit_code != 0: + raise DiskError(f"Could not format {path} with {filesystem} because: {handle.decode('UTF-8')}") + self.filesystem = filesystem - elif filesystem == 'ext4': - options = ['-F'] + options + elif filesystem == 'ext4': + options = ['-F'] + options - if (handle := SysCommand(f"/usr/bin/mkfs.ext4 {' '.join(options)} {path}")).exit_code != 0: - raise DiskError(f"Could not format {path} with {filesystem} because: {handle.decode('UTF-8')}") - self.filesystem = filesystem + if (handle := SysCommand(f"/usr/bin/mkfs.ext4 {' '.join(options)} {path}")).exit_code != 0: + raise DiskError(f"Could not format {path} with {filesystem} because: {handle.decode('UTF-8')}") + self.filesystem = filesystem - elif filesystem == 'ext2': - options = ['-F'] + options + elif filesystem == 'ext2': + options = ['-F'] + options - if (handle := SysCommand(f"/usr/bin/mkfs.ext2 {' '.join(options)} {path}")).exit_code != 0: - raise DiskError(f'Could not format {path} with {filesystem} because: {b"".join(handle)}') - self.filesystem = 'ext2' + if (handle := SysCommand(f"/usr/bin/mkfs.ext2 {' '.join(options)} {path}")).exit_code != 0: + raise DiskError(f'Could not format {path} with {filesystem} because: {b"".join(handle)}') + self.filesystem = 'ext2' - elif filesystem == 'xfs': - options = ['-f'] + options + elif filesystem == 'xfs': + options = ['-f'] + options - if (handle := SysCommand(f"/usr/bin/mkfs.xfs {' '.join(options)} {path}")).exit_code != 0: - raise DiskError(f"Could not format {path} with {filesystem} because: {handle.decode('UTF-8')}") - self.filesystem = filesystem + if (handle := SysCommand(f"/usr/bin/mkfs.xfs {' '.join(options)} {path}")).exit_code != 0: + raise DiskError(f"Could not format {path} with {filesystem} because: {handle.decode('UTF-8')}") + self.filesystem = filesystem - elif filesystem == 'f2fs': - options = ['-f'] + options + elif filesystem == 'f2fs': + options = ['-f'] + options - if (handle := SysCommand(f"/usr/bin/mkfs.f2fs {' '.join(options)} {path}")).exit_code != 0: - raise DiskError(f"Could not format {path} with {filesystem} because: {handle.decode('UTF-8')}") - self.filesystem = filesystem + if (handle := SysCommand(f"/usr/bin/mkfs.f2fs {' '.join(options)} {path}")).exit_code != 0: + raise DiskError(f"Could not format {path} with {filesystem} because: {handle.decode('UTF-8')}") + self.filesystem = filesystem - elif filesystem == 'ntfs3': - options = ['-f'] + options + elif filesystem == 'ntfs3': + options = ['-f'] + options - if (handle := SysCommand(f"/usr/bin/mkfs.ntfs -Q {' '.join(options)} {path}")).exit_code != 0: - raise DiskError(f"Could not format {path} with {filesystem} because: {handle.decode('UTF-8')}") - self.filesystem = filesystem + if (handle := SysCommand(f"/usr/bin/mkfs.ntfs -Q {' '.join(options)} {path}")).exit_code != 0: + raise DiskError(f"Could not format {path} with {filesystem} because: {handle.decode('UTF-8')}") + self.filesystem = filesystem - elif filesystem == 'crypto_LUKS': - # from ..luks import luks2 - # encrypted_partition = luks2(self, None, None) - # encrypted_partition.format(path) - self.filesystem = filesystem + elif filesystem == 'crypto_LUKS': + # from ..luks import luks2 + # encrypted_partition = luks2(self, None, None) + # encrypted_partition.format(path) + self.filesystem = filesystem - else: - raise UnknownFilesystemFormat(f"Fileformat '{filesystem}' is not yet implemented.") + else: + raise UnknownFilesystemFormat(f"Fileformat '{filesystem}' is not yet implemented.") + except SysCallError as error: + log(f"Formatting ran in to an error: {error}", level=logging.WARNING, fg="orange") + if retry is True: + log(f"Retrying in {storage.get('DISK_TIMEOUTS', 1)} seconds.", level=logging.WARNING, fg="orange") + time.sleep(storage.get('DISK_TIMEOUTS', 1)) + + return self.format(filesystem, path, log_formatting, options, retry=False) if get_filesystem_type(path) == 'crypto_LUKS' or get_filesystem_type(self.real_device) == 'crypto_LUKS': self.encrypted = True @@ -413,6 +481,7 @@ class Partition: def mount(self, target :str, fs :Optional[str] = None, options :str = '') -> bool: if not self.mountpoint: log(f'Mounting {self} to {target}', level=logging.INFO) + if not fs: if not self.filesystem: raise DiskError(f'Need to format (or define) the filesystem on {self} before mounting.') diff --git a/archinstall/lib/disk/user_guides.py b/archinstall/lib/disk/user_guides.py index 63ec1d9b..5fa6bfdc 100644 --- a/archinstall/lib/disk/user_guides.py +++ b/archinstall/lib/disk/user_guides.py @@ -5,6 +5,7 @@ from typing import Optional, Dict, Any, List, TYPE_CHECKING # https://stackoverflow.com/a/39757388/929999 if TYPE_CHECKING: from .blockdevice import BlockDevice + _: Any from .helpers import sort_block_devices_based_on_performance, select_largest_device, select_disk_larger_than_or_close_to from ..hardware import has_uefi @@ -26,13 +27,13 @@ def suggest_single_disk_layout(block_device :BlockDevice, compression = False if default_filesystem == 'btrfs': - prompt = 'Would you like to use BTRFS subvolumes with a default structure?' - choice = Menu(prompt, ['yes', 'no'], skip=False, default_option='yes').run() - using_subvolumes = choice == 'yes' + prompt = str(_('Would you like to use BTRFS subvolumes with a default structure?')) + choice = Menu(prompt, Menu.yes_no(), skip=False, default_option=Menu.yes()).run() + using_subvolumes = choice.value == Menu.yes() - prompt = 'Would you like to use BTRFS compression?' - choice = Menu(prompt, ['yes', 'no'], skip=False, default_option='yes').run() - compression = choice == 'yes' + prompt = str(_('Would you like to use BTRFS compression?')) + choice = Menu(prompt, Menu.yes_no(), skip=False, default_option=Menu.yes()).run() + compression = choice.value == Menu.yes() layout = { block_device.path : { @@ -87,9 +88,9 @@ def suggest_single_disk_layout(block_device :BlockDevice, layout[block_device.path]['partitions'][-1]['start'] = '513MiB' if not using_subvolumes and block_device.size >= MIN_SIZE_TO_ALLOW_HOME_PART: - prompt = 'Would you like to create a separate partition for /home?' - choice = Menu(prompt, ['yes', 'no'], skip=False, default_option='yes').run() - using_home_partition = choice == 'yes' + prompt = str(_('Would you like to create a separate partition for /home?')) + choice = Menu(prompt, Menu.yes_no(), skip=False, default_option=Menu.yes()).run() + using_home_partition = choice.value == Menu.yes() # Set a size for / (/root) if using_subvolumes or block_device.size < MIN_SIZE_TO_ALLOW_HOME_PART or not using_home_partition: @@ -138,9 +139,7 @@ def suggest_single_disk_layout(block_device :BlockDevice, return layout -def suggest_multi_disk_layout(block_devices :List[BlockDevice], - default_filesystem :Optional[str] = None, - advanced_options :bool = False) -> Dict[str, Any]: +def suggest_multi_disk_layout(block_devices :List[BlockDevice], default_filesystem :Optional[str] = None, advanced_options :bool = False): if not default_filesystem: from ..user_interaction import ask_for_main_filesystem_format @@ -158,6 +157,13 @@ def suggest_multi_disk_layout(block_devices :List[BlockDevice], home_device = select_largest_device(block_devices, gigabytes=MIN_SIZE_TO_ALLOW_HOME_PART) root_device = select_disk_larger_than_or_close_to(block_devices, gigabytes=ARCH_LINUX_INSTALLED_SIZE, filter_out=[home_device]) + if home_device is None or root_device is None: + text = _('The selected drives do not have the minimum capacity required for an automatic suggestion\n') + text += _('Minimum capacity for /home partition: {}GB\n').format(MIN_SIZE_TO_ALLOW_HOME_PART) + text += _('Minimum capacity for Arch Linux partition: {}GB').format(ARCH_LINUX_INSTALLED_SIZE) + Menu(str(text), [str(_('Continue'))], skip=False).run() + return None + compression = False if default_filesystem == 'btrfs': @@ -165,9 +171,9 @@ def suggest_multi_disk_layout(block_devices :List[BlockDevice], # choice = Menu(prompt, ['yes', 'no'], skip=False, default_option='yes').run() # using_subvolumes = choice == 'yes' - prompt = 'Would you like to use BTRFS compression?' - choice = Menu(prompt, ['yes', 'no'], skip=False, default_option='yes').run() - compression = choice == 'yes' + prompt = str(_('Would you like to use BTRFS compression?')) + choice = Menu(prompt, Menu.yes_no(), skip=False, default_option=Menu.yes()).run() + compression = choice.value == Menu.yes() log(f"Suggesting multi-disk-layout using {len(block_devices)} disks, where {root_device} will be /root and {home_device} will be /home", level=logging.DEBUG) diff --git a/archinstall/lib/exceptions.py b/archinstall/lib/exceptions.py index f6f58151..a16faa3f 100644 --- a/archinstall/lib/exceptions.py +++ b/archinstall/lib/exceptions.py @@ -48,4 +48,8 @@ class PackageError(BaseException): class TranslationError(BaseException): + pass + + +class Deprecated(BaseException): pass
\ No newline at end of file diff --git a/archinstall/lib/general.py b/archinstall/lib/general.py index 174acb8a..b99e4a45 100644 --- a/archinstall/lib/general.py +++ b/archinstall/lib/general.py @@ -10,6 +10,9 @@ import string import sys import time import re +import urllib.parse +import urllib.request +import pathlib from datetime import datetime, date from typing import Callable, Optional, Dict, Any, List, Union, Iterator, TYPE_CHECKING # https://stackoverflow.com/a/39757388/929999 @@ -132,6 +135,8 @@ class JsonEncoder: return obj.isoformat() elif isinstance(obj, (list, set, tuple)): return [json.loads(json.dumps(item, cls=JSON)) for item in obj] + elif isinstance(obj, (pathlib.Path)): + return str(obj) else: return obj @@ -352,14 +357,13 @@ class SysCommandWorker: # only way to get the traceback without loosing it. self.pid, self.child_fd = pty.fork() - os.chdir(old_dir) # https://stackoverflow.com/questions/4022600/python-pty-fork-how-does-it-work if not self.pid: try: try: with open(f"{storage['LOG_PATH']}/cmd_history.txt", "a") as cmd_log: - cmd_log.write(f"{' '.join(self.cmd)}\n") + cmd_log.write(f"{self.cmd}\n") except PermissionError: pass @@ -371,6 +375,9 @@ class SysCommandWorker: log(f"{self.cmd[0]} does not exist.", level=logging.ERROR, fg="red") self.exit_code = 1 return False + else: + # Only parent process moves back to the original working directory + os.chdir(old_dir) self.started = time.time() self.poll_object.register(self.child_fd, EPOLLIN | EPOLLHUP) @@ -457,7 +464,14 @@ class SysCommand: if self.session: return self.session - with SysCommandWorker(self.cmd, callbacks=self._callbacks, peak_output=self.peak_output, environment_vars=self.environment_vars, remove_vt100_escape_codes_from_lines=self.remove_vt100_escape_codes_from_lines) as session: + with SysCommandWorker( + self.cmd, + callbacks=self._callbacks, + peak_output=self.peak_output, + environment_vars=self.environment_vars, + remove_vt100_escape_codes_from_lines=self.remove_vt100_escape_codes_from_lines, + working_directory=self.working_directory) as session: + if not self.session: self.session = session @@ -523,32 +537,40 @@ def run_custom_user_commands(commands :List[str], installation :Installer) -> No log(execution_output) os.unlink(f"{installation.target}/var/tmp/user-command.{index}.sh") -def json_stream_to_structure(id : str, stream :str, target :dict) -> bool : - """ Function to load a stream (file (as name) or valid JSON string into an existing dictionary +def json_stream_to_structure(configuration_identifier : str, stream :str, target :dict) -> bool : + """ + Function to load a stream (file (as name) or valid JSON string into an existing dictionary Returns true if it could be done Return false if operation could not be executed - +id is just a parameter to get meaningful, but not so long messages + +configuration_identifier is just a parameter to get meaningful, but not so long messages """ - from pathlib import Path - if Path(stream).exists(): - try: - with open(Path(stream)) as fh: - target.update(json.load(fh)) - except Exception as e: - log(f"{id} = {stream} does not contain a valid JSON format: {e}",level=logging.ERROR) - return False + + parsed_url = urllib.parse.urlparse(stream) + + if parsed_url.scheme: # The stream is in fact a URL that should be grabed + with urllib.request.urlopen(urllib.request.Request(stream, headers={'User-Agent': 'ArchInstall'})) as response: + target.update(json.loads(response.read())) else: - log(f"{id} = {stream} does not exists in the filesystem. Trying as JSON stream",level=logging.DEBUG) - # NOTE: failure of this check doesn't make stream 'real' invalid JSON, just it first level entry is not an object (i.e. dict), so it is not a format we handle. - if stream.strip().startswith('{') and stream.strip().endswith('}'): + if pathlib.Path(stream).exists(): try: - target.update(json.loads(stream)) - except Exception as e: - log(f" {id} Contains an invalid JSON format : {e}",level=logging.ERROR) + with pathlib.Path(stream).open() as fh: + target.update(json.load(fh)) + except Exception as error: + log(f"{configuration_identifier} = {stream} does not contain a valid JSON format: {error}", level=logging.ERROR, fg="red") return False else: - log(f" {id} is neither a file nor is a JSON string:",level=logging.ERROR) - return False + # NOTE: This is a rudimentary check if what we're trying parse is a dict structure. + # Which is the only structure we tolerate anyway. + if stream.strip().startswith('{') and stream.strip().endswith('}'): + try: + target.update(json.loads(stream)) + except Exception as e: + log(f" {configuration_identifier} Contains an invalid JSON format : {e}",level=logging.ERROR, fg="red") + return False + else: + log(f" {configuration_identifier} is neither a file nor is a JSON string:",level=logging.ERROR, fg="red") + return False + return True def secret(x :str): diff --git a/archinstall/lib/hardware.py b/archinstall/lib/hardware.py index f183b0d3..8400d338 100644 --- a/archinstall/lib/hardware.py +++ b/archinstall/lib/hardware.py @@ -55,7 +55,7 @@ AVAILABLE_GFX_DRIVERS = { "mesa", "xf86-video-intel" ], - "Nvidia (open-source)": [ + "Nvidia (open-source nouveau driver)": [ "mesa", "xf86-video-nouveau", "libva-mesa-driver" diff --git a/archinstall/lib/hsm/__init__.py b/archinstall/lib/hsm/__init__.py new file mode 100644 index 00000000..c0888b04 --- /dev/null +++ b/archinstall/lib/hsm/__init__.py @@ -0,0 +1,4 @@ +from .fido import ( + get_fido2_devices, + fido2_enroll +)
\ No newline at end of file diff --git a/archinstall/lib/hsm/fido.py b/archinstall/lib/hsm/fido.py new file mode 100644 index 00000000..49f36957 --- /dev/null +++ b/archinstall/lib/hsm/fido.py @@ -0,0 +1,57 @@ +import typing +import pathlib +import getpass +import logging +from ..general import SysCommand, SysCommandWorker, clear_vt100_escape_codes +from ..disk.partition import Partition +from ..general import log + +def get_fido2_devices() -> typing.Dict[str, typing.Dict[str, str]]: + """ + Uses systemd-cryptenroll to list the FIDO2 devices + connected that supports FIDO2. + Some devices might show up in udevadm as FIDO2 compliant + when they are in fact not. + + The drawback of systemd-cryptenroll is that it uses human readable format. + That means we get this weird table like structure that is of no use. + + So we'll look for `MANUFACTURER` and `PRODUCT`, we take their index + and we split each line based on those positions. + """ + worker = clear_vt100_escape_codes(SysCommand(f"systemd-cryptenroll --fido2-device=list").decode('UTF-8')) + + MANUFACTURER_POS = 0 + PRODUCT_POS = 0 + devices = {} + for line in worker.split('\r\n'): + if '/dev' not in line: + MANUFACTURER_POS = line.find('MANUFACTURER') + PRODUCT_POS = line.find('PRODUCT') + continue + + path = line[:MANUFACTURER_POS].rstrip() + manufacturer = line[MANUFACTURER_POS:PRODUCT_POS].rstrip() + product = line[PRODUCT_POS:] + + devices[path] = { + 'manufacturer' : manufacturer, + 'product' : product + } + + return devices + +def fido2_enroll(hsm_device_path :pathlib.Path, partition :Partition, password :str) -> bool: + worker = SysCommandWorker(f"systemd-cryptenroll --fido2-device={hsm_device_path} {partition.real_device}", peak_output=True) + pw_inputted = False + pin_inputted = False + while worker.is_alive(): + if pw_inputted is False and bytes(f"please enter current passphrase for disk {partition.real_device}", 'UTF-8') in worker._trace_log.lower(): + worker.write(bytes(password, 'UTF-8')) + pw_inputted = True + + elif pin_inputted is False and bytes(f"please enter security token pin", 'UTF-8') in worker._trace_log.lower(): + worker.write(bytes(getpass.getpass(" "), 'UTF-8')) + pin_inputted = True + + log(f"You might need to touch the FIDO2 device to unlock it if no prompt comes up after 3 seconds.", level=logging.INFO, fg="yellow")
\ No newline at end of file diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py index 8b77317a..b2cd6306 100644 --- a/archinstall/lib/installer.py +++ b/archinstall/lib/installer.py @@ -13,16 +13,17 @@ from .disk import get_partitions_in_use, Partition from .general import SysCommand, generate_password from .hardware import has_uefi, is_vm, cpu_vendor from .locale_helpers import verify_keyboard_layout, verify_x11_keyboard_layout -from .disk.helpers import get_mount_info +from .disk.helpers import findmnt from .mirrors import use_mirrors from .plugins import plugins from .storage import storage # from .user_interaction import * from .output import log from .profiles import Profile -from .disk.btrfs import manage_btrfs_subvolumes from .disk.partition import get_mount_fs_type from .exceptions import DiskError, ServiceException, RequirementError, HardwareIncompatibilityError, SysCallError +from .hsm import fido2_enroll +from .models.users import User if TYPE_CHECKING: _: Any @@ -126,7 +127,9 @@ class Installer: self.MODULES = [] self.BINARIES = [] self.FILES = [] - self.HOOKS = ["base", "udev", "autodetect", "keyboard", "keymap", "modconf", "block", "filesystems", "fsck"] + # systemd, sd-vconsole and sd-encrypt will be replaced by udev, keymap and encrypt + # if HSM is not used to encrypt the root volume. Check mkinitcpio() function for that override. + self.HOOKS = ["base", "systemd", "autodetect", "keyboard", "sd-vconsole", "modconf", "block", "filesystems", "fsck"] self.KERNEL_PARAMS = [] self._zram_enabled = False @@ -230,21 +233,26 @@ class Installer: def mount_ordered_layout(self, layouts: Dict[str, Any]) -> None: from .luks import luks2 + from .disk.btrfs import setup_subvolumes, mount_subvolume + # set the partitions as a list not part of a tree (which we don't need anymore (i think) list_part = [] list_luks_handles = [] for blockdevice in layouts: list_part.extend(layouts[blockdevice]['partitions']) + # TODO: Implement a proper mount-queue system that does not depend on return values. + mount_queue = {} + # we manage the encrypted partititons for partition in [entry for entry in list_part if entry.get('encrypted', False)]: # open the luks device and all associate stuff if not (password := partition.get('!password', None)): raise RequirementError(f"Missing partition {partition['device_instance'].path} encryption password in layout: {partition}") - # i change a bit the naming conventions for the loop device loopdev = f"{storage.get('ENC_IDENTIFIER', 'ai')}{pathlib.Path(partition['mountpoint']).name}loop" else: loopdev = f"{storage.get('ENC_IDENTIFIER', 'ai')}{pathlib.Path(partition['device_instance'].path).name}" + # note that we DON'T auto_unmount (i.e. close the encrypted device so it can be used with (luks_handle := luks2(partition['device_instance'], loopdev, password, auto_unmount=False)) as unlocked_device: if partition.get('generate-encryption-key-file',False) and not self._has_root(partition): @@ -252,38 +260,74 @@ class Installer: # this way all the requesrs will be to the dm_crypt device and not to the physical partition partition['device_instance'] = unlocked_device + if self._has_root(partition) and partition.get('generate-encryption-key-file', False) is False: + if storage['arguments'].get('HSM'): + hsm_device_path = storage['arguments']['HSM'] + fido2_enroll(hsm_device_path, partition['device_instance'], password) + # we manage the btrfs partitions - for partition in [entry for entry in list_part if entry.get('btrfs', {}).get('subvolumes', {})]: - if partition.get('filesystem',{}).get('mount_options',[]): - mount_options = ','.join(partition['filesystem']['mount_options']) - self.mount(partition['device_instance'], "/", options=mount_options) - else: - self.mount(partition['device_instance'], "/") - try: - new_mountpoints = manage_btrfs_subvolumes(self,partition) - except Exception as e: - # every exception unmounts the physical volume. Otherwise we let the system in an unstable state + if any(btrfs_subvolumes := [entry for entry in list_part if entry.get('btrfs', {}).get('subvolumes', {})]): + for partition in btrfs_subvolumes: + if mount_options := ','.join(partition.get('filesystem',{}).get('mount_options',[])): + self.mount(partition['device_instance'], "/", options=mount_options) + else: + self.mount(partition['device_instance'], "/") + + setup_subvolumes( + installation=self, + partition_dict=partition + ) + partition['device_instance'].unmount() - raise e - partition['device_instance'].unmount() - if new_mountpoints: - list_part.extend(new_mountpoints) - # we mount. We need to sort by mountpoint to get a good working order - for partition in sorted([entry for entry in list_part if entry.get('mountpoint',False)],key=lambda part: part['mountpoint']): + # We then handle any special cases, such as btrfs + if any(btrfs_subvolumes := [entry for entry in list_part if entry.get('btrfs', {}).get('subvolumes', {})]): + for partition_information in btrfs_subvolumes: + for name, mountpoint in sorted(partition_information['btrfs']['subvolumes'].items(), key=lambda item: item[1]): + btrfs_subvolume_information = {} + + match mountpoint: + case str(): # backwards-compatability + btrfs_subvolume_information['mountpoint'] = mountpoint + btrfs_subvolume_information['options'] = [] + case dict(): + btrfs_subvolume_information['mountpoint'] = mountpoint.get('mountpoint', None) + btrfs_subvolume_information['options'] = mountpoint.get('options', []) + case _: + continue + + if mountpoint_parsed := btrfs_subvolume_information.get('mountpoint'): + # We cache the mount call for later + mount_queue[mountpoint_parsed] = lambda device=partition_information['device_instance'], \ + name=name, \ + subvolume_information=btrfs_subvolume_information: mount_subvolume( + installation=self, + device=device, + name=name, + subvolume_information=subvolume_information + ) + + # We mount ordinary partitions, and we sort them by the mountpoint + for partition in sorted([entry for entry in list_part if entry.get('mountpoint', False)], key=lambda part: part['mountpoint']): mountpoint = partition['mountpoint'] log(f"Mounting {mountpoint} to {self.target}{mountpoint} using {partition['device_instance']}", level=logging.INFO) if partition.get('filesystem',{}).get('mount_options',[]): mount_options = ','.join(partition['filesystem']['mount_options']) - partition['device_instance'].mount(f"{self.target}{mountpoint}", options=mount_options) + mount_queue[mountpoint] = lambda instance=partition['device_instance'], target=f"{self.target}{mountpoint}", options=mount_options: instance.mount(target, options=options) else: - partition['device_instance'].mount(f"{self.target}{mountpoint}") + mount_queue[mountpoint] = lambda instance=partition['device_instance'], target=f"{self.target}{mountpoint}": instance.mount(target) + + log(f"Using mount order: {list(sorted(mount_queue.items(), key=lambda item: item[0]))}", level=logging.INFO, fg="white") + + # We mount everything by sorting on the mountpoint itself. + for mountpoint, frozen_func in sorted(mount_queue.items(), key=lambda item: item[0]): + frozen_func() time.sleep(1) try: - get_mount_info(f"{self.target}{mountpoint}", traverse=False) + findmnt(pathlib.Path(f"{self.target}{mountpoint}"), traverse=False) except DiskError: raise DiskError(f"Target {self.target}{mountpoint} never got mounted properly (unable to get mount information using findmnt).") @@ -365,15 +409,28 @@ class Installer: self.log(f'Installing packages: {packages}', level=logging.INFO) - if (sync_mirrors := run_pacman('-Syy', default_cmd='/usr/bin/pacman')).exit_code == 0: - if (pacstrap := SysCommand(f'/usr/bin/pacstrap -C /etc/pacman.conf {self.target} {" ".join(packages)} --noconfirm', peak_output=True)).exit_code == 0: - return True - else: - self.log(f'Could not strap in packages: {pacstrap}', level=logging.ERROR, fg="red") - self.log(f'Could not strap in packages: {pacstrap.exit_code}', level=logging.ERROR, fg="red") - raise RequirementError("Pacstrap failed. See /var/log/archinstall/install.log or above message for error details.") - else: - self.log(f'Could not sync mirrors: {sync_mirrors.exit_code}', level=logging.INFO) + # TODO: We technically only need to run the -Syy once. + try: + run_pacman('-Syy', default_cmd='/usr/bin/pacman') + except SysCallError as error: + self.log(f'Could not sync a new package databse: {error}', level=logging.ERROR, fg="red") + + if storage['arguments'].get('silent', False) is False: + if input('Would you like to re-try this download? (Y/n): ').lower().strip() in ('', 'y'): + return self.pacstrap(*packages, **kwargs) + + raise RequirementError(f'Could not sync mirrors: {error}', level=logging.ERROR, fg="red") + + try: + return SysCommand(f'/usr/bin/pacstrap -C /etc/pacman.conf {self.target} {" ".join(packages)} --noconfirm', peak_output=True).exit_code == 0 + except SysCallError as error: + self.log(f'Could not strap in packages: {error}', level=logging.ERROR, fg="red") + + if storage['arguments'].get('silent', False) is False: + if input('Would you like to re-try this download? (Y/n): ').lower().strip() in ('', 'y'): + return self.pacstrap(*packages, **kwargs) + + raise RequirementError("Pacstrap failed. See /var/log/archinstall/install.log or above message for error details.") def set_mirrors(self, mirrors :Mapping[str, Iterator[str]]) -> None: for plugin in plugins.values(): @@ -596,6 +653,15 @@ class Installer: mkinit.write(f"MODULES=({' '.join(self.MODULES)})\n") mkinit.write(f"BINARIES=({' '.join(self.BINARIES)})\n") mkinit.write(f"FILES=({' '.join(self.FILES)})\n") + + if not storage['arguments']['HSM']: + # For now, if we don't use HSM we revert to the old + # way of setting up encryption hooks for mkinitcpio. + # This is purely for stability reasons, we're going away from this. + # * systemd -> udev + # * sd-vconsole -> keymap + self.HOOKS = [hook.replace('systemd', 'udev').replace('sd-vconsole', 'keymap') for hook in self.HOOKS] + mkinit.write(f"HOOKS=({' '.join(self.HOOKS)})\n") return SysCommand(f'/usr/bin/arch-chroot {self.target} mkinitcpio {" ".join(flags)}').exit_code == 0 @@ -630,8 +696,15 @@ class Installer: self.HOOKS.remove('fsck') if self.detect_encryption(partition): - if 'encrypt' not in self.HOOKS: - self.HOOKS.insert(self.HOOKS.index('filesystems'), 'encrypt') + if storage['arguments']['HSM']: + # Required bby mkinitcpio to add support for fido2-device options + self.pacstrap('libfido2') + + if 'sd-encrypt' not in self.HOOKS: + self.HOOKS.insert(self.HOOKS.index('filesystems'), 'sd-encrypt') + else: + if 'encrypt' not in self.HOOKS: + self.HOOKS.insert(self.HOOKS.index('filesystems'), 'encrypt') if not has_uefi(): self.base_packages.append('grub') @@ -687,6 +760,14 @@ class Installer: # TODO: Use python functions for this SysCommand(f'/usr/bin/arch-chroot {self.target} chmod 700 /root') + if storage['arguments']['HSM']: + # TODO: + # A bit of a hack, but we need to get vconsole.conf in there + # before running `mkinitcpio` because it expects it in HSM mode. + if (vconsole := pathlib.Path(f"{self.target}/etc/vconsole.conf")).exists() is False: + with vconsole.open('w') as fh: + fh.write(f"KEYMAP={storage['arguments']['keyboard-layout']}\n") + self.mkinitcpio('-P') self.helper_flags['base'] = True @@ -731,7 +812,9 @@ class Installer: # And in which case we should do some clean up. # Install the boot loader - if SysCommand(f'/usr/bin/arch-chroot {self.target} bootctl --path=/boot install').exit_code != 0: + try: + SysCommand(f'/usr/bin/arch-chroot {self.target} bootctl --path=/boot install') + except SysCallError: # Fallback, try creating the boot loader without touching the EFI variables SysCommand(f'/usr/bin/arch-chroot {self.target} bootctl --no-variables --path=/boot install') @@ -777,7 +860,7 @@ class Installer: elif vendor == "GenuineIntel": entry.write("initrd /intel-ucode.img\n") else: - self.log("unknow cpu vendor, not adding ucode to systemd-boot config") + self.log(f"Unknown CPU vendor '{vendor}' detected. Archinstall won't add any ucode to systemd-boot config.", level=logging.DEBUG) entry.write(f"initrd /initramfs-{kernel}.img\n") # blkid doesn't trigger on loopback devices really well, # so we'll use the old manual method until we get that sorted out. @@ -801,11 +884,23 @@ class Installer: if real_device := self.detect_encryption(root_partition): # TODO: We need to detect if the encrypted device is a whole disk encryption, # or simply a partition encryption. Right now we assume it's a partition (and we always have) - log(f"Identifying root partition by PART-UUID on {real_device}: '{real_device.uuid}'.", level=logging.DEBUG) - entry.write(f'options cryptdevice=PARTUUID={real_device.uuid}:luksdev root=/dev/mapper/luksdev {options_entry}') + log(f"Identifying root partition by PART-UUID on {real_device}: '{real_device.uuid}/{real_device.part_uuid}'.", level=logging.DEBUG) + + kernel_options = f"options" + + if storage['arguments']['HSM']: + # Note: lsblk UUID must be used, not PARTUUID for sd-encrypt to work + kernel_options += f" rd.luks.name={real_device.uuid}=luksdev" + # Note: tpm2-device and fido2-device don't play along very well: + # https://github.com/archlinux/archinstall/pull/1196#issuecomment-1129715645 + kernel_options += f" rd.luks.options=fido2-device=auto,password-echo=no" + else: + kernel_options += f" cryptdevice=PARTUUID={real_device.part_uuid}:luksdev" + + entry.write(f'{kernel_options} root=/dev/mapper/luksdev {options_entry}') else: - log(f"Identifying root partition by PART-UUID on {root_partition}, looking for '{root_partition.uuid}'.", level=logging.DEBUG) - entry.write(f'options root=PARTUUID={root_partition.uuid} {options_entry}') + log(f"Identifying root partition by PARTUUID on {root_partition}, looking for '{root_partition.part_uuid}'.", level=logging.DEBUG) + entry.write(f'options root=PARTUUID={root_partition.part_uuid} {options_entry}') self.helper_flags['bootloader'] = "systemd" @@ -881,7 +976,7 @@ class Installer: elif vendor == "GenuineIntel": kernel_parameters.append("initrd=\\intel-ucode.img") else: - self.log("unknow cpu vendor, not adding ucode to firmware boot entry") + self.log(f"Unknown CPU vendor '{vendor}' detected. Archinstall won't add any ucode to firmware boot entry.", level=logging.DEBUG) kernel_parameters.append(f"initrd=\\initramfs-{kernel}.img") @@ -890,11 +985,11 @@ class Installer: if real_device := self.detect_encryption(root_partition): # TODO: We need to detect if the encrypted device is a whole disk encryption, # or simply a partition encryption. Right now we assume it's a partition (and we always have) - log(f"Identifying root partition by PART-UUID on {real_device}: '{real_device.uuid}'.", level=logging.DEBUG) - kernel_parameters.append(f'cryptdevice=PARTUUID={real_device.uuid}:luksdev root=/dev/mapper/luksdev rw intel_pstate=no_hwp rootfstype={root_fs_type} {" ".join(self.KERNEL_PARAMS)}') + log(f"Identifying root partition by PART-UUID on {real_device}: '{real_device.part_uuid}'.", level=logging.DEBUG) + kernel_parameters.append(f'cryptdevice=PARTUUID={real_device.part_uuid}:luksdev root=/dev/mapper/luksdev rw intel_pstate=no_hwp rootfstype={root_fs_type} {" ".join(self.KERNEL_PARAMS)}') else: - log(f"Identifying root partition by PART-UUID on {root_partition}, looking for '{root_partition.uuid}'.", level=logging.DEBUG) - kernel_parameters.append(f'root=PARTUUID={root_partition.uuid} rw intel_pstate=no_hwp rootfstype={root_fs_type} {" ".join(self.KERNEL_PARAMS)}') + log(f"Identifying root partition by PART-UUID on {root_partition}, looking for '{root_partition.part_uuid}'.", level=logging.DEBUG) + kernel_parameters.append(f'root=PARTUUID={root_partition.part_uuid} rw intel_pstate=no_hwp rootfstype={root_fs_type} {" ".join(self.KERNEL_PARAMS)}') SysCommand(f'efibootmgr --disk {boot_partition.path[:-1]} --part {boot_partition.path[-1]} --create --label "{label}" --loader {loader} --unicode \'{" ".join(kernel_parameters)}\' --verbose') @@ -921,10 +1016,14 @@ class Installer: if plugin.on_add_bootloader(self): return True + if type(self.target) == str: + self.target = pathlib.Path(self.target) + boot_partition = None root_partition = None for partition in self.partitions: - if partition.mountpoint == os.path.join(self.target, 'boot'): + print(partition, [partition.mountpoint], [self.target]) + if partition.mountpoint == self.target / 'boot': boot_partition = partition elif partition.mountpoint == self.target: root_partition = partition @@ -963,10 +1062,10 @@ class Installer: if type(profile) == str: profile = Profile(self, profile) - self.log(f'Installing network profile {profile}', level=logging.INFO) + self.log(f'Installing archinstall profile {profile}', level=logging.INFO) return profile.install() - def enable_sudo(self, entity: str, group :bool = False) -> bool: + def enable_sudo(self, entity: str, group :bool = False): self.log(f'Enabling sudo permissions for {entity}.', level=logging.INFO) sudoers_dir = f"{self.target}/etc/sudoers.d" @@ -996,9 +1095,14 @@ class Installer: # Guarantees sudoer conf file recommended perms os.chmod(pathlib.Path(rule_file_name), 0o440) - return True + def create_users(self, users: Union[User, List[User]]): + if not isinstance(users, list): + users = [users] + + for user in users: + self.user_create(user.username, user.password, user.groups, user.sudo) - def user_create(self, user :str, password :Optional[str] = None, groups :Optional[str] = None, sudo :bool = False) -> None: + def user_create(self, user :str, password :Optional[str] = None, groups :Optional[List[str]] = None, sudo :bool = False) -> None: if groups is None: groups = [] diff --git a/archinstall/lib/luks.py b/archinstall/lib/luks.py index 710af01e..ac480b11 100644 --- a/archinstall/lib/luks.py +++ b/archinstall/lib/luks.py @@ -15,7 +15,10 @@ from .general import SysCommand, SysCommandWorker from .output import log from .exceptions import SysCallError, DiskError from .storage import storage +from .disk.helpers import get_filesystem_type from .disk.mapperdev import MapperDev +from .disk.btrfs import BTRFSPartition + class luks2: def __init__(self, @@ -149,7 +152,6 @@ class luks2: :param mountpoint: The name without absolute path, for instance "luksdev" will point to /dev/mapper/luksdev :type mountpoint: str """ - from .disk import get_filesystem_type if '/' in mountpoint: os.path.basename(mountpoint) # TODO: Raise exception instead? @@ -162,14 +164,22 @@ class luks2: if os.path.islink(f'/dev/mapper/{mountpoint}'): self.mapdev = f'/dev/mapper/{mountpoint}' - unlocked_partition = Partition( + if (filesystem_type := get_filesystem_type(pathlib.Path(self.mapdev))) == 'btrfs': + return BTRFSPartition( + self.mapdev, + block_device=MapperDev(mountpoint).partition.block_device, + encrypted=True, + filesystem=filesystem_type, + autodetect_filesystem=False + ) + + return Partition( self.mapdev, block_device=MapperDev(mountpoint).partition.block_device, encrypted=True, filesystem=get_filesystem_type(self.mapdev), autodetect_filesystem=False ) - return unlocked_partition def close(self, mountpoint :Optional[str] = None) -> bool: if not mountpoint: diff --git a/archinstall/lib/menu/global_menu.py b/archinstall/lib/menu/global_menu.py index afccd45b..5cb27cab 100644 --- a/archinstall/lib/menu/global_menu.py +++ b/archinstall/lib/menu/global_menu.py @@ -1,6 +1,8 @@ from __future__ import annotations -from typing import Any, List, Optional, Union +from typing import Any, List, Optional, Union, Dict, TYPE_CHECKING + +import archinstall from ..menu import Menu from ..menu.selection_menu import Selector, GeneralMenu @@ -8,8 +10,7 @@ from ..general import SysCommand, secret from ..hardware import has_uefi from ..models import NetworkConfiguration from ..storage import storage -from ..output import log -from ..profiles import is_desktop_profile +from ..profiles import is_desktop_profile, Profile from ..disk import encrypted_partitions from ..user_interaction import get_password, ask_for_a_timezone, save_config @@ -20,7 +21,6 @@ from ..user_interaction import ask_hostname from ..user_interaction import ask_for_audio_selection from ..user_interaction import ask_additional_packages_to_install from ..user_interaction import ask_to_configure_network -from ..user_interaction import ask_for_superuser_account from ..user_interaction import ask_for_additional_users from ..user_interaction import select_language from ..user_interaction import select_mirror_regions @@ -32,126 +32,147 @@ from ..user_interaction import select_encrypted_partitions from ..user_interaction import select_harddrives from ..user_interaction import select_profile from ..user_interaction import select_additional_repositories +from ..models.users import User +from ..user_interaction.partitioning_conf import current_partition_layout +from ..output import FormattedOutput + +if TYPE_CHECKING: + _: Any + class GlobalMenu(GeneralMenu): def __init__(self,data_store): - super().__init__(data_store=data_store, auto_cursor=True) + super().__init__(data_store=data_store, auto_cursor=True, preview_size=0.3) def _setup_selection_menu_options(self): # archinstall.Language will not use preset values self._menu_options['archinstall-language'] = \ Selector( - _('Select Archinstall language'), - lambda x: self._select_archinstall_language('English'), + _('Archinstall language'), + lambda x: self._select_archinstall_language(x), default='English') self._menu_options['keyboard-layout'] = \ - Selector(_('Select keyboard layout'), lambda preset: select_language('us',preset), default='us') + Selector( + _('Keyboard layout'), + lambda preset: select_language(preset), + default='us') self._menu_options['mirror-region'] = \ Selector( - _('Select mirror region'), - select_mirror_regions, + _('Mirror region'), + lambda preset: select_mirror_regions(preset), display_func=lambda x: list(x.keys()) if x else '[]', default={}) self._menu_options['sys-language'] = \ - Selector(_('Select locale language'), lambda preset: select_locale_lang('en_US',preset), default='en_US') + Selector( + _('Locale language'), + lambda preset: select_locale_lang(preset), + default='en_US') self._menu_options['sys-encoding'] = \ - Selector(_('Select locale encoding'), lambda preset: select_locale_enc('utf-8',preset), default='utf-8') + Selector( + _('Locale encoding'), + lambda preset: select_locale_enc(preset), + default='UTF-8') self._menu_options['harddrives'] = \ Selector( - _('Select harddrives'), - self._select_harddrives) + _('Drive(s)'), + lambda preset: self._select_harddrives(preset), + display_func=lambda x: f'{len(x)} ' + str(_('Drive(s)')) if x is not None and len(x) > 0 else '', + preview_func=self._prev_harddrives, + ) self._menu_options['disk_layouts'] = \ Selector( - _('Select disk layout'), - lambda x: select_disk_layout( + _('Disk layout'), + lambda preset: select_disk_layout( + preset, storage['arguments'].get('harddrives', []), storage['arguments'].get('advanced', False) ), + preview_func=self._prev_disk_layouts, + display_func=lambda x: self._display_disk_layout(x), dependencies=['harddrives']) self._menu_options['!encryption-password'] = \ Selector( - _('Set encryption password'), + _('Encryption password'), lambda x: self._select_encrypted_password(), display_func=lambda x: secret(x) if x else 'None', dependencies=['harddrives']) + self._menu_options['HSM'] = Selector( + description=_('Use HSM to unlock encrypted drive'), + func=lambda preset: self._select_hsm(preset), + dependencies=['!encryption-password'], + default=None + ) self._menu_options['swap'] = \ Selector( - _('Use swap'), + _('Swap'), lambda preset: ask_for_swap(preset), default=True) self._menu_options['bootloader'] = \ Selector( - _('Select bootloader'), + _('Bootloader'), lambda preset: ask_for_bootloader(storage['arguments'].get('advanced', False),preset), default="systemd-bootctl" if has_uefi() else "grub-install") self._menu_options['hostname'] = \ Selector( - _('Specify hostname'), + _('Hostname'), ask_hostname, default='archlinux') # root password won't have preset value self._menu_options['!root-password'] = \ Selector( - _('Set root password'), + _('Root password'), lambda preset:self._set_root_password(), display_func=lambda x: secret(x) if x else 'None') - self._menu_options['!superusers'] = \ - Selector( - _('Specify superuser account'), - lambda preset: self._create_superuser_account(), - default={}, - exec_func=lambda n,v:self._users_resynch(), - dependencies_not=['!root-password'], - display_func=lambda x: self._display_superusers()) self._menu_options['!users'] = \ Selector( - _('Specify user account'), - lambda x: self._create_user_account(), + _('User account'), + lambda x: self._create_user_account(x), default={}, - exec_func=lambda n,v:self._users_resynch(), - display_func=lambda x: list(x.keys()) if x else '[]') + display_func=lambda x: f'{len(x)} {_("User(s)")}' if len(x) > 0 else None, + preview_func=self._prev_users) self._menu_options['profile'] = \ Selector( - _('Specify profile'), - lambda x: self._select_profile(), - display_func=lambda x: x if x else 'None') + _('Profile'), + lambda preset: self._select_profile(preset), + display_func=lambda x: x if x else 'None' + ) self._menu_options['audio'] = \ Selector( - _('Select audio'), + _('Audio'), lambda preset: ask_for_audio_selection(is_desktop_profile(storage['arguments'].get('profile', None)),preset), display_func=lambda x: x if x else 'None', default=None ) self._menu_options['kernels'] = \ Selector( - _('Select kernels'), + _('Kernels'), lambda preset: select_kernel(preset), default=['linux']) self._menu_options['packages'] = \ Selector( - _('Additional packages to install'), + _('Additional packages'), # lambda x: ask_additional_packages_to_install(storage['arguments'].get('packages', None)), ask_additional_packages_to_install, default=[]) self._menu_options['additional-repositories'] = \ Selector( - _('Additional repositories to enable'), + _('Optional repositories'), select_additional_repositories, default=[]) self._menu_options['nic'] = \ Selector( - _('Configure network'), + _('Network configuration'), ask_to_configure_network, display_func=lambda x: self._prev_network_configuration(x), default={}) self._menu_options['timezone'] = \ Selector( - _('Select timezone'), + _('Timezone'), lambda preset: ask_for_a_timezone(preset), default='UTC') self._menu_options['ntp'] = \ Selector( - _('Set automatic time sync (NTP)'), + _('Automatic time sync (NTP)'), lambda preset: self._select_ntp(preset), default=True) self._menu_options['__separator__'] = \ @@ -172,7 +193,7 @@ class GlobalMenu(GeneralMenu): def _update_install_text(self, name :str = None, result :Any = None): text = self._install_text() - self._menu_options.get('install').update_description(text) + self._menu_options['install'].update_description(text) def post_callback(self,name :str = None ,result :Any = None): self._update_install_text(name, result) @@ -182,14 +203,21 @@ class GlobalMenu(GeneralMenu): # If no partitions was marked as encrypted, but a password was supplied and we have some disks to format.. # Then we need to identify which partitions to encrypt. This will default to / (root). if len(list(encrypted_partitions(storage['arguments'].get('disk_layouts', [])))) == 0: - storage['arguments']['disk_layouts'] = select_encrypted_partitions( - storage['arguments']['disk_layouts'], storage['arguments']['!encryption-password']) + for blockdevice in storage['arguments']['disk_layouts']: + for partition_index in select_encrypted_partitions( + title="Select which partitions to encrypt:", + partitions=storage['arguments']['disk_layouts'][blockdevice]['partitions'] + ): + + partition = storage['arguments']['disk_layouts'][blockdevice]['partitions'][partition_index] + partition['encrypted'] = True + partition['!password'] = storage['arguments']['!encryption-password'] def _install_text(self): missing = len(self._missing_configs()) if missing > 0: return _('Install ({} config(s) missing)').format(missing) - return 'Install' + return _('Install') def _prev_network_configuration(self, cur_value: Union[NetworkConfiguration, List[NetworkConfiguration]]) -> str: if not cur_value: @@ -201,6 +229,35 @@ class GlobalMenu(GeneralMenu): else: return str(cur_value) + def _prev_harddrives(self) -> Optional[str]: + selector = self._menu_options['harddrives'] + if selector.has_selection(): + drives = selector.current_selection + return '\n\n'.join([d.display_info for d in drives]) + return None + + def _prev_disk_layouts(self) -> Optional[str]: + selector = self._menu_options['disk_layouts'] + if selector.has_selection(): + layouts: Dict[str, Dict[str, Any]] = selector.current_selection + + output = '' + for device, layout in layouts.items(): + output += f'{_("Device")}: {device}\n\n' + output += current_partition_layout(layout['partitions'], with_title=False) + output += '\n\n' + + return output.rstrip() + + return None + + def _display_disk_layout(self, current_value: Optional[Dict[str, Any]]) -> str: + if current_value: + total_partitions = [entry['partitions'] for entry in current_value.values()] + total_nr = sum([len(p) for p in total_partitions]) + return f'{total_nr} {_("Partitions")}' + return '' + def _prev_install_missing_config(self) -> Optional[str]: if missing := self._missing_configs(): text = str(_('Missing configurations:\n')) @@ -209,31 +266,42 @@ class GlobalMenu(GeneralMenu): return text[:-1] # remove last new line return None + def _prev_users(self) -> Optional[str]: + selector = self._menu_options['!users'] + if selector.has_selection(): + users: List[User] = selector.current_selection + return FormattedOutput.as_table(users) + return None + def _missing_configs(self) -> List[str]: def check(s): return self._menu_options.get(s).has_selection() + def has_superuser() -> bool: + users = self._menu_options['!users'].current_selection + return any([u.sudo for u in users]) + missing = [] if not check('bootloader'): missing += ['Bootloader'] if not check('hostname'): missing += ['Hostname'] - if not check('!root-password') and not check('!superusers'): - missing += [str(_('Either root-password or at least 1 superuser must be specified'))] + if not check('!root-password') and not has_superuser(): + missing += [str(_('Either root-password or at least 1 user with sudo privileges must be specified'))] if not check('harddrives'): missing += ['Hard drives'] if check('harddrives'): - if not self._menu_options.get('harddrives').is_empty() and not check('disk_layouts'): + if not self._menu_options['harddrives'].is_empty() and not check('disk_layouts'): missing += ['Disk layout'] return missing - def _set_root_password(self): + def _set_root_password(self) -> Optional[str]: prompt = str(_('Enter root password (leave blank to disable root): ')) password = get_password(prompt=prompt) return password - def _select_encrypted_password(self): + def _select_encrypted_password(self) -> Optional[str]: if passwd := get_password(prompt=str(_('Enter disk encryption password (leave blank for no encryption): '))): return passwd else: @@ -247,59 +315,75 @@ class GlobalMenu(GeneralMenu): return ntp - def _select_harddrives(self, old_harddrives : list) -> list: - # old_haddrives = storage['arguments'].get('harddrives', []) + def _select_harddrives(self, old_harddrives : list) -> List: harddrives = select_harddrives(old_harddrives) - # in case the harddrives got changed we have to reset the disk layout as well - if old_harddrives != harddrives: - self._menu_options.get('disk_layouts').set_current_selection(None) - storage['arguments']['disk_layouts'] = {} - - if not harddrives: + if len(harddrives) == 0: prompt = _( "You decided to skip harddrive selection\nand will use whatever drive-setup is mounted at {} (experimental)\n" "WARNING: Archinstall won't check the suitability of this setup\n" "Do you wish to continue?" ).format(storage['MOUNT_POINT']) - choice = Menu(prompt, ['yes', 'no'], default_option='yes').run() + choice = Menu(prompt, Menu.yes_no(), default_option=Menu.yes(), skip=False).run() - if choice == 'no': - exit(1) + if choice.value == Menu.no(): + return self._select_harddrives(old_harddrives) + + # in case the harddrives got changed we have to reset the disk layout as well + if old_harddrives != harddrives: + self._menu_options['disk_layouts'].set_current_selection(None) + storage['arguments']['disk_layouts'] = {} return harddrives - def _select_profile(self): - profile = select_profile() + def _select_profile(self, preset): + profile = select_profile(preset) + ret = None + + if profile is None: + if any([ + archinstall.storage.get('profile_minimal', False), + archinstall.storage.get('_selected_servers', None), + archinstall.storage.get('_desktop_profile', None), + archinstall.arguments.get('desktop-environment', None), + archinstall.arguments.get('gfx_driver_packages', None) + ]): + return preset + else: # ctrl+c was actioned and all profile settings have been reset + return None + + servers = archinstall.storage.get('_selected_servers', []) + desktop = archinstall.storage.get('_desktop_profile', None) + desktop_env = archinstall.arguments.get('desktop-environment', None) + gfx_driver = archinstall.arguments.get('gfx_driver_packages', None) # Check the potentially selected profiles preparations to get early checks if some additional questions are needed. if profile and profile.has_prep_function(): namespace = f'{profile.namespace}.py' with profile.load_instructions(namespace=namespace) as imported: - if not imported._prep_function(): - log(' * Profile\'s preparation requirements was not fulfilled.', fg='red') - exit(1) - - return profile - - def _create_superuser_account(self): - superusers = ask_for_superuser_account(str(_('Manage superuser accounts: '))) - return superusers if superusers else None - - def _create_user_account(self): - users = ask_for_additional_users(str(_('Manage ordinary user accounts: '))) + if imported._prep_function(servers=servers, desktop=desktop, desktop_env=desktop_env, gfx_driver=gfx_driver): + ret: Profile = profile + + match ret.name: + case 'minimal': + reset = ['_selected_servers', '_desktop_profile', 'desktop-environment', 'gfx_driver_packages'] + case 'server': + reset = ['_desktop_profile', 'desktop-environment'] + case 'desktop': + reset = ['_selected_servers'] + case 'xorg': + reset = ['_selected_servers', '_desktop_profile', 'desktop-environment'] + + for r in reset: + archinstall.storage[r] = None + else: + return self._select_profile(preset) + elif profile: + ret = profile + + return ret + + def _create_user_account(self, defined_users: List[User]) -> List[User]: + users = ask_for_additional_users(defined_users=defined_users) return users - - def _display_superusers(self): - superusers = self._data_store.get('!superusers', {}) - - if self._menu_options.get('!root-password').has_selection(): - return list(superusers.keys()) if superusers else '[]' - else: - return list(superusers.keys()) if superusers else '' - - def _users_resynch(self): - self.synch('!superusers') - self.synch('!users') - return False diff --git a/archinstall/lib/menu/list_manager.py b/archinstall/lib/menu/list_manager.py index 4e6dffbe..cb567093 100644 --- a/archinstall/lib/menu/list_manager.py +++ b/archinstall/lib/menu/list_manager.py @@ -84,12 +84,12 @@ The contents in the base class of this methods serve for a very basic usage, and ``` """ +import copy +from os import system +from typing import Union, Any, TYPE_CHECKING, Dict, Optional from .text_input import TextInput from .menu import Menu -from os import system -from copy import copy -from typing import Union, Any, List, TYPE_CHECKING if TYPE_CHECKING: _: Any @@ -144,82 +144,99 @@ class ListManager: self.bottom_list = [self.confirm_action,self.cancel_action] self.bottom_item = [self.cancel_action] self.base_actions = base_actions if base_actions else [str(_('Add')),str(_('Copy')),str(_('Edit')),str(_('Delete'))] - self.base_data = base_list - self._data = copy(base_list) # as refs, changes are immediate + self._original_data = copy.deepcopy(base_list) + self._data = copy.deepcopy(base_list) # as refs, changes are immediate # default values for the null case - self.target = None + self.target: Optional[Any] = None self.action = self._null_action + if len(self._data) == 0 and self._null_action: - self.exec_action(self._data) + self._data = self.exec_action(self._data) def run(self): while True: - self._data_formatted = self.reformat(self._data) - options = self._data_formatted + [self.separator] + # this will return a dictionary with the key as the menu entry to be displayed + # and the value is the original value from the self._data container + data_formatted = self.reformat(self._data) + options = list(data_formatted.keys()) + options.append(self.separator) + if self._default_action: options += self._default_action + options += self.bottom_list + system('clear') - target = Menu(self._prompt, + + target = Menu( + self._prompt, options, sort=False, clear_screen=False, clear_menu_on_exit=False, header=self.header, - skip_empty_entries=True).run() + skip_empty_entries=True, + skip=False + ).run() - if not target or target in self.bottom_list: + if not target.value or target.value in self.bottom_list: self.action = target break - if target and target == self.separator: - continue - if target and target in self._default_action: - self.action = target - target = None + + if target.value and target.value in self._default_action: + self.action = target.value self.target = None - self.exec_action(self._data) + self._data = self.exec_action(self._data) continue + if isinstance(self._data,dict): - key = list(self._data.keys())[self._data_formatted.index(target)] - self.target = {key: self._data[key]} + data_key = data_formatted[target.value] + key = self._data[data_key] + self.target = {data_key: key} + elif isinstance(self._data, list): + self.target = [d for d in self._data if d == data_formatted[target.value]][0] else: - self.target = self._data[self._data_formatted.index(target)] + self.target = self._data[data_formatted[target.value]] + # Possible enhacement. If run_actions returns false a message line indicating the failure - self.run_actions(target) + self.run_actions(target.value) - if not target or target == self.cancel_action: # TODO dubious - return self.base_data # return the original list + if target.value == self.cancel_action: # TODO dubious + return self._original_data # return the original list else: return self._data def run_actions(self,prompt_data=None): options = self.action_list() + self.bottom_item prompt = _("Select an action for < {} >").format(prompt_data if prompt_data else self.target) - self.action = Menu( + choice = Menu( prompt, options, sort=False, clear_screen=False, clear_menu_on_exit=False, preset_values=self.bottom_item, - show_search_hint=False).run() - if not self.action or self.action == self.cancel_action: - return False - else: - return self.exec_action(self._data) + show_search_hint=False + ).run() + + self.action = choice.value + + if self.action and self.action != self.cancel_action: + self._data = self.exec_action(self._data) + """ The following methods are expected to be overwritten by the user if the needs of the list are beyond the simple case """ - def reformat(self, data: Any) -> List[Any]: + def reformat(self, data: Any) -> Dict[str, Any]: """ method to get the data in a format suitable to be shown It is executed once for run loop and processes the whole self._data structure """ if isinstance(data,dict): - return list(map(lambda x:f"{x} : {data[x]}",data)) + return {f'{k}: {v}': k for k, v in data.items()} else: - return list(map(lambda x:str(x),data)) + return {str(k): k for k in data} def action_list(self): """ @@ -238,18 +255,18 @@ class ListManager: # TODO guarantee unicity if isinstance(self._data,list): if self.action == str(_('Add')): - self.target = TextInput(_('Add :'),None).run() + self.target = TextInput(_('Add: '),None).run() self._data.append(self.target) if self.action == str(_('Copy')): while True: - target = TextInput(_('Copy to :'),self.target).run() + target = TextInput(_('Copy to: '),self.target).run() if target != self.target: self._data.append(self.target) break elif self.action == str(_('Edit')): tgt = self.target idx = self._data.index(self.target) - result = TextInput(_('Edite :'),tgt).run() + result = TextInput(_('Edit: '),tgt).run() self._data[idx] = result elif self.action == str(_('Delete')): del self._data[self._data.index(self.target)] @@ -261,8 +278,8 @@ class ListManager: origkey = None origval = None if self.action == str(_('Add')): - key = TextInput(_('Key :'),None).run() - value = TextInput(_('Value :'),None).run() + key = TextInput(_('Key: '),None).run() + value = TextInput(_('Value: '),None).run() self._data[key] = value if self.action == str(_('Copy')): while True: @@ -271,7 +288,9 @@ class ListManager: self._data[key] = origval break elif self.action == str(_('Edit')): - value = TextInput(_(f'Edit {origkey} :'),origval).run() + value = TextInput(_('Edit {}: ').format(origkey), origval).run() self._data[origkey] = value elif self.action == str(_('Delete')): del self._data[origkey] + + return self._data diff --git a/archinstall/lib/menu/menu.py b/archinstall/lib/menu/menu.py index d254e0f9..c34814eb 100644 --- a/archinstall/lib/menu/menu.py +++ b/archinstall/lib/menu/menu.py @@ -1,4 +1,6 @@ -from typing import Dict, List, Union, Any, TYPE_CHECKING +from dataclasses import dataclass +from enum import Enum, auto +from typing import Dict, List, Union, Any, TYPE_CHECKING, Optional from archinstall.lib.menu.simple_menu import TerminalMenu @@ -12,21 +14,49 @@ import logging if TYPE_CHECKING: _: Any + +class MenuSelectionType(Enum): + Selection = auto() + Esc = auto() + Ctrl_c = auto() + + +@dataclass +class MenuSelection: + type_: MenuSelectionType + value: Optional[Union[str, List[str]]] = None + + class Menu(TerminalMenu): + + @classmethod + def yes(cls): + return str(_('yes')) + + @classmethod + def no(cls): + return str(_('no')) + + @classmethod + def yes_no(cls): + return [cls.yes(), cls.no()] + def __init__( self, title :str, p_options :Union[List[str], Dict[str, Any]], skip :bool = True, multi :bool = False, - default_option :str = None, + default_option : Optional[str] = None, sort :bool = True, preset_values :Union[str, List[str]] = None, - cursor_index :int = None, + cursor_index : Optional[int] = None, preview_command=None, preview_size=0.75, preview_title='Info', header :Union[List[str],str] = None, + explode_on_interrupt :bool = False, + explode_warning :str = '', **kwargs ): """ @@ -66,9 +96,15 @@ class Menu(TerminalMenu): :param preview_title: Title of the preview window :type preview_title: str - param: header one or more header lines for the menu + param header: one or more header lines for the menu type param: string or list + param explode_on_interrupt: This will explicitly handle a ctrl+c instead and return that specific state + type param: bool + + param explode_warning: If explode_on_interrupt is True and this is non-empty, there will be a warning with a user confirmation displayed + type param: str + :param kwargs : any SimpleTerminal parameter """ # we guarantee the inmutability of the options outside the class. @@ -85,6 +121,8 @@ class Menu(TerminalMenu): log(f"invalid parameter at Menu() call was at <{sys._getframe(1).f_code.co_name}>",level=logging.WARNING) raise RequirementError("Menu() requires an iterable as option.") + self._default_str = str(_('(default)')) + if isinstance(p_options,dict): options = list(p_options.keys()) else: @@ -103,27 +141,40 @@ class Menu(TerminalMenu): if sort: options = sorted(options) - self.menu_options = options - self.skip = skip - self.default_option = default_option - self.multi = multi + self._menu_options = options + self._skip = skip + self._default_option = default_option + self._multi = multi + self._explode_on_interrupt = explode_on_interrupt + self._explode_warning = explode_warning + menu_title = f'\n{title}\n\n' + if header: - separator = '\n ' if not isinstance(header,(list,tuple)): - header = [header,] - if skip: - menu_title += str(_("Use ESC to skip\n")) - menu_title += separator + separator.join(header) - elif skip: - menu_title += str(_("Use ESC to skip\n\n")) + header = [header] + header = '\n'.join(header) + menu_title += f'\n{header}\n' + + action_info = '' + if skip: + action_info += str(_("Use ESC to skip")) + + if self._explode_on_interrupt: + if len(action_info) > 0: + action_info += '\n' + action_info += str(_('Use CTRL+C to reset current selection\n\n')) + + menu_title += action_info + if default_option: # if a default value was specified we move that one # to the top of the list and mark it as default as well - default = f'{default_option} (default)' - self.menu_options = [default] + [o for o in self.menu_options if default_option != o] + default = f'{default_option} {self._default_str}' + self._menu_options = [default] + [o for o in self._menu_options if default_option != o] + + self._preselection(preset_values,cursor_index) - self.preselection(preset_values,cursor_index) cursor = "> " main_menu_cursor_style = ("fg_cyan", "bold") main_menu_style = ("bg_blue", "fg_gray") @@ -131,8 +182,9 @@ class Menu(TerminalMenu): kwargs['clear_screen'] = kwargs.get('clear_screen',True) kwargs['show_search_hint'] = kwargs.get('show_search_hint',True) kwargs['cycle_cursor'] = kwargs.get('cycle_cursor',True) + super().__init__( - menu_entries=self.menu_options, + menu_entries=self._menu_options, title=menu_title, menu_cursor=cursor, menu_cursor_style=main_menu_cursor_style, @@ -146,31 +198,46 @@ class Menu(TerminalMenu): preview_command=preview_command, preview_size=preview_size, preview_title=preview_title, + explode_on_interrupt=self._explode_on_interrupt, + multi_select_select_on_accept=False, **kwargs, ) - def _show(self): - idx = self.show() + def _show(self) -> MenuSelection: + try: + idx = self.show() + except KeyboardInterrupt: + return MenuSelection(type_=MenuSelectionType.Ctrl_c) + + def check_default(elem): + if self._default_option is not None and f'{self._default_option} {self._default_str}' in elem: + return self._default_option + else: + return elem + if idx is not None: if isinstance(idx, (list, tuple)): - return [self.default_option if ' (default)' in self.menu_options[i] else self.menu_options[i] for i in idx] + results = [] + for i in idx: + option = check_default(self._menu_options[i]) + results.append(option) + return MenuSelection(type_=MenuSelectionType.Selection, value=results) else: - selected = self.menu_options[idx] - if ' (default)' in selected and self.default_option: - return self.default_option - return selected + result = check_default(self._menu_options[idx]) + return MenuSelection(type_=MenuSelectionType.Selection, value=result) else: - if self.default_option: - if self.multi: - return [self.default_option] - else: - return self.default_option - return None - - def run(self): + return MenuSelection(type_=MenuSelectionType.Esc) + + def run(self) -> MenuSelection: ret = self._show() - if ret is None and not self.skip: + if ret.type_ == MenuSelectionType.Ctrl_c: + if self._explode_on_interrupt and len(self._explode_warning) > 0: + response = Menu(self._explode_warning, Menu.yes_no(), skip=False).run() + if response.value == Menu.no(): + return self.run() + + if ret.type_ is not MenuSelectionType.Selection and not self._skip: return self.run() return ret @@ -185,15 +252,15 @@ class Menu(TerminalMenu): pos = self._menu_entries.index(value) self.set_cursor_pos(pos) - def preselection(self,preset_values :list = [],cursor_index :int = None): + def _preselection(self,preset_values :Union[str, List[str]] = [], cursor_index : Optional[int] = None): def from_preset_to_cursor(): if preset_values: # if the value is not extant return 0 as cursor index try: if isinstance(preset_values,str): - self.cursor_index = self.menu_options.index(self.preset_values) + self.cursor_index = self._menu_options.index(self.preset_values) else: # should return an error, but this is smoother - self.cursor_index = self.menu_options.index(self.preset_values[0]) + self.cursor_index = self._menu_options.index(self.preset_values[0]) except ValueError: self.cursor_index = 0 @@ -203,13 +270,13 @@ class Menu(TerminalMenu): return self.preset_values = preset_values - if self.default_option: - if isinstance(preset_values,str) and self.default_option == preset_values: - self.preset_values = f"{preset_values} (default)" - elif isinstance(preset_values,(list,tuple)) and self.default_option in preset_values: - idx = preset_values.index(self.default_option) - self.preset_values[idx] = f"{preset_values[idx]} (default)" - if cursor_index is None or not self.multi: + if self._default_option: + if isinstance(preset_values,str) and self._default_option == preset_values: + self.preset_values = f"{preset_values} {self._default_str}" + elif isinstance(preset_values,(list,tuple)) and self._default_option in preset_values: + idx = preset_values.index(self._default_option) + self.preset_values[idx] = f"{preset_values[idx]} {self._default_str}" + if cursor_index is None or not self._multi: from_preset_to_cursor() - if not self.multi: # Not supported by the infraestructure + if not self._multi: # Not supported by the infraestructure self.preset_values = None diff --git a/archinstall/lib/menu/selection_menu.py b/archinstall/lib/menu/selection_menu.py index b2f99423..57e290f1 100644 --- a/archinstall/lib/menu/selection_menu.py +++ b/archinstall/lib/menu/selection_menu.py @@ -2,23 +2,27 @@ from __future__ import annotations import logging import sys +import pathlib from typing import Callable, Any, List, Iterator, Tuple, Optional, Dict, TYPE_CHECKING -from .menu import Menu +from .menu import Menu, MenuSelectionType from ..locale_helpers import set_keyboard_language from ..output import log from ..translation import Translation +from ..hsm.fido import get_fido2_devices if TYPE_CHECKING: _: Any -def select_archinstall_language(default='English'): + +def select_archinstall_language(preset_value: str) -> Optional[Any]: """ copied from user_interaction/general_conf.py as a temporary measure """ - languages = Translation.get_all_names() - language = Menu(_('Select Archinstall language'), languages, default_option=default).run() - return language + languages = Translation.get_available_lang() + language = Menu(_('Archinstall language'), languages, preset_values=preset_value).run() + return language.value + class Selector: def __init__( @@ -91,6 +95,10 @@ class Selector: self._no_store = no_store @property + def description(self) -> str: + return self._description + + @property def dependencies(self) -> List: return self._dependencies @@ -115,7 +123,7 @@ class Selector: def update_description(self, description :str): self._description = description - def menu_text(self) -> str: + def menu_text(self, padding: int = 0) -> str: if self._description == '': # special menu option for __separator__ return '' @@ -128,14 +136,14 @@ class Selector: current = str(self._current_selection) if current: - padding = 35 - len(str(self._description)) - current = ' ' * padding + f'SET: {current}' - - return f'{self._description} {current}' + padding += 5 + description = str(self._description).ljust(padding, ' ') + current = str(_('set: {}').format(current)) + else: + description = self._description + current = '' - @property - def text(self): - return self.menu_text() + return f'{description} {current}' def set_current_selection(self, current :Optional[str]): self._current_selection = current @@ -262,8 +270,14 @@ class GeneralMenu: return preview() return None + def _get_menu_text_padding(self, entries: List[Selector]): + return max([len(str(selection.description)) for selection in entries]) + def _find_selection(self, selection_name: str) -> Tuple[str, Selector]: - option = [(k, v) for k, v in self._menu_options.items() if v.text.strip() == selection_name.strip()] + enabled_menus = self._menus_to_enable() + padding = self._get_menu_text_padding(list(enabled_menus.values())) + option = [(k, v) for k, v in self._menu_options.items() if v.menu_text(padding).strip() == selection_name.strip()] + if len(option) != 1: raise ValueError(f'Selection not found: {selection_name}') config_name = option[0][0] @@ -275,14 +289,18 @@ class GeneralMenu: # we synch all the options just in case for item in self.list_options(): self.synch(item) - self.post_callback # as all the values can vary i have to exec this callback + + self.post_callback() # as all the values can vary i have to exec this callback cursor_pos = None + while True: # Before continuing, set the preferred keyboard layout/language in the current terminal. # This will just help the user with the next following questions. self._set_kb_language() enabled_menus = self._menus_to_enable() - menu_options = [m.text for m in enabled_menus.values()] + + padding = self._get_menu_text_padding(list(enabled_menus.values())) + menu_options = [m.menu_text(padding) for m in enabled_menus.values()] selection = Menu( _('Set/Modify the below options'), @@ -291,18 +309,31 @@ class GeneralMenu: cursor_index=cursor_pos, preview_command=self._preview_display, preview_size=self.preview_size, - skip_empty_entries=True + skip_empty_entries=True, + skip=False ).run() - if selection and self.auto_cursor: - cursor_pos = menu_options.index(selection) + 1 # before the strip otherwise fails - if cursor_pos >= len(menu_options): - cursor_pos = len(menu_options) - 1 - selection = selection.strip() - if selection: - # if this calls returns false, we exit the menu. We allow for an callback for special processing on realeasing control - if not self._process_selection(selection): - break + if selection.type_ == MenuSelectionType.Selection: + value = selection.value + + if self.auto_cursor: + cursor_pos = menu_options.index(value) + 1 # before the strip otherwise fails + + # in case the new position lands on a "placeholder" we'll skip them as well + while True: + if cursor_pos >= len(menu_options): + cursor_pos = 0 + if len(menu_options[cursor_pos]) > 0: + break + cursor_pos += 1 + + value = value.strip() + + # if this calls returns false, we exit the menu + # we allow for an callback for special processing on realeasing control + if not self._process_selection(value): + break + if not self.is_context_mgr: self.__exit__() @@ -423,15 +454,41 @@ class GeneralMenu: def mandatory_overview(self) -> Tuple[int, int]: mandatory_fields = 0 mandatory_waiting = 0 - for field in self._menu_options: - option = self._menu_options[field] + for field, option in self._menu_options.items(): if option.is_mandatory(): mandatory_fields += 1 if not option.has_selection(): mandatory_waiting += 1 return mandatory_fields, mandatory_waiting - def _select_archinstall_language(self, default_lang): - language = select_archinstall_language(default_lang) - self._translation.activate(language) - return language + def _select_archinstall_language(self, preset_value: str) -> str: + language = select_archinstall_language(preset_value) + if language is not None: + self._translation.activate(language) + return language + + return preset_value + + def _select_hsm(self, preset :Optional[pathlib.Path] = None) -> Optional[pathlib.Path]: + title = _('Select which partitions to mark for formatting:') + title += '\n' + + fido_devices = get_fido2_devices() + + indexes = [] + for index, path in enumerate(fido_devices.keys()): + title += f"{index}: {path} ({fido_devices[path]['manufacturer']} - {fido_devices[path]['product']})" + indexes.append(f"{index}|{fido_devices[path]['product']}") + + title += '\n' + + choice = Menu(title, indexes, multi=False).run() + + match choice.type_: + case MenuSelectionType.Esc: return preset + case MenuSelectionType.Selection: + selection: Any = choice.value + index = int(selection.split('|',1)[0]) + return pathlib.Path(list(fido_devices.keys())[index]) + + return None diff --git a/archinstall/lib/menu/simple_menu.py b/archinstall/lib/menu/simple_menu.py index a0a241bd..947259eb 100644 --- a/archinstall/lib/menu/simple_menu.py +++ b/archinstall/lib/menu/simple_menu.py @@ -596,7 +596,8 @@ class TerminalMenu: status_bar: Optional[Union[str, Iterable[str], Callable[[str], str]]] = None, status_bar_below_preview: bool = DEFAULT_STATUS_BAR_BELOW_PREVIEW, status_bar_style: Optional[Iterable[str]] = DEFAULT_STATUS_BAR_STYLE, - title: Optional[Union[str, Iterable[str]]] = None + title: Optional[Union[str, Iterable[str]]] = None, + explode_on_interrupt: bool = False ): def extract_shortcuts_menu_entries_and_preview_arguments( entries: Iterable[str], @@ -718,6 +719,7 @@ class TerminalMenu: self._search_case_sensitive = search_case_sensitive self._search_highlight_style = tuple(search_highlight_style) if search_highlight_style is not None else () self._search_key = search_key + self._explode_on_interrupt = explode_on_interrupt self._shortcut_brackets_highlight_style = ( tuple(shortcut_brackets_highlight_style) if shortcut_brackets_highlight_style is not None else () ) @@ -1538,7 +1540,9 @@ class TerminalMenu: # Only append `next_key` if it is a printable character and the first character is not the # `search_start` key self._search.search_text += next_key - except KeyboardInterrupt: + except KeyboardInterrupt as e: + if self._explode_on_interrupt: + raise e menu_was_interrupted = True finally: reset_signal_handling() @@ -1842,6 +1846,12 @@ def get_argumentparser() -> argparse.ArgumentParser: ) parser.add_argument("-t", "--title", action="store", dest="title", help="menu title") parser.add_argument( + "--explode-on-interrupt", + action="store_true", + dest="explode_on_interrupt", + help="Instead of quitting the menu, this will raise the KeyboardInterrupt Exception", + ) + parser.add_argument( "-V", "--version", action="store_true", dest="print_version", help="print the version number and exit" ) parser.add_argument("entries", action="store", nargs="*", help="the menu entries to show") @@ -1971,6 +1981,7 @@ def main() -> None: status_bar_below_preview=args.status_bar_below_preview, status_bar_style=args.status_bar_style, title=args.title, + explode_on_interrupt=args.explode_on_interrupt, ) except (InvalidParameterCombinationError, InvalidStyleError, UnknownMenuEntryError) as e: print(str(e), file=sys.stderr) diff --git a/archinstall/lib/models/network_configuration.py b/archinstall/lib/models/network_configuration.py index 16136177..4f135da5 100644 --- a/archinstall/lib/models/network_configuration.py +++ b/archinstall/lib/models/network_configuration.py @@ -5,6 +5,7 @@ from enum import Enum from typing import List, Optional, Dict, Union, Any, TYPE_CHECKING from ..output import log +from ..storage import storage if TYPE_CHECKING: _: Any @@ -77,7 +78,9 @@ class NetworkConfigurationHandler: installation.copy_iso_network_config( enable_services=True) # Sources the ISO network configuration to the install medium. elif self._configuration.is_network_manager(): - installation.add_additional_packages("networkmanager") + installation.add_additional_packages(["networkmanager"]) + if (profile := storage['arguments'].get('profile')) and profile.is_desktop_profile: + installation.add_additional_packages(["network-manager-applet"]) installation.enable_service('NetworkManager.service') def _backwards_compability_config(self, config: Union[str,Dict[str, str]]) -> Union[List[NetworkConfiguration], NetworkConfiguration, None]: diff --git a/archinstall/lib/models/users.py b/archinstall/lib/models/users.py new file mode 100644 index 00000000..6052b73a --- /dev/null +++ b/archinstall/lib/models/users.py @@ -0,0 +1,77 @@ +from dataclasses import dataclass +from typing import Dict, List, Union, Any, TYPE_CHECKING + +if TYPE_CHECKING: + _: Any + + +@dataclass +class User: + username: str + password: str + sudo: bool + + @property + def groups(self) -> List[str]: + # this property should be transferred into a class attr instead + # if it's every going to be used + return [] + + def json(self) -> Dict[str, Any]: + return { + 'username': self.username, + '!password': self.password, + 'sudo': self.sudo + } + + def display(self) -> str: + password = '*' * len(self.password) + return f'{_("Username")}: {self.username:16} {_("Password")}: {password:16} sudo: {str(self.sudo)}' + + @classmethod + def _parse(cls, config_users: List[Dict[str, Any]]) -> List['User']: + users = [] + + for entry in config_users: + username = entry.get('username', None) + password = entry.get('!password', '') + sudo = entry.get('sudo', False) + + if username is None: + continue + + user = User(username, password, sudo) + users.append(user) + + return users + + @classmethod + def _parse_backwards_compatible(cls, config_users: Dict, sudo: bool) -> List['User']: + if len(config_users.keys()) > 0: + username = list(config_users.keys())[0] + password = config_users[username]['!password'] + + if password: + return [User(username, password, sudo)] + + return [] + + @classmethod + def parse_arguments( + cls, + config_users: Union[List[Dict[str, str]], Dict[str, str]], + config_superusers: Union[List[Dict[str, str]], Dict[str, str]] + ) -> List['User']: + users = [] + + # backwards compability + if isinstance(config_users, dict): + users += cls._parse_backwards_compatible(config_users, False) + else: + users += cls._parse(config_users) + + # backwards compability + if isinstance(config_superusers, dict): + users += cls._parse_backwards_compatible(config_superusers, True) + + return users diff --git a/archinstall/lib/output.py b/archinstall/lib/output.py index da41d16d..29b73bc4 100644 --- a/archinstall/lib/output.py +++ b/archinstall/lib/output.py @@ -2,11 +2,47 @@ import logging import os import sys from pathlib import Path -from typing import Dict, Union +from typing import Dict, Union, List, Any from .storage import storage +class FormattedOutput: + + @classmethod + def values(cls, o: Any) -> Dict[str, Any]: + if hasattr(o, 'json'): + return o.json() + else: + return o.__dict__ + + @classmethod + def as_table(cls, obj: List[Any]) -> str: + column_width: Dict[str, int] = {} + for o in obj: + for k, v in cls.values(o).items(): + column_width.setdefault(k, 0) + column_width[k] = max([column_width[k], len(str(v)), len(k)]) + + output = '' + for key, width in column_width.items(): + key = key.replace('!', '') + output += key.ljust(width) + ' | ' + + output = output[:-3] + '\n' + output += '-' * len(output) + '\n' + + for o in obj: + for k, v in cls.values(o).items(): + if '!' in k: + v = '*' * len(str(v)) + output += str(v).ljust(column_width[k]) + ' | ' + output = output[:-3] + output += '\n' + + return output + + class Journald: @staticmethod def log(message :str, level :int = logging.DEBUG) -> None: @@ -61,9 +97,11 @@ def stylize_output(text: str, *opts :str, **kwargs) -> str: 'magenta' : '5', 'cyan' : '6', 'white' : '7', - 'orange' : '8;5;208', # Extended 256-bit colors (not always supported) - 'darkorange' : '8;5;202',# https://www.lihaoyi.com/post/BuildyourownCommandLinewithANSIescapecodes.html#256-colors + 'teal' : '8;5;109', # Extended 256-bit colors (not always supported) + 'orange' : '8;5;208', # https://www.lihaoyi.com/post/BuildyourownCommandLinewithANSIescapecodes.html#256-colors + 'darkorange' : '8;5;202', 'gray' : '8;5;246', + 'grey' : '8;5;246', 'darkgray' : '8;5;240', 'lightgray' : '8;5;256' } diff --git a/archinstall/lib/plugins.py b/archinstall/lib/plugins.py index 7f920317..99e3811c 100644 --- a/archinstall/lib/plugins.py +++ b/archinstall/lib/plugins.py @@ -18,7 +18,7 @@ plugins = {} # 1: List archinstall.plugin definitions # 2: Load the plugin entrypoint # 3: Initiate the plugin and store it as .name in plugins -for plugin_definition in metadata.entry_points().get('archinstall.plugin', []): +for plugin_definition in metadata.entry_points().select(group='archinstall.plugin'): plugin_entrypoint = plugin_definition.load() try: plugins[plugin_definition.name] = plugin_entrypoint() diff --git a/archinstall/lib/profiles.py b/archinstall/lib/profiles.py index 65a30b0b..a4fbe490 100644 --- a/archinstall/lib/profiles.py +++ b/archinstall/lib/profiles.py @@ -207,6 +207,14 @@ class Profile(Script): def __repr__(self, *args :str, **kwargs :str) -> str: return f'Profile({os.path.basename(self.profile)})' + @property + def name(self) -> str: + return os.path.basename(self.profile) + + @property + def is_desktop_profile(self) -> bool: + return is_desktop_profile(repr(self)) + def install(self) -> ModuleType: # Before installing, revert any temporary changes to the namespace. # This ensures that the namespace during installation is the original initiation namespace. diff --git a/archinstall/lib/storage.py b/archinstall/lib/storage.py index 650b9c0e..dd7ddc88 100644 --- a/archinstall/lib/storage.py +++ b/archinstall/lib/storage.py @@ -23,7 +23,7 @@ storage: Dict[str, Any] = { 'MOUNT_POINT': '/mnt/archinstall', 'ENC_IDENTIFIER': 'ainst', 'DISK_TIMEOUTS' : 1, # seconds - 'DISK_RETRY_ATTEMPTS' : 20, # RETRY_ATTEMPTS * DISK_TIMEOUTS is used in disk operations + 'DISK_RETRY_ATTEMPTS' : 5, # RETRY_ATTEMPTS * DISK_TIMEOUTS is used in disk operations 'CMD_LOCALE':{'LC_ALL':'C'}, # default locale for execution commands. Can be overriden with set_cmd_locale() 'CMD_LOCALE_DEFAULT':{'LC_ALL':'C'}, # should be the same as the former. Not be used except in reset_cmd_locale() } diff --git a/archinstall/lib/systemd.py b/archinstall/lib/systemd.py index 417870da..3d2f0385 100644 --- a/archinstall/lib/systemd.py +++ b/archinstall/lib/systemd.py @@ -91,20 +91,25 @@ class Boot: log(f"The error above occured in a temporary boot-up of the installation {self.instance}", level=logging.ERROR, fg="red") shutdown = None + shutdown_exit_code = -1 try: shutdown = SysCommand(f'systemd-run --machine={self.container_name} --pty shutdown now') except SysCallError as error: - if error.exit_code == 256: - pass + shutdown_exit_code = error.exit_code + # if error.exit_code == 256: + # pass while self.session.is_alive(): time.sleep(0.25) - if self.session.exit_code == 0 or (shutdown and shutdown.exit_code == 0): + if shutdown: + shutdown_exit_code = shutdown.exit_code + + if self.session.exit_code == 0 or shutdown_exit_code == 0: storage['active_boot'] = None else: - raise SysCallError(f"Could not shut down temporary boot of {self.instance}: {shutdown}", exit_code=shutdown.exit_code) + raise SysCallError(f"Could not shut down temporary boot of {self.instance}: {self.session.exit_code}/{shutdown_exit_code}", exit_code=next(filter(bool, [self.session.exit_code, shutdown_exit_code]))) def __iter__(self) -> Iterator[str]: if self.session: diff --git a/archinstall/lib/translation.py b/archinstall/lib/translation.py index 74ffd691..1a0e94e4 100644 --- a/archinstall/lib/translation.py +++ b/archinstall/lib/translation.py @@ -5,14 +5,14 @@ import os import gettext from pathlib import Path -from typing import List, Dict, Any, TYPE_CHECKING +from typing import List, Dict, Any, TYPE_CHECKING, Tuple from .exceptions import TranslationError if TYPE_CHECKING: _: Any -class Languages: +class LanguageDefinitions: def __init__(self): self._mappings = self._get_language_mappings() @@ -70,11 +70,11 @@ class Translation: def __init__(self, locales_dir): self._languages = {} - for name in self.get_all_names(): + for names in self._get_translation_lang(): try: - self._languages[name] = gettext.translation('base', localedir=locales_dir, languages=[name]) + self._languages[names[0]] = gettext.translation('base', localedir=locales_dir, languages=names) except FileNotFoundError as error: - raise TranslationError(f"Could not locate language file for '{name}': {error}") + raise TranslationError(f"Could not locate language file for '{names}': {error}") def activate(self, name): if language := self._languages.get(name, None): @@ -94,10 +94,19 @@ class Translation: return locales_dir @classmethod - def get_all_names(cls) -> List[str]: + def _defined_languages(cls) -> List[str]: locales_dir = cls.get_locales_dir() filenames = os.listdir(locales_dir) - def_languages = filter(lambda x: len(x) == 2, filenames) + return list(filter(lambda x: len(x) == 2, filenames)) - languages = Languages() + @classmethod + def _get_translation_lang(cls) -> List[Tuple[str, str]]: + def_languages = cls._defined_languages() + languages = LanguageDefinitions() + return [(languages.get_language(lang), lang) for lang in def_languages] + + @classmethod + def get_available_lang(cls) -> List[str]: + def_languages = cls._defined_languages() + languages = LanguageDefinitions() return [languages.get_language(lang) for lang in def_languages] diff --git a/archinstall/lib/udev/__init__.py b/archinstall/lib/udev/__init__.py new file mode 100644 index 00000000..86c8cc29 --- /dev/null +++ b/archinstall/lib/udev/__init__.py @@ -0,0 +1 @@ +from .udevadm import udevadm_info
\ No newline at end of file diff --git a/archinstall/lib/udev/udevadm.py b/archinstall/lib/udev/udevadm.py new file mode 100644 index 00000000..84ec9cfd --- /dev/null +++ b/archinstall/lib/udev/udevadm.py @@ -0,0 +1,17 @@ +import typing +import pathlib +from ..general import SysCommand + +def udevadm_info(path :pathlib.Path) -> typing.Dict[str, str]: + if path.resolve().exists() is False: + return {} + + result = SysCommand(f"udevadm info {path.resolve()}") + data = {} + for line in result: + if b': ' in line and b'=' in line: + _, obj = line.split(b': ', 1) + key, value = obj.split(b'=', 1) + data[key.decode('UTF-8').lower()] = value.decode('UTF-8').strip() + + return data
\ No newline at end of file diff --git a/archinstall/lib/user_interaction/__init__.py b/archinstall/lib/user_interaction/__init__.py index b0174d94..8aba4b4d 100644 --- a/archinstall/lib/user_interaction/__init__.py +++ b/archinstall/lib/user_interaction/__init__.py @@ -1,5 +1,5 @@ from .save_conf import save_config -from .manage_users_conf import ask_for_superuser_account, ask_for_additional_users +from .manage_users_conf import ask_for_additional_users from .backwards_compatible_conf import generic_select, generic_multi_select from .locale_conf import select_locale_lang, select_locale_enc from .system_conf import select_kernel, select_harddrives, select_driver, ask_for_bootloader, ask_for_swap diff --git a/archinstall/lib/user_interaction/disk_conf.py b/archinstall/lib/user_interaction/disk_conf.py index 9238a766..371d052f 100644 --- a/archinstall/lib/user_interaction/disk_conf.py +++ b/archinstall/lib/user_interaction/disk_conf.py @@ -1,18 +1,18 @@ from __future__ import annotations -from typing import Any, Dict, TYPE_CHECKING +from typing import Any, Dict, TYPE_CHECKING, Optional from .partitioning_conf import manage_new_and_existing_partitions, get_default_partition_layout from ..disk import BlockDevice from ..exceptions import DiskError from ..menu import Menu -from ..output import log +from ..menu.menu import MenuSelectionType if TYPE_CHECKING: _: Any -def ask_for_main_filesystem_format(advanced_options=False): +def ask_for_main_filesystem_format(advanced_options=False) -> str: options = {'btrfs': 'btrfs', 'ext4': 'ext4', 'xfs': 'xfs', 'f2fs': 'f2fs'} advanced = {'ntfs': 'ntfs'} @@ -22,7 +22,7 @@ def ask_for_main_filesystem_format(advanced_options=False): prompt = _('Select which filesystem your main partition should use') choice = Menu(prompt, options, skip=False).run() - return choice + return choice.value def select_individual_blockdevice_usage(block_devices: list) -> Dict[str, Any]: @@ -30,27 +30,36 @@ def select_individual_blockdevice_usage(block_devices: list) -> Dict[str, Any]: for device in block_devices: layout = manage_new_and_existing_partitions(device) - result[device.path] = layout return result -def select_disk_layout(block_devices: list, advanced_options=False) -> Dict[str, Any]: +def select_disk_layout(preset: Optional[Dict[str, Any]], block_devices: list, advanced_options=False) -> Optional[Dict[str, Any]]: wipe_mode = str(_('Wipe all selected drives and use a best-effort default partition layout')) custome_mode = str(_('Select what to do with each individual drive (followed by partition usage)')) modes = [wipe_mode, custome_mode] - print(modes) - mode = Menu(_('Select what you wish to do with the selected block devices'), modes, skip=False).run() + warning = str(_('Are you sure you want to reset this setting?')) + + choice = Menu( + _('Select what you wish to do with the selected block devices'), + modes, + explode_on_interrupt=True, + explode_warning=warning + ).run() - if mode == wipe_mode: - return get_default_partition_layout(block_devices, advanced_options) - else: - return select_individual_blockdevice_usage(block_devices) + match choice.type_: + case MenuSelectionType.Esc: return preset + case MenuSelectionType.Ctrl_c: return None + case MenuSelectionType.Selection: + if choice.value == wipe_mode: + return get_default_partition_layout(block_devices, advanced_options) + else: + return select_individual_blockdevice_usage(block_devices) -def select_disk(dict_o_disks: Dict[str, BlockDevice]) -> BlockDevice: +def select_disk(dict_o_disks: Dict[str, BlockDevice]) -> Optional[BlockDevice]: """ Asks the user to select a harddrive from the `dict_o_disks` selection. Usually this is combined with :ref:`archinstall.list_drives`. @@ -63,19 +72,15 @@ def select_disk(dict_o_disks: Dict[str, BlockDevice]) -> BlockDevice: """ drives = sorted(list(dict_o_disks.keys())) if len(drives) >= 1: - for index, drive in enumerate(drives): - print( - f"{index}: {drive} ({dict_o_disks[drive]['size'], dict_o_disks[drive].device, dict_o_disks[drive]['label']})" - ) + title = str(_('You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)')) + '\n' + title += str(_('Select one of the disks or skip and use /mnt as default')) - log("You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)", - fg="yellow") + choice = Menu(title, drives).run() - drive = Menu('Select one of the disks or skip and use "/mnt" as default"', drives).run() - if not drive: - return drive + if choice.type_ == MenuSelectionType.Esc: + return None - drive = dict_o_disks[drive] + drive = dict_o_disks[choice.value] return drive raise DiskError('select_disk() requires a non-empty dictionary of disks to select from.') diff --git a/archinstall/lib/user_interaction/general_conf.py b/archinstall/lib/user_interaction/general_conf.py index c42e9e27..d4dc60db 100644 --- a/archinstall/lib/user_interaction/general_conf.py +++ b/archinstall/lib/user_interaction/general_conf.py @@ -3,6 +3,9 @@ from __future__ import annotations import logging from typing import List, Any, Optional, Dict, TYPE_CHECKING +import archinstall + +from ..menu.menu import MenuSelectionType from ..menu.text_input import TextInput from ..locale_helpers import list_keyboard_languages, list_timezones @@ -22,11 +25,12 @@ def ask_ntp(preset: bool = True) -> bool: prompt = str(_('Would you like to use automatic time synchronization (NTP) with the default time servers?\n')) prompt += str(_('Hardware time and other post-configuration steps might be required in order for NTP to work.\nFor more information, please check the Arch wiki')) if preset: - preset_val = 'yes' + preset_val = Menu.yes() else: - preset_val = 'no' - choice = Menu(prompt, ['yes', 'no'], skip=False, preset_values=preset_val, default_option='yes').run() - return False if choice == 'no' else True + preset_val = Menu.no() + choice = Menu(prompt, Menu.yes_no(), skip=False, preset_values=preset_val, default_option=Menu.yes()).run() + + return False if choice.value == Menu.no() else True def ask_hostname(preset: str = None) -> str: @@ -38,23 +42,31 @@ def ask_for_a_timezone(preset: str = None) -> str: timezones = list_timezones() default = 'UTC' - selected_tz = Menu(_('Select a timezone'), - list(timezones), - skip=False, - preset_values=preset, - default_option=default).run() + choice = Menu( + _('Select a timezone'), + list(timezones), + preset_values=preset, + default_option=default + ).run() - return selected_tz + match choice.type_: + case MenuSelectionType.Esc: return preset + case MenuSelectionType.Selection: return choice.value def ask_for_audio_selection(desktop: bool = True, preset: str = None) -> str: - audio = 'pipewire' if desktop else 'none' - choices = ['pipewire', 'pulseaudio'] if desktop else ['pipewire', 'pulseaudio', 'none'] - selected_audio = Menu(_('Choose an audio server'), choices, preset_values=preset, default_option=audio, skip=False).run() - return selected_audio + no_audio = str(_('No audio server')) + choices = ['pipewire', 'pulseaudio'] if desktop else ['pipewire', 'pulseaudio', no_audio] + default = 'pipewire' if desktop else no_audio + + choice = Menu(_('Choose an audio server'), choices, preset_values=preset, default_option=default).run() + match choice.type_: + case MenuSelectionType.Esc: return preset + case MenuSelectionType.Selection: return choice.value -def select_language(default_value: str, preset_value: str = None) -> str: + +def select_language(preset_value: str = None) -> str: """ Asks the user to select a language Usually this is combined with :ref:`archinstall.list_keyboard_languages`. @@ -64,16 +76,19 @@ def select_language(default_value: str, preset_value: str = None) -> str: """ kb_lang = list_keyboard_languages() # sort alphabetically and then by length - # it's fine if the list is big because the Menu - # allows for searching anyways sorted_kb_lang = sorted(sorted(list(kb_lang)), key=len) - selected_lang = Menu(_('Select Keyboard layout'), - sorted_kb_lang, - default_option=default_value, - preset_values=preset_value, - sort=False).run() - return selected_lang + selected_lang = Menu( + _('Select keyboard layout'), + sorted_kb_lang, + preset_values=preset_value, + sort=False + ).run() + + if selected_lang.value is None: + return preset_value + + return selected_lang.value def select_mirror_regions(preset_values: Dict[str, Any] = {}) -> Dict[str, Any]: @@ -89,24 +104,27 @@ def select_mirror_regions(preset_values: Dict[str, Any] = {}) -> Dict[str, Any]: else: preselected = list(preset_values.keys()) mirrors = list_mirrors() - selected_mirror = Menu(_('Select one of the regions to download packages from'), - list(mirrors.keys()), - preset_values=preselected, - multi=True).run() + selected_mirror = Menu( + _('Select one of the regions to download packages from'), + list(mirrors.keys()), + preset_values=preselected, + multi=True, + explode_on_interrupt=True + ).run() - if selected_mirror is not None: - return {selected: mirrors[selected] for selected in selected_mirror} - - return {} + match selected_mirror.type_: + case MenuSelectionType.Ctrl_c: return {} + case MenuSelectionType.Esc: return preset_values + case _: return {selected: mirrors[selected] for selected in selected_mirror.value} def select_archinstall_language(default='English'): - languages = Translation.get_all_names() - language = Menu(_('Select Archinstall language'), languages, default_option=default).run() + languages = Translation.get_available_lang() + language = Menu(_('Archinstall language'), languages, default_option=default).run() return language -def select_profile() -> Optional[Profile]: +def select_profile(preset) -> Optional[Profile]: """ # Asks the user to select a profile from the available profiles. # @@ -124,13 +142,27 @@ def select_profile() -> Optional[Profile]: options[option] = profile title = _('This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments') - - selection = Menu(title=title, p_options=list(options.keys())).run() - - if selection is not None: - return options[selection] - - return None + warning = str(_('Are you sure you want to reset this setting?')) + + selection = Menu( + title=title, + p_options=list(options.keys()), + explode_on_interrupt=True, + explode_warning=warning + ).run() + + match selection.type_: + case MenuSelectionType.Selection: + return options[selection.value] if selection.value is not None else None + case MenuSelectionType.Ctrl_c: + archinstall.storage['profile_minimal'] = False + archinstall.storage['_selected_servers'] = [] + archinstall.storage['_desktop_profile'] = None + archinstall.arguments['desktop-environment'] = None + archinstall.arguments['gfx_driver_packages'] = None + return None + case MenuSelectionType.Esc: + return None def ask_additional_packages_to_install(pre_set_packages: List[str] = []) -> List[str]: @@ -171,14 +203,16 @@ def select_additional_repositories(preset: List[str]) -> List[str]: repositories = ["multilib", "testing"] - additional_repositories = Menu(_('Choose which optional additional repositories to enable'), - repositories, - sort=False, - multi=True, - preset_values=preset, - default_option=[]).run() - - if additional_repositories is not None: - return additional_repositories - - return [] + choice = Menu( + _('Choose which optional additional repositories to enable'), + repositories, + sort=False, + multi=True, + preset_values=preset, + explode_on_interrupt=True + ).run() + + match choice.type_: + case MenuSelectionType.Esc: return preset + case MenuSelectionType.Ctrl_c: return [] + case MenuSelectionType.Selection: return choice.value diff --git a/archinstall/lib/user_interaction/locale_conf.py b/archinstall/lib/user_interaction/locale_conf.py index d48018cf..15720064 100644 --- a/archinstall/lib/user_interaction/locale_conf.py +++ b/archinstall/lib/user_interaction/locale_conf.py @@ -4,32 +4,39 @@ from typing import Any, TYPE_CHECKING from ..locale_helpers import list_locales from ..menu import Menu +from ..menu.menu import MenuSelectionType if TYPE_CHECKING: _: Any -def select_locale_lang(default: str, preset: str = None) -> str: +def select_locale_lang(preset: str = None) -> str: locales = list_locales() locale_lang = set([locale.split()[0] for locale in locales]) - selected_locale = Menu(_('Choose which locale language to use'), - locale_lang, - sort=True, - preset_values=preset, - default_option=default).run() + selected_locale = Menu( + _('Choose which locale language to use'), + list(locale_lang), + sort=True, + preset_values=preset + ).run() - return selected_locale + match selected_locale.type_: + case MenuSelectionType.Selection: return selected_locale.value + case MenuSelectionType.Esc: return preset -def select_locale_enc(default: str, preset: str = None) -> str: +def select_locale_enc(preset: str = None) -> str: locales = list_locales() locale_enc = set([locale.split()[1] for locale in locales]) - selected_locale = Menu(_('Choose which locale encoding to use'), - locale_enc, - sort=True, - preset_values=preset, - default_option=default).run() + selected_locale = Menu( + _('Choose which locale encoding to use'), + list(locale_enc), + sort=True, + preset_values=preset + ).run() - return selected_locale + match selected_locale.type_: + case MenuSelectionType.Selection: return selected_locale.value + case MenuSelectionType.Esc: return preset diff --git a/archinstall/lib/user_interaction/manage_users_conf.py b/archinstall/lib/user_interaction/manage_users_conf.py index a6ff3111..567a2964 100644 --- a/archinstall/lib/user_interaction/manage_users_conf.py +++ b/archinstall/lib/user_interaction/manage_users_conf.py @@ -1,14 +1,12 @@ from __future__ import annotations -import logging import re -from typing import Any, Dict, TYPE_CHECKING, List +from typing import Any, Dict, TYPE_CHECKING, List, Optional +from .utils import get_password from ..menu import Menu from ..menu.list_manager import ListManager -from ..output import log -from ..storage import storage -from .utils import get_password +from ..models.users import User if TYPE_CHECKING: _: Any @@ -19,7 +17,7 @@ class UserList(ListManager): subclass of ListManager for the managing of user accounts """ - def __init__(self, prompt: str, lusers: dict, sudo: bool = None): + def __init__(self, prompt: str, lusers: List[User]): """ param: prompt type: str @@ -27,140 +25,83 @@ class UserList(ListManager): type: Dict param: sudo. boolean to determine if we handle superusers or users. If None handles both types """ - self.sudo = sudo - self.actions = [ + self._actions = [ str(_('Add a user')), str(_('Change password')), str(_('Promote/Demote user')), str(_('Delete User')) ] - super().__init__(prompt, lusers, self.actions, self.actions[0]) - - def reformat(self, data: Any) -> List[Any]: - def format_element(elem :str): - # secret gives away the length of the password - if data[elem].get('!password'): - pwd = '*' * 16 - else: - pwd = '' - if data[elem].get('sudoer'): - super_user = 'Superuser' - else: - super_user = ' ' - return f"{elem:16}: password {pwd:16} {super_user}" + super().__init__(prompt, lusers, self._actions, self._actions[0]) - return list(map(lambda x: format_element(x), data)) + def reformat(self, data: List[User]) -> Dict[str, User]: + return {e.display(): e for e in data} def action_list(self): - if self.target: - active_user = list(self.target.keys())[0] - else: - active_user = None - sudoer = self.target[active_user].get('sudoer', False) - if self.sudo is None: - return self.actions - if self.sudo and sudoer: - return self.actions - elif self.sudo and not sudoer: - return [self.actions[2]] - elif not self.sudo and sudoer: - return [self.actions[2]] + active_user = self.target if self.target else None + + if active_user is None: + return [self._actions[0]] else: - return self.actions + return self._actions[1:] - def exec_action(self, data: Any): + def exec_action(self, data: List[User]) -> List[User]: if self.target: - active_user = list(self.target.keys())[0] + active_user = self.target else: active_user = None - if self.action == self.actions[0]: # add - new_user = self.add_user() - # no unicity check, if exists will be replaced - data.update(new_user) - elif self.action == self.actions[1]: # change password - data[active_user]['!password'] = get_password( - prompt=str(_('Password for user "{}": ').format(active_user))) - elif self.action == self.actions[2]: # promote/demote - data[active_user]['sudoer'] = not data[active_user]['sudoer'] - elif self.action == self.actions[3]: # delete - del data[active_user] + if self.action == self._actions[0]: # add + new_user = self._add_user() + if new_user is not None: + # in case a user with the same username as an existing user + # was created we'll replace the existing one + data = [d for d in data if d.username != new_user.username] + data += [new_user] + elif self.action == self._actions[1]: # change password + prompt = str(_('Password for user "{}": ').format(active_user.username)) + new_password = get_password(prompt=prompt) + if new_password: + user = next(filter(lambda x: x == active_user, data), 1) + user.password = new_password + elif self.action == self._actions[2]: # promote/demote + user = next(filter(lambda x: x == active_user, data), 1) + user.sudo = False if user.sudo else True + elif self.action == self._actions[3]: # delete + data = [d for d in data if d != active_user] + + return data def _check_for_correct_username(self, username: str) -> bool: if re.match(r'^[a-z_][a-z0-9_-]*\$?$', username) and len(username) <= 32: return True - log("The username you entered is invalid. Try again", level=logging.WARNING, fg='red') return False - def add_user(self): + def _add_user(self) -> Optional[User]: print(_('\nDefine a new user\n')) - prompt = str(_("User Name : ")) + prompt = str(_('Enter username (leave blank to skip): ')) + while True: - userid = input(prompt).strip(' ') - if not userid: - return {} # end - if not self._check_for_correct_username(userid): - pass + username = input(prompt).strip(' ') + if not username: + return None + if not self._check_for_correct_username(username): + prompt = str(_("The username you entered is invalid. Try again")) + '\n' + prompt else: break - if self.sudo: - sudoer = True - elif self.sudo is not None and not self.sudo: - sudoer = False - else: - sudoer = False - sudo_choice = Menu(str(_('Should {} be a superuser (sudoer)?')).format(userid), ['yes', 'no'], - skip=False, - preset_values='yes' if sudoer else 'no', - default_option='no').run() - sudoer = True if sudo_choice == 'yes' else False - - password = get_password(prompt=str(_('Password for user "{}": ').format(userid))) - - return {userid: {"!password": password, "sudoer": sudoer}} - - -def manage_users(prompt: str, sudo: bool) -> tuple[dict, dict]: - # TODO Filtering and some kind of simpler code - lusers = {} - if storage['arguments'].get('!superusers', {}): - lusers.update({ - uid: { - '!password': storage['arguments']['!superusers'][uid].get('!password'), - 'sudoer': True - } - for uid in storage['arguments'].get('!superusers', {}) - }) - if storage['arguments'].get('!users', {}): - lusers.update({ - uid: { - '!password': storage['arguments']['!users'][uid].get('!password'), - 'sudoer': False - } - for uid in storage['arguments'].get('!users', {}) - }) - # processing - lusers = UserList(prompt, lusers, sudo).run() - # return data - superusers = { - uid: { - '!password': lusers[uid].get('!password') - } - for uid in lusers if lusers[uid].get('sudoer', False) - } - users = {uid: {'!password': lusers[uid].get('!password')} for uid in lusers if not lusers[uid].get('sudoer', False)} - storage['arguments']['!superusers'] = superusers - storage['arguments']['!users'] = users - return superusers, users - - -def ask_for_superuser_account(prompt: str) -> Dict[str, Dict[str, str]]: - prompt = prompt if prompt else str(_('Define users with sudo privilege, by username: ')) - superusers, dummy = manage_users(prompt, sudo=True) - return superusers - - -def ask_for_additional_users(prompt: str = '') -> Dict[str, Dict[str, str | None]]: - prompt = prompt if prompt else _('Any additional users to install (leave blank for no users): ') - dummy, users = manage_users(prompt, sudo=False) + + password = get_password(prompt=str(_('Password for user "{}": ').format(username))) + + choice = Menu( + str(_('Should "{}" be a superuser (sudo)?')).format(username), Menu.yes_no(), + skip=False, + default_option=Menu.no() + ).run() + + sudo = True if choice.value == Menu.yes() else False + return User(username, password, sudo) + + +def ask_for_additional_users(prompt: str = '', defined_users: List[User] = []) -> List[User]: + prompt = prompt if prompt else _('Enter username (leave blank to skip): ') + users = UserList(prompt, defined_users).run() return users diff --git a/archinstall/lib/user_interaction/network_conf.py b/archinstall/lib/user_interaction/network_conf.py index 80c9106b..5154d8b1 100644 --- a/archinstall/lib/user_interaction/network_conf.py +++ b/archinstall/lib/user_interaction/network_conf.py @@ -4,6 +4,7 @@ import ipaddress import logging from typing import Any, Optional, TYPE_CHECKING, List, Union +from ..menu.menu import MenuSelectionType from ..menu.text_input import TextInput from ..models.network_configuration import NetworkConfiguration, NicType @@ -63,11 +64,17 @@ class ManualNetworkConfig(ListManager): elif self.action == self._action_delete: del data[iface_name] - def _select_iface(self, existing_ifaces: List[str]) -> Optional[str]: + return data + + def _select_iface(self, existing_ifaces: List[str]) -> Optional[Any]: all_ifaces = list_interfaces().values() available = set(all_ifaces) - set(existing_ifaces) - iface = Menu(str(_('Select interface to add')), list(available), skip=True).run() - return iface + choice = Menu(str(_('Select interface to add')), list(available), skip=True).run() + + if choice.type_ == MenuSelectionType.Esc: + return None + + return choice.value def _edit_iface(self, edit_iface :NetworkConfiguration): iface_name = edit_iface.iface @@ -75,9 +82,9 @@ class ManualNetworkConfig(ListManager): default_mode = 'DHCP (auto detect)' prompt = _('Select which mode to configure for "{}" or skip to use default mode "{}"').format(iface_name, default_mode) - mode = Menu(prompt, modes, default_option=default_mode).run() + mode = Menu(prompt, modes, default_option=default_mode, skip=False).run() - if mode == 'IP (static)': + if mode.value == 'IP (static)': while 1: prompt = _('Enter the IP and subnet for {} (example: 192.168.0.5/24): ').format(iface_name) ip = TextInput(prompt, edit_iface.ip).run().strip() @@ -89,14 +96,14 @@ class ManualNetworkConfig(ListManager): log("You need to enter a valid IP in IP-config mode.", level=logging.WARNING, fg='red') # Implemented new check for correct gateway IP address + gateway = None + while 1: - gateway = TextInput(_('Enter your gateway (router) IP address or leave blank for none: '), + gateway_input = TextInput(_('Enter your gateway (router) IP address or leave blank for none: '), edit_iface.gateway).run().strip() try: - if len(gateway) == 0: - gateway = None - else: - ipaddress.ip_address(gateway) + if len(gateway_input) > 0: + ipaddress.ip_address(gateway_input) break except ValueError: log("You need to enter a valid gateway (router) IP address.", level=logging.WARNING, fg='red') @@ -107,6 +114,7 @@ class ManualNetworkConfig(ListManager): display_dns = None dns_input = TextInput(_('Enter your DNS servers (space separated, blank for none): '), display_dns).run().strip() + dns = [] if len(dns_input): dns = dns_input.split(' ') @@ -135,23 +143,28 @@ def ask_to_configure_network(preset: Union[None, NetworkConfiguration, List[Netw elif preset.type == 'network_manager': cursor_idx = 1 - nic = Menu(_( - 'Select one network interface to configure'), + warning = str(_('Are you sure you want to reset this setting?')) + + choice = Menu( + _('Select one network interface to configure'), list(network_options.values()), cursor_index=cursor_idx, - sort=False + sort=False, + explode_on_interrupt=True, + explode_warning=warning ).run() - if not nic: - return preset + match choice.type_: + case MenuSelectionType.Esc: return preset + case MenuSelectionType.Ctrl_c: return None - if nic == network_options['none']: + if choice.value == network_options['none']: return None - elif nic == network_options['iso_config']: + elif choice.value == network_options['iso_config']: return NetworkConfiguration(NicType.ISO) - elif nic == network_options['network_manager']: + elif choice.value == network_options['network_manager']: return NetworkConfiguration(NicType.NM) - elif nic == network_options['manual']: + elif choice.value == network_options['manual']: manual = ManualNetworkConfig('Configure interfaces', preset) return manual.run_manual() diff --git a/archinstall/lib/user_interaction/partitioning_conf.py b/archinstall/lib/user_interaction/partitioning_conf.py index af1d224f..bfff5705 100644 --- a/archinstall/lib/user_interaction/partitioning_conf.py +++ b/archinstall/lib/user_interaction/partitioning_conf.py @@ -1,12 +1,13 @@ from __future__ import annotations -from typing import List, Any, Dict, Union, TYPE_CHECKING, Callable +import copy +from typing import List, Any, Dict, Union, TYPE_CHECKING, Callable, Optional from ..menu import Menu +from ..menu.menu import MenuSelectionType from ..output import log from ..disk.validators import fs_types -from ..disk.helpers import has_mountpoint if TYPE_CHECKING: from ..disk import BlockDevice @@ -19,9 +20,9 @@ def partition_overlap(partitions: list, start: str, end: str) -> bool: return False -def _current_partition_layout(partitions: List[Partition], with_idx: bool = False) -> str: +def current_partition_layout(partitions: List[Dict[str, Any]], with_idx: bool = False, with_title: bool = True) -> str: - def do_padding(name, max_len): + def do_padding(name: str, max_len: int): spaces = abs(len(str(name)) - max_len) + 2 pad_left = int(spaces / 2) pad_right = spaces - pad_left @@ -61,39 +62,54 @@ def _current_partition_layout(partitions: List[Partition], with_idx: bool = Fals current_layout += f'{row[:-1]}\n' - title = str(_('Current partition layout')) - return f'\n\n{title}:\n\n{current_layout}' + if with_title: + title = str(_('Current partition layout')) + return f'\n\n{title}:\n\n{current_layout}' + return current_layout -def select_partition(title :str, partitions :List[Partition], multiple :bool = False, filter :Callable = None) -> Union[int, List[int], None]: + +def _get_partitions(partitions :List[Partition], filter_ :Callable = None) -> List[str]: """ filter allows to filter out the indexes once they are set. Should return True if element is to be included """ partition_indexes = [] for i in range(len(partitions)): - if filter: - if filter(partitions[i]): + if filter_: + if filter_(partitions[i]): partition_indexes.append(str(i)) else: partition_indexes.append(str(i)) + + return partition_indexes + + +def select_partition( + title :str, + partitions :List[Partition], + multiple :bool = False, + filter_ :Callable = None +) -> Optional[int, List[int]]: + partition_indexes = _get_partitions(partitions, filter_) + if len(partition_indexes) == 0: return None - # old code without filter - # partition_indexes = list(map(str, range(len(partitions)))) - partition = Menu(title, partition_indexes, multi=multiple).run() + choice = Menu(title, partition_indexes, multi=multiple).run() - if partition is not None: - if isinstance(partition, list): - return [int(p) for p in partition] - else: - return int(partition) + if choice.type_ == MenuSelectionType.Esc: + return None - return None + if isinstance(choice.value, list): + return [int(p) for p in choice.value] + else: + return int(choice.value) -def get_default_partition_layout(block_devices: Union['BlockDevice', List['BlockDevice']], - advanced_options: bool = False) -> Dict[str, Any]: +def get_default_partition_layout( + block_devices: Union['BlockDevice', List['BlockDevice']], + advanced_options: bool = False +) -> Optional[Dict[str, Any]]: from ..disk import suggest_single_disk_layout, suggest_multi_disk_layout if len(block_devices) == 1: @@ -107,14 +123,15 @@ def select_individual_blockdevice_usage(block_devices: list) -> Dict[str, Any]: for device in block_devices: layout = manage_new_and_existing_partitions(device) - result[device.path] = layout return result -def manage_new_and_existing_partitions(block_device: 'BlockDevice') -> Dict[str, Any]: # noqa: max-complexity: 50 +def manage_new_and_existing_partitions(block_device: 'BlockDevice') -> Dict[str, Any]: # noqa: max-complexity: 50 block_device_struct = {"partitions": [partition.__dump__() for partition in block_device.partitions.values()]} + original_layout = copy.deepcopy(block_device_struct) + # Test code: [part.__dump__() for part in block_device.partitions.values()] # TODO: Squeeze in BTRFS subvolumes here @@ -129,11 +146,13 @@ def manage_new_and_existing_partitions(block_device: 'BlockDevice') -> Dict[str, mark_bootable = str(_('Mark/Unmark a partition as bootable (automatic for /boot)')) set_filesystem_partition = str(_('Set desired filesystem for a partition')) set_btrfs_subvolumes = str(_('Set desired subvolumes on a btrfs partition')) + save_and_exit = str(_('Save and exit')) + cancel = str(_('Cancel')) while True: modes = [new_partition, suggest_partition_layout] - if len(block_device_struct['partitions']): + if len(block_device_struct['partitions']) > 0: modes += [ delete_partition, delete_all_partitions, @@ -143,20 +162,31 @@ def manage_new_and_existing_partitions(block_device: 'BlockDevice') -> Dict[str, mark_bootable, mark_compressed, set_filesystem_partition, - set_btrfs_subvolumes, ] + indexes = _get_partitions( + block_device_struct["partitions"], + filter_=lambda x: True if x.get('filesystem', {}).get('format') == 'btrfs' else False + ) + + if len(indexes) > 0: + modes += [set_btrfs_subvolumes] + title = _('Select what to do with\n{}').format(block_device) # show current partition layout: if len(block_device_struct["partitions"]): - title += _current_partition_layout(block_device_struct['partitions']) + '\n' + title += current_partition_layout(block_device_struct['partitions']) + '\n' - task = Menu(title, modes, sort=False).run() + modes += [save_and_exit, cancel] - if not task: - break + task = Menu(title, modes, sort=False, skip=False).run() + task = task.value + if task == cancel: + return original_layout + elif task == save_and_exit: + break if task == new_partition: from ..disk import valid_parted_position @@ -165,7 +195,10 @@ def manage_new_and_existing_partitions(block_device: 'BlockDevice') -> Dict[str, # # https://www.gnu.org/software/parted/manual/html_node/mklabel.html # name = input("Enter a desired name for the partition: ").strip() - fstype = Menu(_('Enter a desired filesystem type for the partition'), fs_types(), skip=False).run() + fs_choice = Menu(_('Enter a desired filesystem type for the partition'), fs_types()).run() + + if fs_choice.type_ == MenuSelectionType.Esc: + continue prompt = _('Enter the start sector (percentage or block number, default: {}): ').format( block_device.first_free_sector) @@ -197,7 +230,7 @@ def manage_new_and_existing_partitions(block_device: 'BlockDevice') -> Dict[str, "mountpoint": None, "wipe": True, "filesystem": { - "format": fstype + "format": fs_choice.value } }) else: @@ -208,18 +241,15 @@ def manage_new_and_existing_partitions(block_device: 'BlockDevice') -> Dict[str, from ..disk import suggest_single_disk_layout if len(block_device_struct["partitions"]): - prompt = _('{} contains queued partitions, this will remove those, are you sure?').format(block_device) - choice = Menu(prompt, ['yes', 'no'], default_option='no').run() + prompt = _('{}\ncontains queued partitions, this will remove those, are you sure?').format(block_device) + choice = Menu(prompt, Menu.yes_no(), default_option=Menu.no(), skip=False).run() - if choice == 'no': + if choice.value == Menu.no(): continue block_device_struct.update(suggest_single_disk_layout(block_device)[block_device.path]) - - elif task is None: - return block_device_struct else: - current_layout = _current_partition_layout(block_device_struct['partitions'], with_idx=True) + current_layout = current_partition_layout(block_device_struct['partitions'], with_idx=True) if task == delete_partition: title = _('{}\n\nSelect by index which partitions to delete').format(current_layout) @@ -243,15 +273,14 @@ def manage_new_and_existing_partitions(block_device: 'BlockDevice') -> Dict[str, block_device_struct["partitions"][partition]["filesystem"]["mount_options"].append("compress=zstd") elif task == delete_all_partitions: block_device_struct["partitions"] = [] + block_device_struct["wipe"] = True elif task == assign_mount_point: title = _('{}\n\nSelect by index which partition to mount where').format(current_layout) partition = select_partition(title, block_device_struct["partitions"]) if partition is not None: - print( - _(' * Partition mount-points are relative to inside the installation, the boot would be /boot as an example.')) - mountpoint = input( - _('Select where to mount partition (leave blank to remove mountpoint): ')).strip() + print(_(' * Partition mount-points are relative to inside the installation, the boot would be /boot as an example.')) + mountpoint = input(_('Select where to mount partition (leave blank to remove mountpoint): ')).strip() if len(mountpoint): block_device_struct["partitions"][partition]['mountpoint'] = mountpoint @@ -273,14 +302,13 @@ def manage_new_and_existing_partitions(block_device: 'BlockDevice') -> Dict[str, if not block_device_struct["partitions"][partition].get('filesystem', None): block_device_struct["partitions"][partition]['filesystem'] = {} - fstype = Menu(_('Enter a desired filesystem type for the partition'), fs_types(), - skip=False).run() + fs_choice = Menu(_('Enter a desired filesystem type for the partition'), fs_types()).run() - block_device_struct["partitions"][partition]['filesystem']['format'] = fstype + if fs_choice.type_ == MenuSelectionType.Selection: + block_device_struct["partitions"][partition]['filesystem']['format'] = fs_choice.value # Negate the current wipe marking - block_device_struct["partitions"][partition][ - 'wipe'] = not block_device_struct["partitions"][partition].get('wipe', False) + block_device_struct["partitions"][partition]['wipe'] = not block_device_struct["partitions"][partition].get('wipe', False) elif task == mark_encrypted: title = _('{}\n\nSelect which partition to mark as encrypted').format(current_layout) @@ -288,16 +316,16 @@ def manage_new_and_existing_partitions(block_device: 'BlockDevice') -> Dict[str, if partition is not None: # Negate the current encryption marking - block_device_struct["partitions"][partition][ - 'encrypted'] = not block_device_struct["partitions"][partition].get('encrypted', False) + block_device_struct["partitions"][partition]['encrypted'] = \ + not block_device_struct["partitions"][partition].get('encrypted', False) elif task == mark_bootable: title = _('{}\n\nSelect which partition to mark as bootable').format(current_layout) partition = select_partition(title, block_device_struct["partitions"]) if partition is not None: - block_device_struct["partitions"][partition][ - 'boot'] = not block_device_struct["partitions"][partition].get('boot', False) + block_device_struct["partitions"][partition]['boot'] = \ + not block_device_struct["partitions"][partition].get('boot', False) elif task == set_filesystem_partition: title = _('{}\n\nSelect which partition to set a filesystem on').format(current_layout) @@ -308,16 +336,18 @@ def manage_new_and_existing_partitions(block_device: 'BlockDevice') -> Dict[str, block_device_struct["partitions"][partition]['filesystem'] = {} fstype_title = _('Enter a desired filesystem type for the partition: ') - fstype = Menu(fstype_title, fs_types(), skip=False).run() + fs_choice = Menu(fstype_title, fs_types()).run() - block_device_struct["partitions"][partition]['filesystem']['format'] = fstype + if fs_choice.type_ == MenuSelectionType.Selection: + block_device_struct["partitions"][partition]['filesystem']['format'] = fs_choice.value elif task == set_btrfs_subvolumes: from .subvolume_config import SubvolumeList # TODO get preexisting partitions title = _('{}\n\nSelect which partition to set subvolumes on').format(current_layout) - partition = select_partition(title, block_device_struct["partitions"],filter=lambda x:True if x.get('filesystem',{}).get('format') == 'btrfs' else False) + partition = select_partition(title, block_device_struct["partitions"],filter_=lambda x:True if x.get('filesystem',{}).get('format') == 'btrfs' else False) + if partition is not None: if not block_device_struct["partitions"][partition].get('btrfs', {}): block_device_struct["partitions"][partition]['btrfs'] = {} @@ -333,19 +363,30 @@ def manage_new_and_existing_partitions(block_device: 'BlockDevice') -> Dict[str, return block_device_struct +def select_encrypted_partitions( + title :str, + partitions :List[Partition], + multiple :bool = True, + filter_ :Callable = None +) -> Optional[int, List[int]]: + partition_indexes = _get_partitions(partitions, filter_) -def select_encrypted_partitions(block_devices: dict, password: str) -> dict: - for device in block_devices: - for partition in block_devices[device]['partitions']: - if partition.get('mountpoint', None) != '/boot': - partition['encrypted'] = True - partition['!password'] = password + if len(partition_indexes) == 0: + return None + + title = _('Select which partitions to mark for formatting:') - if not has_mountpoint(partition,'/'): - # Tell the upcoming steps to generate a key-file for non root mounts. - partition['generate-encryption-key-file'] = True + # show current partition layout: + if len(partitions): + title += current_partition_layout(partitions) + '\n' - return block_devices + choice = Menu(title, partition_indexes, multi=multiple).run() - # TODO: Next version perhaps we can support mixed multiple encrypted partitions - # Users might want to single out a partition for non-encryption to share between dualboot etc. + if choice.type_ == MenuSelectionType.Esc: + return None + + if isinstance(choice.value, list): + for partition_index in choice.value: + yield int(partition_index) + else: + yield (partition_index) diff --git a/archinstall/lib/user_interaction/save_conf.py b/archinstall/lib/user_interaction/save_conf.py index c52b97e2..f542bc9b 100644 --- a/archinstall/lib/user_interaction/save_conf.py +++ b/archinstall/lib/user_interaction/save_conf.py @@ -5,6 +5,7 @@ from typing import Any, Dict, TYPE_CHECKING from ..configuration import ConfigurationOutput from ..menu import Menu +from ..menu.menu import MenuSelectionType from ..output import log if TYPE_CHECKING: @@ -45,14 +46,16 @@ def save_config(config: Dict): 'all': str(_('Save all')) } - selection = Menu(_('Choose which configuration to save'), - list(options.values()), - sort=False, - skip=True, - preview_size=0.75, - preview_command=preview).run() + choice = Menu( + _('Choose which configuration to save'), + list(options.values()), + sort=False, + skip=True, + preview_size=0.75, + preview_command=preview + ).run() - if not selection: + if choice.type_ == MenuSelectionType.Esc: return while True: @@ -62,13 +65,13 @@ def save_config(config: Dict): break log(_('Not a valid directory: {}').format(dest_path), fg='red') - if options['user_config'] == selection: + if options['user_config'] == choice.value: config_output.save_user_config(dest_path) - elif options['user_creds'] == selection: + elif options['user_creds'] == choice.value: config_output.save_user_creds(dest_path) - elif options['disk_layout'] == selection: + elif options['disk_layout'] == choice.value: config_output.save_disk_layout(dest_path) - elif options['all'] == selection: + elif options['all'] == choice.value: config_output.save_user_config(dest_path) config_output.save_user_creds(dest_path) - config_output.save_disk_layout + config_output.save_disk_layout(dest_path) diff --git a/archinstall/lib/user_interaction/subvolume_config.py b/archinstall/lib/user_interaction/subvolume_config.py index 0515876b..af783639 100644 --- a/archinstall/lib/user_interaction/subvolume_config.py +++ b/archinstall/lib/user_interaction/subvolume_config.py @@ -1,9 +1,11 @@ -from typing import List, Any, Dict +from typing import Dict, List from ..menu.list_manager import ListManager +from ..menu.menu import MenuSelectionType from ..menu.selection_menu import Selector, GeneralMenu from ..menu.text_input import TextInput from ..menu import Menu + """ UI classes """ @@ -14,7 +16,7 @@ class SubvolumeList(ListManager): self.ObjectDefaultAction = str(_('Add')) super().__init__(prompt,list,None,self.ObjectNullAction,self.ObjectDefaultAction) - def reformat(self, data: Any) -> List[Any]: + def reformat(self, data: Dict) -> Dict: def presentation(key :str, value :Dict): text = _(" Subvolume :{:16}").format(key) if isinstance(value,str): @@ -24,18 +26,20 @@ class SubvolumeList(ListManager): text += _(" mounted at {:16}").format(value['mountpoint']) else: text += (' ' * 28) + if value.get('options',[]): text += _(" with option {}").format(', '.join(value['options'])) return text - return sorted(list(map(lambda x:presentation(x,data[x]),data))) + formatted = {presentation(k, v): k for k, v in data.items()} + return {k: v for k, v in sorted(formatted.items(), key=lambda e: e[0])} def action_list(self): return super().action_list() - def exec_action(self, data: Any): + def exec_action(self, data: Dict): if self.target: - origkey,origval = list(self.target.items())[0] + origkey, origval = list(self.target.items())[0] else: origkey = None @@ -46,13 +50,15 @@ class SubvolumeList(ListManager): self.target = {} print(_('\n Fill the desired values for a new subvolume \n')) with SubvolumeMenu(self.target,self.action) as add_menu: - for data in ['name','mountpoint','options']: - add_menu.exec_option(data) + for elem in ['name','mountpoint','options']: + add_menu.exec_option(elem) else: SubvolumeMenu(self.target,self.action).run() data.update(self.target) + return data + class SubvolumeMenu(GeneralMenu): def __init__(self,parameters,action=None): @@ -124,7 +130,17 @@ class SubvolumeMenu(GeneralMenu): def _select_subvolume_mount_point(self,value): return TextInput(str(_("Select a mount point :")),value).run() - def _select_subvolume_options(self,value): + def _select_subvolume_options(self,value) -> List[str]: # def __init__(self, title, p_options, skip=True, multi=False, default_option=None, sort=True): - return Menu(str(_("Select the desired subvolume options ")),['nodatacow','compress'], - skip=True,preset_values=value,multi=True).run() + choice = Menu( + str(_("Select the desired subvolume options ")), + ['nodatacow','compress'], + skip=True, + preset_values=value, + multi=True + ).run() + + if choice.type_ == MenuSelectionType.Selection: + return choice.value + + return [] diff --git a/archinstall/lib/user_interaction/system_conf.py b/archinstall/lib/user_interaction/system_conf.py index 0284dc5f..78daa6a5 100644 --- a/archinstall/lib/user_interaction/system_conf.py +++ b/archinstall/lib/user_interaction/system_conf.py @@ -6,10 +6,9 @@ from ..disk import all_blockdevices from ..exceptions import RequirementError from ..hardware import AVAILABLE_GFX_DRIVERS, has_uefi, has_amd_graphics, has_intel_graphics, has_nvidia_graphics from ..menu import Menu +from ..menu.menu import MenuSelectionType from ..storage import storage -from ..translation import DeferredTranslation - if TYPE_CHECKING: _: Any @@ -25,13 +24,22 @@ def select_kernel(preset: List[str] = None) -> List[str]: kernels = ["linux", "linux-lts", "linux-zen", "linux-pae"] default_kernel = "linux" - selected_kernels = Menu(_('Choose which kernels to use or leave blank for default "{}"').format(default_kernel), - kernels, - sort=True, - multi=True, - preset_values=preset, - default_option=default_kernel).run() - return selected_kernels + warning = str(_('Are you sure you want to reset this setting?')) + + choice = Menu( + _('Choose which kernels to use or leave blank for default "{}"').format(default_kernel), + kernels, + sort=True, + multi=True, + preset_values=preset, + explode_on_interrupt=True, + explode_warning=warning + ).run() + + match choice.type_: + case MenuSelectionType.Esc: return preset + case MenuSelectionType.Ctrl_c: return [] + case MenuSelectionType.Selection: return choice.value def select_harddrives(preset: List[str] = []) -> List[str]: @@ -49,18 +57,27 @@ def select_harddrives(preset: List[str] = []) -> List[str]: else: preset_disks = {} - selected_harddrive = Menu(_('Select one or more hard drives to use and configure'), - list(options.keys()), - preset_values=list(preset_disks.keys()), - multi=True).run() + title = str(_('Select one or more hard drives to use and configure\n')) + title += str(_('Any modifications to the existing setting will reset the disk layout!')) - if selected_harddrive and len(selected_harddrive) > 0: - return [options[i] for i in selected_harddrive] + warning = str(_('If you reset the harddrive selection this will also reset the current disk layout. Are you sure?')) - return [] + selected_harddrive = Menu( + title, + list(options.keys()), + preset_values=list(preset_disks.keys()), + multi=True, + explode_on_interrupt=True, + explode_warning=warning + ).run() + match selected_harddrive.type_: + case MenuSelectionType.Ctrl_c: return [] + case MenuSelectionType.Esc: return preset + case MenuSelectionType.Selection: return [options[i] for i in selected_harddrive.value] -def select_driver(options: Dict[str, Any] = AVAILABLE_GFX_DRIVERS, force_ask: bool = False) -> str: + +def select_driver(options: Dict[str, Any] = AVAILABLE_GFX_DRIVERS) -> str: """ Some what convoluted function, whose job is simple. Select a graphics driver from a pre-defined set of popular options. @@ -73,72 +90,85 @@ def select_driver(options: Dict[str, Any] = AVAILABLE_GFX_DRIVERS, force_ask: bo if drivers: arguments = storage.get('arguments', {}) - title = DeferredTranslation('') + title = '' if has_amd_graphics(): - title += _( + title += str(_( 'For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options.' - ) + '\n' + )) + '\n' if has_intel_graphics(): - title += _( + title += str(_( 'For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n' - ) + )) if has_nvidia_graphics(): - title += _( + title += str(_( 'For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n' - ) + )) - if not arguments.get('gfx_driver', None) or force_ask: - title += _('\n\nSelect a graphics driver or leave blank to install all open-source drivers') - arguments['gfx_driver'] = Menu(title, drivers).run() + title += str(_('\n\nSelect a graphics driver or leave blank to install all open-source drivers')) + choice = Menu(title, drivers).run() - if arguments.get('gfx_driver', None) is None: - arguments['gfx_driver'] = _("All open-source (default)") + if choice.type_ != MenuSelectionType.Selection: + return arguments.get('gfx_driver') - return options.get(arguments.get('gfx_driver')) + arguments['gfx_driver'] = choice.value + return options.get(choice.value) raise RequirementError("Selecting drivers require a least one profile to be given as an option.") def ask_for_bootloader(advanced_options: bool = False, preset: str = None) -> str: - if preset == 'systemd-bootctl': - preset_val = 'systemd-boot' if advanced_options else 'no' + preset_val = 'systemd-boot' if advanced_options else Menu.no() elif preset == 'grub-install': - preset_val = 'grub' if advanced_options else 'yes' + preset_val = 'grub' if advanced_options else Menu.yes() else: preset_val = preset bootloader = "systemd-bootctl" if has_uefi() else "grub-install" + if has_uefi(): if not advanced_options: - bootloader_choice = Menu(_('Would you like to use GRUB as a bootloader instead of systemd-boot?'), - ['yes', 'no'], - preset_values=preset_val, - default_option='no').run() - - if bootloader_choice == "yes": - bootloader = "grub-install" + selection = Menu( + _('Would you like to use GRUB as a bootloader instead of systemd-boot?'), + Menu.yes_no(), + preset_values=preset_val, + default_option=Menu.no() + ).run() + + match selection.type_: + case MenuSelectionType.Esc: return preset + case MenuSelectionType.Selection: bootloader = 'grub-install' if selection.value == Menu.yes() else bootloader else: # We use the common names for the bootloader as the selection, and map it back to the expected values. choices = ['systemd-boot', 'grub', 'efistub'] selection = Menu(_('Choose a bootloader'), choices, preset_values=preset_val).run() - if selection != "": - if selection == 'systemd-boot': + + value = '' + match selection.type_: + case MenuSelectionType.Esc: value = preset_val + case MenuSelectionType.Selection: value = selection.value + + if value != "": + if value == 'systemd-boot': bootloader = 'systemd-bootctl' - elif selection == 'grub': + elif value == 'grub': bootloader = 'grub-install' else: - bootloader = selection + bootloader = value return bootloader def ask_for_swap(preset: bool = True) -> bool: if preset: - preset_val = 'yes' + preset_val = Menu.yes() else: - preset_val = 'no' + preset_val = Menu.no() + prompt = _('Would you like to use swap on zram?') - choice = Menu(prompt, ['yes', 'no'], default_option='yes', preset_values=preset_val).run() - return False if choice == 'no' else True + choice = Menu(prompt, Menu.yes_no(), default_option=Menu.yes(), preset_values=preset_val).run() + + match choice.type_: + case MenuSelectionType.Esc: return preset + case MenuSelectionType.Selection: return False if choice.value == Menu.no() else True diff --git a/archinstall/lib/user_interaction/utils.py b/archinstall/lib/user_interaction/utils.py index 48b55e8c..fa079bc2 100644 --- a/archinstall/lib/user_interaction/utils.py +++ b/archinstall/lib/user_interaction/utils.py @@ -28,12 +28,9 @@ def check_password_strong(passwd: str) -> bool: symbol_count += 40 if symbol_count**len(passwd) < 10e20: - - prompt = _("The password you are using seems to be weak,") - prompt += _("are you sure you want to use it?") - - choice = Menu(prompt, ["yes", "no"], default_option="yes").run() - return choice == "yes" + prompt = str(_("The password you are using seems to be weak, are you sure you want to use it?")) + choice = Menu(prompt, Menu.yes_no(), default_option=Menu.yes()).run() + return choice.value == Menu.yes() return True @@ -43,7 +40,6 @@ def get_password(prompt: str = '') -> Optional[str]: prompt = _("Enter a password: ") while passwd := getpass.getpass(prompt): - if len(passwd.strip()) <= 0: break @@ -56,6 +52,7 @@ def get_password(prompt: str = '') -> Optional[str]: continue return passwd + return None @@ -84,12 +81,13 @@ def do_countdown() -> bool: if SIG_TRIGGER: prompt = _('Do you really want to abort?') - choice = Menu(prompt, ['yes', 'no'], skip=False).run() - if choice == 'yes': + choice = Menu(prompt, Menu.yes_no(), skip=False).run() + if choice.value == Menu.yes(): exit(0) if SIG_TRIGGER is False: sys.stdin.read() + SIG_TRIGGER = False signal.signal(signal.SIGINT, sig_handler) diff --git a/archinstall/locales/base.pot b/archinstall/locales/base.pot index ac0c2279..6db91789 100644 --- a/archinstall/locales/base.pot +++ b/archinstall/locales/base.pot @@ -4,647 +4,293 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: lib/installer.py:144 lib/installer.py:152 msgid "[!] A log file has been created here: {} {}" msgstr "" -#: lib/installer.py:145 lib/installer.py:153 lib/installer.py:153 msgid "" " Please submit this issue (and file) to https://github.com/archlinux/" "archinstall/issues" msgstr "" -#: lib/user_interaction.py:83 lib/user_interaction/utils.py:86 -#: lib/user_interaction/utils.py:86 msgid "Do you really want to abort?" msgstr "" -#: lib/user_interaction.py:101 lib/user_interaction.py:104 -#: lib/user_interaction/utils.py:53 lib/user_interaction/utils.py:53 msgid "And one more time for verification: " msgstr "" -#: lib/user_interaction.py:272 lib/user_interaction.py:275 -#: lib/user_interaction/system_conf.py:142 -#: lib/user_interaction/system_conf.py:142 msgid "Would you like to use swap on zram?" msgstr "" -#: lib/user_interaction.py:285 lib/user_interaction.py:288 -#: lib/user_interaction/general_conf.py:33 -#: lib/user_interaction/general_conf.py:33 msgid "Desired hostname for the installation: " msgstr "" -#: lib/user_interaction.py:290 lib/user_interaction.py:293 msgid "Username for required superuser with sudo privileges: " msgstr "" -#: lib/user_interaction.py:310 lib/user_interaction.py:313 -#: lib/user_interaction/manage_users_conf.py:167 -#: lib/user_interaction/manage_users_conf.py:167 msgid "Any additional users to install (leave blank for no users): " msgstr "" -#: lib/user_interaction.py:324 lib/user_interaction.py:327 msgid "Should this user be a superuser (sudoer)?" msgstr "" -#: lib/user_interaction.py:340 lib/user_interaction.py:343 -#: lib/user_interaction.py:346 lib/user_interaction/general_conf.py:41 -#: lib/user_interaction/general_conf.py:41 msgid "Select a timezone" msgstr "" -#: lib/user_interaction.py:354 lib/user_interaction.py:357 -#: lib/user_interaction.py:360 lib/user_interaction.py:359 -#: lib/user_interaction/system_conf.py:115 -#: lib/user_interaction/system_conf.py:115 msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" msgstr "" -#: lib/user_interaction.py:364 lib/user_interaction.py:367 -#: lib/user_interaction.py:370 lib/user_interaction.py:369 -#: lib/user_interaction/system_conf.py:125 -#: lib/user_interaction/system_conf.py:125 msgid "Choose a bootloader" msgstr "" -#: lib/user_interaction.py:380 lib/user_interaction.py:383 -#: lib/user_interaction.py:386 lib/user_interaction.py:385 -#: lib/user_interaction/general_conf.py:53 -#: lib/user_interaction/general_conf.py:53 msgid "Choose an audio server" msgstr "" -#: lib/user_interaction.py:391 lib/user_interaction.py:394 -#: lib/user_interaction.py:397 lib/user_interaction.py:396 -#: lib/user_interaction/general_conf.py:138 -#: lib/user_interaction/general_conf.py:138 msgid "" "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr " "and optional profile packages are installed." msgstr "" -#: lib/user_interaction.py:392 lib/user_interaction.py:395 -#: lib/user_interaction.py:398 lib/user_interaction.py:397 -#: lib/user_interaction/general_conf.py:139 -#: lib/user_interaction/general_conf.py:139 msgid "" "If you desire a web browser, such as firefox or chromium, you may specify it " "in the following prompt." msgstr "" -#: lib/user_interaction.py:396 lib/user_interaction.py:399 -#: lib/user_interaction.py:402 lib/user_interaction.py:401 -#: lib/user_interaction/general_conf.py:143 -#: lib/user_interaction/general_conf.py:143 msgid "" "Write additional packages to install (space separated, leave blank to skip): " msgstr "" -#: lib/user_interaction.py:419 lib/user_interaction.py:422 -#: lib/user_interaction.py:425 lib/user_interaction.py:424 -#: lib/user_interaction/network_conf.py:25 -#: lib/user_interaction/network_conf.py:25 msgid "Copy ISO network configuration to installation" msgstr "" -#: lib/user_interaction.py:420 lib/user_interaction.py:423 -#: lib/user_interaction.py:426 lib/user_interaction.py:425 -#: lib/user_interaction/network_conf.py:26 -#: lib/user_interaction/network_conf.py:26 msgid "" "Use NetworkManager (necessary to configure internet graphically in GNOME and " "KDE)" msgstr "" -#: lib/user_interaction.py:428 lib/user_interaction.py:431 -#: lib/user_interaction.py:434 lib/user_interaction.py:433 -#: lib/user_interaction/network_conf.py:43 -#: lib/user_interaction/network_conf.py:43 msgid "Select one network interface to configure" msgstr "" -#: lib/user_interaction.py:441 lib/user_interaction.py:444 -#: lib/user_interaction.py:447 lib/user_interaction.py:446 -#: lib/user_interaction/network_conf.py:70 -#: lib/user_interaction/network_conf.py:70 msgid "" "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" msgstr "" -#: lib/user_interaction.py:446 lib/user_interaction.py:449 -#: lib/user_interaction.py:452 lib/user_interaction.py:451 -#: lib/user_interaction/network_conf.py:75 -#: lib/user_interaction/network_conf.py:75 msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " msgstr "" -#: lib/user_interaction.py:461 lib/user_interaction.py:464 -#: lib/user_interaction.py:467 lib/user_interaction.py:466 -#: lib/user_interaction/network_conf.py:86 -#: lib/user_interaction/network_conf.py:86 msgid "Enter your gateway (router) IP address or leave blank for none: " msgstr "" -#: lib/user_interaction.py:476 lib/user_interaction.py:479 -#: lib/user_interaction.py:482 lib/user_interaction.py:481 -#: lib/user_interaction/network_conf.py:102 -#: lib/user_interaction/network_conf.py:102 msgid "Enter your DNS servers (space separated, blank for none): " msgstr "" -#: lib/user_interaction.py:510 lib/user_interaction.py:513 -#: lib/user_interaction.py:516 lib/user_interaction.py:515 -#: lib/user_interaction/disk_conf.py:23 lib/user_interaction/disk_conf.py:23 msgid "Select which filesystem your main partition should use" msgstr "" -#: lib/user_interaction.py:556 lib/user_interaction.py:559 -#: lib/user_interaction.py:562 lib/user_interaction.py:561 -#: lib/user_interaction/partitioning_conf.py:64 -#: lib/user_interaction/partitioning_conf.py:63 -#: lib/user_interaction/partitioning_conf.py:63 msgid "Current partition layout" msgstr "" -#: lib/user_interaction.py:607 lib/user_interaction.py:614 -#: lib/user_interaction.py:617 lib/user_interaction.py:620 -#: lib/user_interaction.py:619 lib/user_interaction/partitioning_conf.py:145 -#: lib/user_interaction/partitioning_conf.py:146 -#: lib/user_interaction/partitioning_conf.py:146 msgid "" "Select what to do with\n" "{}" msgstr "" -#: lib/user_interaction.py:624 lib/user_interaction.py:709 -#: lib/user_interaction.py:631 lib/user_interaction.py:716 -#: lib/user_interaction.py:634 lib/user_interaction.py:719 -#: lib/user_interaction.py:637 lib/user_interaction.py:722 -#: lib/user_interaction.py:636 lib/user_interaction.py:721 -#: lib/user_interaction/partitioning_conf.py:162 -#: lib/user_interaction/partitioning_conf.py:255 -#: lib/user_interaction/partitioning_conf.py:165 -#: lib/user_interaction/partitioning_conf.py:260 -#: lib/user_interaction/partitioning_conf.py:165 -#: lib/user_interaction/partitioning_conf.py:260 msgid "Enter a desired filesystem type for the partition" msgstr "" -#: lib/user_interaction.py:626 lib/user_interaction.py:633 -#: lib/user_interaction.py:636 lib/user_interaction.py:639 -#: lib/user_interaction.py:638 lib/user_interaction/partitioning_conf.py:164 -#: lib/user_interaction/partitioning_conf.py:167 -#: lib/user_interaction/partitioning_conf.py:167 msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "" -#: lib/user_interaction.py:635 lib/user_interaction.py:642 -#: lib/user_interaction.py:645 lib/user_interaction.py:648 -#: lib/user_interaction.py:647 lib/user_interaction/partitioning_conf.py:174 -#: lib/user_interaction/partitioning_conf.py:177 -#: lib/user_interaction/partitioning_conf.py:177 msgid "" "Enter the end sector of the partition (percentage or block number, ex: {}): " msgstr "" -#: lib/user_interaction.py:661 lib/user_interaction.py:668 -#: lib/user_interaction.py:671 lib/user_interaction.py:674 -#: lib/user_interaction.py:673 lib/user_interaction/partitioning_conf.py:203 -#: lib/user_interaction/partitioning_conf.py:208 -#: lib/user_interaction/partitioning_conf.py:208 msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "" -#: lib/user_interaction.py:674 lib/user_interaction.py:681 -#: lib/user_interaction.py:684 lib/user_interaction.py:687 -#: lib/user_interaction.py:686 lib/user_interaction/partitioning_conf.py:216 -#: lib/user_interaction/partitioning_conf.py:221 -#: lib/user_interaction/partitioning_conf.py:221 msgid "" "{}\n" "\n" "Select by index which partitions to delete" msgstr "" -#: lib/user_interaction.py:682 lib/user_interaction.py:689 -#: lib/user_interaction.py:692 lib/user_interaction.py:695 -#: lib/user_interaction.py:694 lib/user_interaction/partitioning_conf.py:226 -#: lib/user_interaction/partitioning_conf.py:231 -#: lib/user_interaction/partitioning_conf.py:231 msgid "" "{}\n" "\n" "Select by index which partition to mount where" msgstr "" -#: lib/user_interaction.py:686 lib/user_interaction.py:693 -#: lib/user_interaction.py:696 lib/user_interaction.py:699 -#: lib/user_interaction.py:698 lib/user_interaction/partitioning_conf.py:231 -#: lib/user_interaction/partitioning_conf.py:236 -#: lib/user_interaction/partitioning_conf.py:236 msgid "" " * Partition mount-points are relative to inside the installation, the boot " "would be /boot as an example." msgstr "" -#: lib/user_interaction.py:687 lib/user_interaction.py:694 -#: lib/user_interaction.py:697 lib/user_interaction.py:700 -#: lib/user_interaction.py:699 lib/user_interaction/partitioning_conf.py:233 -#: lib/user_interaction/partitioning_conf.py:238 -#: lib/user_interaction/partitioning_conf.py:238 msgid "Select where to mount partition (leave blank to remove mountpoint): " msgstr "" -#: lib/user_interaction.py:698 lib/user_interaction.py:705 -#: lib/user_interaction.py:708 lib/user_interaction.py:711 -#: lib/user_interaction.py:710 lib/user_interaction/partitioning_conf.py:244 -#: lib/user_interaction/partitioning_conf.py:249 -#: lib/user_interaction/partitioning_conf.py:249 msgid "" "{}\n" "\n" "Select which partition to mask for formatting" msgstr "" -#: lib/user_interaction.py:717 lib/user_interaction.py:724 -#: lib/user_interaction.py:727 lib/user_interaction.py:730 -#: lib/user_interaction.py:729 lib/user_interaction/partitioning_conf.py:265 -#: lib/user_interaction/partitioning_conf.py:270 -#: lib/user_interaction/partitioning_conf.py:270 msgid "" "{}\n" "\n" "Select which partition to mark as encrypted" msgstr "" -#: lib/user_interaction.py:725 lib/user_interaction.py:732 -#: lib/user_interaction.py:735 lib/user_interaction.py:738 -#: lib/user_interaction.py:737 lib/user_interaction/partitioning_conf.py:274 -#: lib/user_interaction/partitioning_conf.py:279 -#: lib/user_interaction/partitioning_conf.py:279 msgid "" "{}\n" "\n" "Select which partition to mark as bootable" msgstr "" -#: lib/user_interaction.py:732 lib/user_interaction.py:739 -#: lib/user_interaction.py:742 lib/user_interaction.py:745 -#: lib/user_interaction.py:744 lib/user_interaction/partitioning_conf.py:282 -#: lib/user_interaction/partitioning_conf.py:287 -#: lib/user_interaction/partitioning_conf.py:287 msgid "" "{}\n" "\n" "Select which partition to set a filesystem on" msgstr "" -#: lib/user_interaction.py:739 lib/user_interaction.py:746 -#: lib/user_interaction.py:749 lib/user_interaction.py:752 -#: lib/user_interaction.py:751 lib/user_interaction/partitioning_conf.py:289 -#: lib/user_interaction/partitioning_conf.py:294 -#: lib/user_interaction/partitioning_conf.py:294 msgid "Enter a desired filesystem type for the partition: " msgstr "" -#: lib/user_interaction.py:760 lib/menu/selection_menu.py:141 -#: lib/user_interaction.py:767 lib/menu/selection_menu.py:139 -#: lib/menu/selection_menu.py:143 lib/user_interaction.py:770 -#: lib/user_interaction.py:773 lib/user_interaction.py:772 -#: lib/menu/selection_menu.py:407 lib/menu/selection_menu.py:415 -#: lib/menu/selection_menu.py:17 lib/user_interaction/general_conf.py:105 -#: lib/user_interaction/global_menu.py:43 lib/menu/selection_menu.py:53 -#: lib/menu/selection_menu.py:463 lib/menu/global_menu.py:43 -#: lib/menu/selection_menu.py:53 lib/menu/global_menu.py:43 -#: lib/user_interaction/general_conf.py:105 -msgid "Select Archinstall language" +msgid "Archinstall language" msgstr "" -#: lib/user_interaction.py:765 lib/user_interaction.py:772 -#: lib/user_interaction.py:775 lib/user_interaction.py:778 -#: lib/user_interaction.py:777 lib/user_interaction/disk_conf.py:40 -#: lib/user_interaction/disk_conf.py:40 msgid "Wipe all selected drives and use a best-effort default partition layout" msgstr "" -#: lib/user_interaction.py:766 lib/user_interaction.py:773 -#: lib/user_interaction.py:776 lib/user_interaction.py:779 -#: lib/user_interaction.py:778 lib/user_interaction/disk_conf.py:41 -#: lib/user_interaction/disk_conf.py:41 msgid "" "Select what to do with each individual drive (followed by partition usage)" msgstr "" -#: lib/user_interaction.py:769 lib/user_interaction.py:770 -#: lib/user_interaction.py:777 lib/user_interaction.py:780 -#: lib/user_interaction.py:783 lib/user_interaction.py:782 -#: lib/user_interaction/disk_conf.py:45 lib/user_interaction/disk_conf.py:45 msgid "Select what you wish to do with the selected block devices" msgstr "" -#: lib/user_interaction.py:822 lib/user_interaction.py:823 -#: lib/user_interaction.py:830 lib/user_interaction.py:833 -#: lib/user_interaction.py:836 lib/user_interaction.py:835 -#: lib/user_interaction/general_conf.py:126 -#: lib/user_interaction/general_conf.py:126 msgid "" "This is a list of pre-programmed profiles, they might make it easier to " "install things like desktop environments" msgstr "" -#: lib/user_interaction.py:846 lib/user_interaction.py:847 -#: lib/user_interaction.py:854 lib/user_interaction.py:857 -#: lib/user_interaction.py:860 lib/user_interaction.py:859 -#: lib/user_interaction/general_conf.py:71 -#: lib/user_interaction/general_conf.py:71 -msgid "Select Keyboard layout" +msgid "Select keyboard layout" msgstr "" -#: lib/user_interaction.py:861 lib/user_interaction.py:862 -#: lib/user_interaction.py:869 lib/user_interaction.py:872 -#: lib/user_interaction.py:875 lib/user_interaction.py:874 -#: lib/user_interaction/general_conf.py:92 -#: lib/user_interaction/general_conf.py:92 msgid "Select one of the regions to download packages from" msgstr "" -#: lib/user_interaction.py:883 lib/user_interaction.py:884 -#: lib/user_interaction.py:891 lib/user_interaction.py:894 -#: lib/user_interaction.py:897 lib/user_interaction.py:896 -#: lib/user_interaction/system_conf.py:52 -#: lib/user_interaction/system_conf.py:52 msgid "Select one or more hard drives to use and configure" msgstr "" -#: lib/user_interaction.py:910 lib/user_interaction.py:911 -#: lib/user_interaction.py:918 lib/user_interaction.py:921 -#: lib/user_interaction.py:924 lib/user_interaction.py:923 -#: lib/user_interaction/system_conf.py:80 -#: lib/user_interaction/system_conf.py:80 msgid "" "For the best compatibility with your AMD hardware, you may want to use " "either the all open-source or AMD / ATI options." msgstr "" -#: lib/user_interaction.py:912 lib/user_interaction.py:913 -#: lib/user_interaction.py:920 lib/user_interaction.py:923 -#: lib/user_interaction.py:926 lib/user_interaction.py:925 -#: lib/user_interaction/system_conf.py:84 -#: lib/user_interaction/system_conf.py:84 msgid "" "For the best compatibility with your Intel hardware, you may want to use " "either the all open-source or Intel options.\n" msgstr "" -#: lib/user_interaction.py:914 lib/user_interaction.py:915 -#: lib/user_interaction.py:922 lib/user_interaction.py:925 -#: lib/user_interaction.py:928 lib/user_interaction.py:927 -#: lib/user_interaction/system_conf.py:88 -#: lib/user_interaction/system_conf.py:88 msgid "" "For the best compatibility with your Nvidia hardware, you may want to use " "the Nvidia proprietary driver.\n" msgstr "" -#: lib/user_interaction.py:917 lib/user_interaction.py:918 -#: lib/user_interaction.py:925 lib/user_interaction.py:928 -#: lib/user_interaction.py:931 lib/user_interaction.py:930 -#: lib/user_interaction/system_conf.py:92 -#: lib/user_interaction/system_conf.py:92 msgid "" "\n" "\n" "Select a graphics driver or leave blank to install all open-source drivers" msgstr "" -#: lib/user_interaction.py:921 lib/user_interaction.py:922 -#: lib/user_interaction.py:929 lib/user_interaction.py:932 -#: lib/user_interaction.py:935 lib/user_interaction.py:934 -#: lib/user_interaction/system_conf.py:96 -#: lib/user_interaction/system_conf.py:96 msgid "All open-source (default)" msgstr "" -#: lib/user_interaction.py:940 lib/user_interaction.py:941 -#: lib/user_interaction.py:948 lib/user_interaction.py:951 -#: lib/user_interaction.py:954 lib/user_interaction.py:953 -#: lib/user_interaction/system_conf.py:28 -#: lib/user_interaction/system_conf.py:28 msgid "Choose which kernels to use or leave blank for default \"{}\"" msgstr "" -#: lib/user_interaction.py:954 lib/user_interaction.py:955 -#: lib/user_interaction.py:962 lib/user_interaction.py:965 -#: lib/user_interaction.py:968 lib/user_interaction.py:967 -#: lib/user_interaction/locale_conf.py:16 -#: lib/user_interaction/locale_conf.py:16 msgid "Choose which locale language to use" msgstr "" -#: lib/user_interaction.py:968 lib/user_interaction.py:969 -#: lib/user_interaction.py:976 lib/user_interaction.py:979 -#: lib/user_interaction.py:982 lib/user_interaction.py:981 -#: lib/user_interaction/locale_conf.py:29 -#: lib/user_interaction/locale_conf.py:29 msgid "Choose which locale encoding to use" msgstr "" -#: lib/user_interaction.py:1009 lib/user_interaction.py:1010 -#: lib/user_interaction.py:1017 lib/user_interaction.py:1020 -#: lib/user_interaction.py:1023 lib/user_interaction.py:1022 -#: lib/user_interaction/backwards_compatible_conf.py:49 -#: lib/user_interaction/backwards_compatible_conf.py:49 msgid "Select one of the values shown below: " msgstr "" -#: lib/user_interaction.py:1050 lib/user_interaction.py:1051 -#: lib/user_interaction.py:1058 lib/user_interaction.py:1061 -#: lib/user_interaction.py:1064 lib/user_interaction.py:1063 -#: lib/user_interaction/backwards_compatible_conf.py:88 -#: lib/user_interaction/backwards_compatible_conf.py:88 msgid "Select one or more of the options below: " msgstr "" -#: lib/disk/filesystem.py:86 lib/disk/filesystem.py:87 -#: lib/disk/filesystem.py:87 msgid "Adding partition...." msgstr "" -#: lib/disk/filesystem.py:139 lib/disk/filesystem.py:141 -#: lib/disk/filesystem.py:142 lib/disk/filesystem.py:142 msgid "" "You need to enter a valid fs-type in order to continue. See `man parted` for " "valid fs-type's." msgstr "" -#: lib/profiles.py:89 lib/profiles.py:90 lib/profiles.py:90 msgid "Error: Listing profiles on URL \"{}\" resulted in:" msgstr "" -#: lib/profiles.py:92 lib/profiles.py:93 lib/profiles.py:93 msgid "Error: Could not decode \"{}\" result as JSON:" msgstr "" -#: lib/menu/selection_menu.py:146 lib/menu/selection_menu.py:144 -#: lib/menu/selection_menu.py:148 lib/menu/selection_menu.py:412 -#: lib/menu/selection_menu.py:420 lib/user_interaction/global_menu.py:48 -#: lib/menu/selection_menu.py:468 lib/menu/global_menu.py:48 -#: lib/menu/global_menu.py:48 -msgid "Select keyboard layout" +msgid "Keyboard layout" msgstr "" -#: lib/menu/selection_menu.py:149 lib/menu/selection_menu.py:147 -#: lib/menu/selection_menu.py:151 lib/menu/selection_menu.py:415 -#: lib/menu/selection_menu.py:423 lib/user_interaction/global_menu.py:51 -#: lib/menu/selection_menu.py:471 lib/menu/global_menu.py:51 -#: lib/menu/global_menu.py:51 -msgid "Select mirror region" +msgid "Mirror region" msgstr "" -#: lib/menu/selection_menu.py:154 lib/menu/selection_menu.py:152 -#: lib/menu/selection_menu.py:156 lib/menu/selection_menu.py:420 -#: lib/menu/selection_menu.py:428 lib/user_interaction/global_menu.py:56 -#: lib/menu/selection_menu.py:476 lib/menu/global_menu.py:56 -#: lib/menu/global_menu.py:56 -msgid "Select locale language" +msgid "Locale language" msgstr "" -#: lib/menu/selection_menu.py:156 lib/menu/selection_menu.py:154 -#: lib/menu/selection_menu.py:158 lib/menu/selection_menu.py:422 -#: lib/menu/selection_menu.py:430 lib/user_interaction/global_menu.py:58 -#: lib/menu/selection_menu.py:478 lib/menu/global_menu.py:58 -#: lib/menu/global_menu.py:58 -msgid "Select locale encoding" +msgid "Locale encoding" msgstr "" -#: lib/menu/selection_menu.py:159 lib/menu/selection_menu.py:157 -#: lib/menu/selection_menu.py:161 lib/menu/selection_menu.py:425 -#: lib/menu/selection_menu.py:433 lib/user_interaction/global_menu.py:61 -#: lib/menu/selection_menu.py:481 lib/menu/global_menu.py:61 -#: lib/menu/global_menu.py:61 -msgid "Select harddrives" +msgid "Drive(s)" msgstr "" -#: lib/menu/selection_menu.py:163 lib/menu/selection_menu.py:161 -#: lib/menu/selection_menu.py:165 lib/menu/selection_menu.py:429 -#: lib/menu/selection_menu.py:437 lib/user_interaction/global_menu.py:65 -#: lib/menu/selection_menu.py:485 lib/menu/global_menu.py:65 -#: lib/menu/global_menu.py:65 -msgid "Select disk layout" +msgid "Disk layout" msgstr "" -#: lib/menu/selection_menu.py:171 lib/menu/selection_menu.py:169 -#: lib/menu/selection_menu.py:173 lib/menu/selection_menu.py:437 -#: lib/menu/selection_menu.py:445 lib/user_interaction/global_menu.py:73 -#: lib/menu/selection_menu.py:493 lib/menu/global_menu.py:73 -#: lib/menu/global_menu.py:73 -msgid "Set encryption password" +msgid "Encryption password" msgstr "" -#: lib/menu/selection_menu.py:177 lib/menu/selection_menu.py:175 -#: lib/menu/selection_menu.py:179 lib/menu/selection_menu.py:443 -#: lib/menu/selection_menu.py:451 lib/user_interaction/global_menu.py:79 -#: lib/menu/selection_menu.py:499 lib/menu/global_menu.py:79 -#: lib/menu/global_menu.py:79 -msgid "Use swap" +msgid "Swap" msgstr "" -#: lib/menu/selection_menu.py:182 lib/menu/selection_menu.py:180 -#: lib/menu/selection_menu.py:184 lib/menu/selection_menu.py:448 -#: lib/menu/selection_menu.py:456 lib/user_interaction/global_menu.py:84 -#: lib/menu/selection_menu.py:504 lib/menu/global_menu.py:84 -#: lib/menu/global_menu.py:84 -msgid "Select bootloader" +msgid "Bootloader" msgstr "" -#: lib/menu/selection_menu.py:188 lib/menu/selection_menu.py:186 -#: lib/menu/selection_menu.py:190 lib/menu/selection_menu.py:454 -#: lib/menu/selection_menu.py:462 lib/user_interaction/global_menu.py:95 -#: lib/menu/selection_menu.py:515 lib/menu/global_menu.py:95 -#: lib/menu/global_menu.py:95 -msgid "Set root password" +msgid "Root password" msgstr "" -#: lib/menu/selection_menu.py:193 lib/menu/selection_menu.py:191 -#: lib/menu/selection_menu.py:195 lib/menu/selection_menu.py:459 -#: lib/menu/selection_menu.py:467 lib/user_interaction/global_menu.py:100 -#: lib/menu/selection_menu.py:520 lib/menu/global_menu.py:100 -#: lib/menu/global_menu.py:100 -msgid "Specify superuser account" +msgid "Superuser account" msgstr "" -#: lib/menu/selection_menu.py:199 lib/menu/selection_menu.py:197 -#: lib/menu/selection_menu.py:201 lib/menu/selection_menu.py:465 -#: lib/menu/selection_menu.py:473 lib/user_interaction/global_menu.py:107 -#: lib/menu/selection_menu.py:528 lib/menu/global_menu.py:107 -#: lib/menu/global_menu.py:107 -msgid "Specify user account" +msgid "User account" msgstr "" -#: lib/menu/selection_menu.py:205 lib/menu/selection_menu.py:203 -#: lib/menu/selection_menu.py:207 lib/menu/selection_menu.py:471 -#: lib/menu/selection_menu.py:479 lib/user_interaction/global_menu.py:114 -#: lib/menu/selection_menu.py:535 lib/menu/global_menu.py:114 -#: lib/menu/global_menu.py:114 -msgid "Specify profile" +msgid "Profile" msgstr "" -#: lib/menu/selection_menu.py:210 lib/menu/selection_menu.py:208 -#: lib/menu/selection_menu.py:212 lib/menu/selection_menu.py:476 -#: lib/menu/selection_menu.py:484 lib/user_interaction/global_menu.py:119 -#: lib/menu/selection_menu.py:540 lib/menu/global_menu.py:119 -#: lib/menu/global_menu.py:119 -msgid "Select audio" +msgid "Audio" msgstr "" -#: lib/menu/selection_menu.py:214 lib/menu/selection_menu.py:212 -#: lib/menu/selection_menu.py:216 lib/menu/selection_menu.py:480 -#: lib/menu/selection_menu.py:488 lib/user_interaction/global_menu.py:123 -#: lib/menu/selection_menu.py:544 lib/menu/global_menu.py:123 -#: lib/menu/global_menu.py:123 -msgid "Select kernels" +msgid "Kernels" msgstr "" -#: lib/menu/selection_menu.py:219 lib/menu/selection_menu.py:217 -#: lib/menu/selection_menu.py:221 lib/menu/selection_menu.py:485 -#: lib/menu/selection_menu.py:493 lib/user_interaction/global_menu.py:128 -#: lib/menu/selection_menu.py:549 lib/menu/global_menu.py:128 -#: lib/menu/global_menu.py:128 -msgid "Additional packages to install" +msgid "Additional packages" msgstr "" -#: lib/menu/selection_menu.py:224 lib/menu/selection_menu.py:222 -#: lib/menu/selection_menu.py:226 lib/menu/selection_menu.py:490 -#: lib/menu/selection_menu.py:498 lib/user_interaction/global_menu.py:139 -#: lib/menu/selection_menu.py:560 lib/menu/global_menu.py:139 -#: lib/menu/global_menu.py:139 -msgid "Configure network" +msgid "Network configuration" msgstr "" -#: lib/menu/selection_menu.py:232 lib/menu/selection_menu.py:230 -#: lib/menu/selection_menu.py:234 lib/menu/selection_menu.py:498 -#: lib/menu/selection_menu.py:506 lib/user_interaction/global_menu.py:150 -#: lib/menu/selection_menu.py:571 lib/menu/global_menu.py:150 -#: lib/menu/global_menu.py:150 -msgid "Set automatic time sync (NTP)" +msgid "Automatic time sync (NTP)" msgstr "" -#: lib/menu/selection_menu.py:310 lib/menu/selection_menu.py:308 -#: lib/menu/selection_menu.py:315 lib/menu/selection_menu.py:527 -#: lib/menu/selection_menu.py:535 lib/user_interaction/global_menu.py:187 -#: lib/menu/selection_menu.py:608 lib/menu/global_menu.py:187 -#: lib/menu/global_menu.py:187 msgid "Install ({} config(s) missing)" msgstr "" -#: lib/menu/selection_menu.py:373 lib/menu/selection_menu.py:371 -#: lib/menu/selection_menu.py:378 lib/menu/selection_menu.py:591 -#: lib/menu/selection_menu.py:599 lib/user_interaction/global_menu.py:249 -#: lib/menu/selection_menu.py:669 lib/menu/global_menu.py:249 -#: lib/menu/global_menu.py:249 msgid "" "You decided to skip harddrive selection\n" "and will use whatever drive-setup is mounted at {} (experimental)\n" @@ -652,514 +298,465 @@ msgid "" "Do you wish to continue?" msgstr "" -#: lib/disk/filesystem.py:97 lib/disk/filesystem.py:98 -#: lib/disk/filesystem.py:98 msgid "Re-using partition instance: {}" msgstr "" -#: lib/user_interaction.py:590 lib/user_interaction.py:593 -#: lib/user_interaction.py:596 lib/user_interaction.py:595 -#: lib/user_interaction/partitioning_conf.py:119 -#: lib/user_interaction/partitioning_conf.py:120 -#: lib/user_interaction/partitioning_conf.py:120 msgid "Create a new partition" msgstr "" -#: lib/user_interaction.py:592 lib/user_interaction.py:595 -#: lib/user_interaction.py:598 lib/user_interaction.py:597 -#: lib/user_interaction/partitioning_conf.py:121 -#: lib/user_interaction/partitioning_conf.py:122 -#: lib/user_interaction/partitioning_conf.py:122 msgid "Delete a partition" msgstr "" -#: lib/user_interaction.py:593 lib/user_interaction.py:596 -#: lib/user_interaction.py:599 lib/user_interaction.py:598 -#: lib/user_interaction/partitioning_conf.py:122 -#: lib/user_interaction/partitioning_conf.py:123 -#: lib/user_interaction/partitioning_conf.py:123 msgid "Clear/Delete all partitions" msgstr "" -#: lib/user_interaction.py:594 lib/user_interaction.py:597 -#: lib/user_interaction.py:600 lib/user_interaction.py:599 -#: lib/user_interaction/partitioning_conf.py:123 -#: lib/user_interaction/partitioning_conf.py:124 -#: lib/user_interaction/partitioning_conf.py:124 msgid "Assign mount-point for a partition" msgstr "" -#: lib/user_interaction.py:595 lib/user_interaction.py:598 -#: lib/user_interaction.py:601 lib/user_interaction.py:600 -#: lib/user_interaction/partitioning_conf.py:124 -#: lib/user_interaction/partitioning_conf.py:125 -#: lib/user_interaction/partitioning_conf.py:125 msgid "Mark/Unmark a partition to be formatted (wipes data)" msgstr "" -#: lib/user_interaction.py:596 lib/user_interaction.py:599 -#: lib/user_interaction.py:602 lib/user_interaction.py:601 -#: lib/user_interaction/partitioning_conf.py:125 -#: lib/user_interaction/partitioning_conf.py:126 -#: lib/user_interaction/partitioning_conf.py:126 msgid "Mark/Unmark a partition as encrypted" msgstr "" -#: lib/user_interaction.py:597 lib/user_interaction.py:600 -#: lib/user_interaction.py:603 lib/user_interaction.py:602 -#: lib/user_interaction/partitioning_conf.py:126 -#: lib/user_interaction/partitioning_conf.py:127 -#: lib/user_interaction/partitioning_conf.py:127 msgid "Mark/Unmark a partition as bootable (automatic for /boot)" msgstr "" -#: lib/user_interaction.py:598 lib/user_interaction.py:601 -#: lib/user_interaction.py:604 lib/user_interaction.py:603 -#: lib/user_interaction/partitioning_conf.py:127 -#: lib/user_interaction/partitioning_conf.py:128 -#: lib/user_interaction/partitioning_conf.py:128 msgid "Set desired filesystem for a partition" msgstr "" -#: lib/menu/selection_menu.py:239 lib/menu/selection_menu.py:237 -#: lib/menu/selection_menu.py:241 lib/menu/selection_menu.py:270 -#: lib/menu/selection_menu.py:507 lib/menu/selection_menu.py:515 -#: lib/user_interaction/global_menu.py:167 lib/menu/selection_menu.py:588 -#: lib/menu/global_menu.py:167 lib/menu/global_menu.py:167 msgid "Abort" msgstr "" -#: lib/menu/selection_menu.py:183 lib/menu/selection_menu.py:187 -#: lib/menu/selection_menu.py:451 lib/menu/selection_menu.py:459 -#: lib/user_interaction/global_menu.py:89 lib/menu/selection_menu.py:509 -#: lib/menu/global_menu.py:89 lib/menu/global_menu.py:89 -msgid "Specify hostname" +msgid "Hostname" msgstr "" -#: lib/menu/selection_menu.py:228 lib/menu/selection_menu.py:492 -#: lib/menu/selection_menu.py:500 lib/user_interaction/global_menu.py:141 -#: lib/menu/selection_menu.py:562 lib/menu/global_menu.py:141 -#: lib/menu/global_menu.py:141 msgid "Not configured, unavailable unless setup manually" msgstr "" -#: lib/menu/selection_menu.py:231 lib/menu/selection_menu.py:495 -#: lib/menu/selection_menu.py:503 lib/user_interaction/global_menu.py:145 -#: lib/menu/selection_menu.py:566 lib/menu/global_menu.py:145 -#: lib/menu/global_menu.py:145 -msgid "Select timezone" +msgid "Timezone" msgstr "" -#: lib/menu/selection_menu.py:266 lib/menu/selection_menu.py:276 -#: lib/menu/selection_menu.py:312 lib/menu/selection_menu.py:312 msgid "Set/Modify the below options" msgstr "" -#: lib/menu/selection_menu.py:272 msgid "Install" msgstr "" -#: lib/menu/menu.py:68 lib/menu/menu.py:75 lib/menu/menu.py:119 -#: lib/menu/menu.py:119 msgid "" "Use ESC to skip\n" "\n" msgstr "" -#: lib/user_interaction.py:591 lib/user_interaction.py:594 -#: lib/user_interaction.py:597 lib/user_interaction.py:596 -#: lib/user_interaction/partitioning_conf.py:120 -#: lib/user_interaction/partitioning_conf.py:121 -#: lib/user_interaction/partitioning_conf.py:121 msgid "Suggest partition layout" msgstr "" -#: lib/user_interaction.py:101 lib/user_interaction/utils.py:43 -#: lib/user_interaction/utils.py:43 msgid "Enter a password: " msgstr "" -#: lib/disk/filesystem.py:117 lib/disk/filesystem.py:118 -#: lib/disk/filesystem.py:118 msgid "Enter a encryption password for {}" msgstr "" -#: lib/menu/selection_menu.py:174 lib/menu/selection_menu.py:567 -#: lib/menu/selection_menu.py:575 lib/user_interaction/global_menu.py:225 -#: lib/menu/selection_menu.py:646 lib/menu/global_menu.py:225 -#: lib/menu/global_menu.py:225 msgid "Enter disk encryption password (leave blank for no encryption): " msgstr "" -#: lib/menu/selection_menu.py:407 lib/menu/selection_menu.py:617 -#: lib/menu/selection_menu.py:625 msgid "Create a required super-user with sudo privileges: " msgstr "" -#: lib/menu/selection_menu.py:347 lib/menu/selection_menu.py:554 -#: lib/menu/selection_menu.py:562 lib/user_interaction/global_menu.py:220 -#: lib/menu/selection_menu.py:641 lib/menu/global_menu.py:220 -#: lib/menu/global_menu.py:220 msgid "Enter root password (leave blank to disable root): " msgstr "" -#: lib/user_interaction.py:307 lib/user_interaction.py:324 -#: lib/user_interaction/manage_users_conf.py:86 -#: lib/user_interaction/manage_users_conf.py:121 -#: lib/user_interaction/manage_users_conf.py:86 -#: lib/user_interaction/manage_users_conf.py:121 msgid "Password for user \"{}\": " msgstr "" -#: lib/user_interaction.py:405 lib/user_interaction.py:408 -#: lib/user_interaction.py:407 lib/user_interaction/general_conf.py:152 -#: lib/user_interaction/general_conf.py:152 msgid "" "Verifying that additional packages exist (this might take a few seconds)" msgstr "" -#: lib/user_interaction.py:281 lib/user_interaction/general_conf.py:22 -#: lib/user_interaction/general_conf.py:22 msgid "" "Would you like to use automatic time synchronization (NTP) with the default " "time servers?\n" msgstr "" -#: lib/user_interaction.py:282 lib/user_interaction/general_conf.py:23 -#: lib/user_interaction/general_conf.py:23 msgid "" "Hardware time and other post-configuration steps might be required in order " "for NTP to work.\n" "For more information, please check the Arch wiki" msgstr "" -#: lib/menu/selection_menu.py:411 lib/menu/selection_menu.py:621 -#: lib/menu/selection_menu.py:629 msgid "Enter a username to create an additional user (leave blank to skip): " msgstr "" -#: lib/menu/menu.py:116 lib/menu/menu.py:116 msgid "Use ESC to skip\n" msgstr "" -#: lib/menu/list_manager.py:117 lib/menu/list_manager.py:117 msgid "" "\n" " Choose an object from the list, and select one of the available actions for " "it to execute" msgstr "" -#: lib/menu/list_manager.py:130 lib/user_interaction/subvolume_config.py:90 -#: lib/menu/list_manager.py:130 lib/user_interaction/subvolume_config.py:90 msgid "Cancel" msgstr "" -#: lib/menu/list_manager.py:131 lib/menu/list_manager.py:131 msgid "Confirm and exit" msgstr "" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:228 -#: lib/menu/list_manager.py:251 lib/menu/list_manager.py:276 -#: lib/user_interaction/subvolume_config.py:12 -#: lib/user_interaction/subvolume_config.py:44 -#: lib/user_interaction/subvolume_config.py:78 -#: lib/user_interaction/subvolume_config.py:82 -#: lib/user_interaction/subvolume_config.py:85 lib/menu/list_manager.py:135 -#: lib/menu/list_manager.py:228 lib/menu/list_manager.py:251 -#: lib/menu/list_manager.py:276 lib/user_interaction/subvolume_config.py:12 -#: lib/user_interaction/subvolume_config.py:44 -#: lib/user_interaction/subvolume_config.py:78 -#: lib/user_interaction/subvolume_config.py:82 -#: lib/user_interaction/subvolume_config.py:85 msgid "Add" msgstr "" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:231 -#: lib/menu/list_manager.py:255 lib/user_interaction/subvolume_config.py:78 -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:231 -#: lib/menu/list_manager.py:255 lib/user_interaction/subvolume_config.py:78 msgid "Copy" msgstr "" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:237 -#: lib/menu/list_manager.py:261 lib/user_interaction/subvolume_config.py:82 -#: lib/user_interaction/subvolume_config.py:85 lib/menu/list_manager.py:135 -#: lib/menu/list_manager.py:237 lib/menu/list_manager.py:261 -#: lib/user_interaction/subvolume_config.py:82 -#: lib/user_interaction/subvolume_config.py:85 msgid "Edit" msgstr "" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:242 -#: lib/menu/list_manager.py:264 lib/user_interaction/subvolume_config.py:40 -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:242 -#: lib/menu/list_manager.py:264 lib/user_interaction/subvolume_config.py:40 msgid "Delete" msgstr "" -#: lib/menu/list_manager.py:185 lib/menu/list_manager.py:185 msgid "Select an action for < {} >" msgstr "" -#: lib/menu/list_manager.py:229 lib/menu/list_manager.py:229 -msgid "Add :" -msgstr "" - -#: lib/menu/list_manager.py:233 lib/menu/list_manager.py:233 -msgid "Copy to :" -msgstr "" - -#: lib/menu/list_manager.py:240 lib/menu/list_manager.py:240 -msgid "Edite :" -msgstr "" - -#: lib/menu/list_manager.py:252 lib/menu/list_manager.py:252 -msgid "Key :" -msgstr "" - -#: lib/menu/list_manager.py:253 lib/menu/list_manager.py:253 -msgid "Value :" -msgstr "" - -#: lib/menu/list_manager.py:257 lib/menu/list_manager.py:257 msgid "Copy to new key:" msgstr "" -#: lib/menu/list_manager.py:262 lib/menu/list_manager.py:262 -#, python-brace-format -msgid "Edit {origkey} :" -msgstr "" - -#: lib/models/network_configuration.py:53 -#: lib/models/network_configuration.py:74 -#: lib/models/network_configuration.py:74 msgid "Unknown nic type: {}. Possible values are {}" msgstr "" -#: lib/configuration.py:75 lib/configuration.py:75 msgid "" "\n" "This is your chosen configuration:" msgstr "" -#: lib/pacman.py:18 lib/pacman.py:18 msgid "" "Pacman is already running, waiting maximum 10 minutes for it to terminate." msgstr "" -#: lib/pacman.py:25 lib/pacman.py:25 msgid "" "Pre-existing pacman lock never exited. Please clean up any existing pacman " "sessions before using archinstall." msgstr "" -#: lib/user_interaction/general_conf.py:174 -#: lib/user_interaction/general_conf.py:174 msgid "Choose which optional additional repositories to enable" msgstr "" -#: lib/user_interaction/manage_users_conf.py:32 -#: lib/user_interaction/manage_users_conf.py:32 -msgid "Add an user" +msgid "Add a user" msgstr "" -#: lib/user_interaction/manage_users_conf.py:33 -#: lib/user_interaction/manage_users_conf.py:33 msgid "Change password" msgstr "" -#: lib/user_interaction/manage_users_conf.py:34 -#: lib/user_interaction/manage_users_conf.py:34 msgid "Promote/Demote user" msgstr "" -#: lib/user_interaction/manage_users_conf.py:35 -#: lib/user_interaction/manage_users_conf.py:35 msgid "Delete User" msgstr "" -#: lib/user_interaction/manage_users_conf.py:99 -#: lib/user_interaction/manage_users_conf.py:99 msgid "" "\n" "Define a new user\n" msgstr "" -#: lib/user_interaction/manage_users_conf.py:100 -#: lib/user_interaction/manage_users_conf.py:100 msgid "User Name : " msgstr "" -#: lib/user_interaction/manage_users_conf.py:115 -#: lib/user_interaction/manage_users_conf.py:115 msgid "Should {} be a superuser (sudoer)?" msgstr "" -#: lib/user_interaction/manage_users_conf.py:161 msgid "Define users with sudo privilege: " msgstr "" -#: lib/user_interaction/network_conf.py:24 -#: lib/user_interaction/network_conf.py:24 msgid "No network configuration" msgstr "" -#: lib/user_interaction/partitioning_conf.py:128 -#: lib/user_interaction/partitioning_conf.py:129 -#: lib/user_interaction/partitioning_conf.py:129 msgid "Set desired subvolumes on a btrfs partition" msgstr "" -#: lib/user_interaction/partitioning_conf.py:296 -#: lib/user_interaction/partitioning_conf.py:303 -#: lib/user_interaction/partitioning_conf.py:303 msgid "" "{}\n" "\n" "Select which partition to set subvolumes on" msgstr "" -#: lib/user_interaction/partitioning_conf.py:305 -#: lib/user_interaction/partitioning_conf.py:312 -#: lib/user_interaction/partitioning_conf.py:312 msgid "Manage btrfs subvolumes for current partition" msgstr "" -#: lib/user_interaction/save_conf.py:24 lib/user_interaction/save_conf.py:29 -#: lib/user_interaction/save_conf.py:24 lib/user_interaction/save_conf.py:29 msgid "No configuration" msgstr "" -#: lib/user_interaction/save_conf.py:42 lib/user_interaction/save_conf.py:42 msgid "Save user configuration" msgstr "" -#: lib/user_interaction/save_conf.py:43 lib/user_interaction/save_conf.py:43 msgid "Save user credentials" msgstr "" -#: lib/user_interaction/save_conf.py:44 lib/user_interaction/save_conf.py:44 msgid "Save disk layout" msgstr "" -#: lib/user_interaction/save_conf.py:45 lib/user_interaction/save_conf.py:45 msgid "Save all" msgstr "" -#: lib/user_interaction/save_conf.py:48 lib/user_interaction/save_conf.py:48 msgid "Choose which configuration to save" msgstr "" -#: lib/user_interaction/save_conf.py:59 lib/user_interaction/save_conf.py:59 msgid "Enter a directory for the configuration(s) to be saved: " msgstr "" -#: lib/user_interaction/save_conf.py:63 lib/user_interaction/save_conf.py:63 msgid "Not a valid directory: {}" msgstr "" -#: lib/user_interaction/utils.py:32 lib/user_interaction/utils.py:32 msgid "The password you are using seems to be weak," msgstr "" -#: lib/user_interaction/utils.py:33 lib/user_interaction/utils.py:33 msgid "are you sure you want to use it?" msgstr "" -#: lib/user_interaction/global_menu.py:134 lib/menu/selection_menu.py:555 -#: lib/menu/global_menu.py:134 lib/menu/global_menu.py:134 -msgid "Additional repositories to enable" +msgid "Optional repositories" msgstr "" -#: lib/user_interaction/global_menu.py:155 lib/menu/selection_menu.py:576 -#: lib/menu/global_menu.py:155 lib/menu/global_menu.py:155 msgid "Save configuration" msgstr "" -#: lib/user_interaction/global_menu.py:192 lib/menu/selection_menu.py:613 -#: lib/menu/global_menu.py:192 lib/menu/global_menu.py:192 msgid "Missing configurations:\n" msgstr "" -#: lib/user_interaction/global_menu.py:210 lib/menu/selection_menu.py:631 -#: lib/menu/global_menu.py:210 lib/menu/global_menu.py:210 msgid "Either root-password or at least 1 superuser must be specified" msgstr "" -#: lib/user_interaction/global_menu.py:275 lib/menu/selection_menu.py:695 -#: lib/menu/global_menu.py:275 lib/menu/global_menu.py:275 msgid "Manage superuser accounts: " msgstr "" -#: lib/user_interaction/global_menu.py:279 lib/menu/selection_menu.py:699 -#: lib/menu/global_menu.py:279 lib/menu/global_menu.py:279 msgid "Manage ordinary user accounts: " msgstr "" -#: lib/user_interaction/subvolume_config.py:17 -#: lib/user_interaction/subvolume_config.py:17 msgid " Subvolume :{:16}" msgstr "" -#: lib/user_interaction/subvolume_config.py:19 -#: lib/user_interaction/subvolume_config.py:22 -#: lib/user_interaction/subvolume_config.py:19 -#: lib/user_interaction/subvolume_config.py:22 msgid " mounted at {:16}" msgstr "" -#: lib/user_interaction/subvolume_config.py:26 -#: lib/user_interaction/subvolume_config.py:26 msgid " with option {}" msgstr "" -#: lib/user_interaction/subvolume_config.py:46 -#: lib/user_interaction/subvolume_config.py:46 msgid "" "\n" " Fill the desired values for a new subvolume \n" msgstr "" -#: lib/user_interaction/subvolume_config.py:77 -#: lib/user_interaction/subvolume_config.py:77 msgid "Subvolume name " msgstr "" -#: lib/user_interaction/subvolume_config.py:81 -#: lib/user_interaction/subvolume_config.py:81 msgid "Subvolume mountpoint" msgstr "" -#: lib/user_interaction/subvolume_config.py:84 -#: lib/user_interaction/subvolume_config.py:84 msgid "Subvolume options" msgstr "" -#: lib/user_interaction/subvolume_config.py:87 -#: lib/user_interaction/subvolume_config.py:87 msgid "Save" msgstr "" -#: lib/user_interaction/subvolume_config.py:121 -#: lib/user_interaction/subvolume_config.py:121 msgid "Subvolume name :" msgstr "" -#: lib/user_interaction/subvolume_config.py:124 -#: lib/user_interaction/subvolume_config.py:124 msgid "Select a mount point :" msgstr "" -#: lib/user_interaction/subvolume_config.py:128 -#: lib/user_interaction/subvolume_config.py:128 msgid "Select the desired subvolume options " msgstr "" -#: lib/user_interaction/manage_users_conf.py:161 -#: lib/user_interaction/manage_users_conf.py:161 msgid "Define users with sudo privilege, by username: " msgstr "" -#: lib/installer.py:152 lib/installer.py:152 msgid "[!] A log file has been created here: {}" msgstr "" + +msgid "Would you like to use BTRFS subvolumes with a default structure?" +msgstr "" + +msgid "Would you like to use BTRFS compression?" +msgstr "" + +msgid "Would you like to create a separate partition for /home?" +msgstr "" + +msgid "" +"The selected drives do not have the minimum capacity required for an " +"automatic suggestion\n" +msgstr "" + +msgid "Minimum capacity for /home partition: {}GB\n" +msgstr "" + +msgid "Minimum capacity for Arch Linux partition: {}GB" +msgstr "" + +msgid "Continue" +msgstr "" + +msgid "yes" +msgstr "" + +msgid "no" +msgstr "" + +msgid "set: {}" +msgstr "" + +msgid "Manual configuration setting must be a list" +msgstr "" + +msgid "No iface specified for manual configuration" +msgstr "" + +msgid "Manual nic configuration with no auto DHCP requires an IP address" +msgstr "" + +msgid "Add interface" +msgstr "" + +msgid "Edit interface" +msgstr "" + +msgid "Delete interface" +msgstr "" + +msgid "Select interface to add" +msgstr "" + +msgid "Manual configuration" +msgstr "" + +msgid "Mark/Unmark a partition as compressed (btrfs only)" +msgstr "" + +msgid "" +"The password you are using seems to be weak, are you sure you want to use it?" +msgstr "" + +msgid "" +"Provides a selection of desktop environments and tiling window managers, e." +"g. gnome, kde, sway" +msgstr "" + +msgid "Select your desired desktop environment" +msgstr "" + +msgid "" +"A very basic installation that allows you to customize Arch Linux as you see " +"fit." +msgstr "" + +msgid "" +"Provides a selection of various server packages to install and enable, e.g. " +"httpd, nginx, mariadb" +msgstr "" + +msgid "" +"Choose which servers to install, if none then a minimal installation wil be " +"done" +msgstr "" + +msgid "Installs a minimal system as well as xorg and graphics drivers." +msgstr "" + +msgid "Press Enter to continue." +msgstr "" + +msgid "" +"Would you like to chroot into the newly created installation and perform " +"post-installation configuration?" +msgstr "" + +msgid "Are you sure you want to reset this setting?" +msgstr "" + +msgid "Select one or more hard drives to use and configure\n" +msgstr "" + +msgid "Any modifications to the existing setting will reset the disk layout!" +msgstr "" + +msgid "" +"If you reset the harddrive selection this will also reset the current disk " +"layout. Are you sure?" +msgstr "" + +msgid "Save and exit" +msgstr "" + +msgid "" +"{}\n" +"contains queued partitions, this will remove those, are you sure?" +msgstr "" + +msgid "No audio server" +msgstr "" + +msgid "(default)" +msgstr "" + +msgid "Use ESC to skip" +msgstr "" + +msgid "" +"Use CTRL+C to reset current selection\n" +"\n" +msgstr "" + +msgid "Copy to: " +msgstr "" + +msgid "Edit: " +msgstr "" + +msgid "Key: " +msgstr "" + +msgid "Edit {}: " +msgstr "" + +msgid "Add: " +msgstr "" + +msgid "Value: " +msgstr "" + +msgid "" +"You can skip selecting a drive and partitioning and use whatever drive-setup " +"is mounted at /mnt (experimental)" +msgstr "" + +msgid "Select one of the disks or skip and use /mnt as default" +msgstr "" + +msgid "Select which partitions to mark for formatting:" +msgstr "" + +msgid "Use HSM to unlock encrypted drive" +msgstr "" + +msgid "Device" +msgstr "" + +msgid "Size" +msgstr "" + +msgid "Free space" +msgstr "" + +msgid "Bus-type" +msgstr "" + +msgid "" +"Either root-password or at least 1 user with sudo privileges must be " +"specified" +msgstr "" + +msgid "Enter username (leave blank to skip): " +msgstr "" + +msgid "The username you entered is invalid. Try again" +msgstr "" + +msgid "Should \"{}\" be a superuser (sudo)?" +msgstr "" diff --git a/archinstall/locales/cs/LC_MESSAGES/base.mo b/archinstall/locales/cs/LC_MESSAGES/base.mo Binary files differnew file mode 100644 index 00000000..f9aa3407 --- /dev/null +++ b/archinstall/locales/cs/LC_MESSAGES/base.mo diff --git a/archinstall/locales/cs/LC_MESSAGES/base.po b/archinstall/locales/cs/LC_MESSAGES/base.po new file mode 100644 index 00000000..935f9ba2 --- /dev/null +++ b/archinstall/locales/cs/LC_MESSAGES/base.po @@ -0,0 +1,745 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: tajnymag\n" +"Language-Team: \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.0.1\n" + +msgid "[!] A log file has been created here: {} {}" +msgstr "[!] Soubor protokolu byl vytvořen zde: {} {}" + +msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" +msgstr " Prosím, informujte nás o této chybě (spolu se souborem) na https://github.com/archlinux/archinstall/issues" + +msgid "Do you really want to abort?" +msgstr "Skutečně chcete proces přerušit?" + +msgid "And one more time for verification: " +msgstr "Ještě jednou pro ověření: " + +msgid "Would you like to use swap on zram?" +msgstr "Přejete si použít swap na zram?" + +msgid "Desired hostname for the installation: " +msgstr "Název počítače k instalaci: " + +msgid "Username for required superuser with sudo privileges: " +msgstr "Uživatelské jméno pro superuživatele s oprávněními sudo: " + +msgid "Any additional users to install (leave blank for no users): " +msgstr "Další uživatelé, kteří mají být nainstalováni (ponechte prázdné pro žádné uživatele): " + +msgid "Should this user be a superuser (sudoer)?" +msgstr "Má být tento uživatel superuživatelem (sudoer)?" + +msgid "Select a timezone" +msgstr "Zvolte časovou zónu" + +msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" +msgstr "Přejete si použít GRUB jako hlavní zavaděč namísto systemd-boot?" + +msgid "Choose a bootloader" +msgstr "Zvolte zavaděč" + +msgid "Choose an audio server" +msgstr "Zvolte audio server" + +msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." +msgstr "Bude nainstalovány pouze balíčky jako base, base-devel, linux, linux-firmware, efibootmgr a volitelné balíčky profilu." + +msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." +msgstr "Pokud si přejete nainstalovat webový prohlížeč, jako je například firefox nebo chromium, můžete jej zadat do následujícího pole." + +msgid "Write additional packages to install (space separated, leave blank to skip): " +msgstr "Zadejte další balíčky k instalaci (odělené mezerou, ponechte prázdné k přeskočení): " + +msgid "Copy ISO network configuration to installation" +msgstr "Zkopírovat do instalace konfiguraci sítě z ISO" + +msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" +msgstr "Použít NetworkManager (potřebné pro grafickou konfiguraci v GNOME a KDE)" + +msgid "Select one network interface to configure" +msgstr "Zvolte zařízení, které konfigurovat" + +msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" +msgstr "Zvolte který režim má být nastaven pro \"{}\" nebo přeskočte pro použití výchozího režimu \"{}\"" + +msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " +msgstr "Zadejte IP a podsíť pro {} (např. 192.168.0.5/24) " + +msgid "Enter your gateway (router) IP address or leave blank for none: " +msgstr "Zadejte IP vaší brány (routeru) nebo ponechte prázdné pro žádnou: " + +msgid "Enter your DNS servers (space separated, blank for none): " +msgstr "Zadejte vaše DNS servery (oddělené mezerou, ponechte prázdné pro žádné): " + +msgid "Select which filesystem your main partition should use" +msgstr "Zvolte souborový systém, který se má použít pro váš hlavní oddíl" + +msgid "Current partition layout" +msgstr "Aktuální rozdělení disku" + +msgid "" +"Select what to do with\n" +"{}" +msgstr "Zvolte co dělat s {}" + +msgid "Enter a desired filesystem type for the partition" +msgstr "Zadejte požadovaný souborový systém pro oddíl" + +msgid "Enter the start sector (percentage or block number, default: {}): " +msgstr "Zadejte počáteční sektor (procenta nebo číslo bloku, výchozí: {}): " + +msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +msgstr "Zadejte koncový sektor oddílu (procenta nebo číslo bloku, např. {}): " + +msgid "{} contains queued partitions, this will remove those, are you sure?" +msgstr "{} obsahuje oddíly ve frontě, toto je odstraní, jste si jisti?" + +msgid "" +"{}\n" +"\n" +"Select by index which partitions to delete" +msgstr "" +"{}\n" +"\n" +"Vyberte podle indexu, které oddíly chcete odstranit" + +msgid "" +"{}\n" +"\n" +"Select by index which partition to mount where" +msgstr "" +"{}\n" +"\n" +"Vyberte podle indexu, který oddíl se má připojit kam" + +msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." +msgstr " * Přípojné body diskových oddílů jsou relativní uvnitř instalace, například spouštěcí bod by byl /boot." + +msgid "Select where to mount partition (leave blank to remove mountpoint): " +msgstr "Zvolte kam připojit oddíl (ponechte prázdné pro odstranění přípojného bodu): " + +msgid "" +"{}\n" +"\n" +"Select which partition to mask for formatting" +msgstr "" +"{}\n" +"\n" +"Zvolte oddíl, který bude označen ke zformátování" + +msgid "" +"{}\n" +"\n" +"Select which partition to mark as encrypted" +msgstr "" +"{}\n" +"\n" +"Zvolte oddíl, který bude označen jako šifrovaný" + +msgid "" +"{}\n" +"\n" +"Select which partition to mark as bootable" +msgstr "" +"{}\n" +"\n" +"Zvolte oddíl, který bude označen jako spouštěcí" + +msgid "" +"{}\n" +"\n" +"Select which partition to set a filesystem on" +msgstr "" +"{}\n" +"\n" +"Zvolte oddíl, na kterém bude souborový systém" + +msgid "Enter a desired filesystem type for the partition: " +msgstr "Zadejte požadovaný typ souborového systému pro oddíl: " + +msgid "Archinstall language" +msgstr "Jazyk pro Archinstall" + +msgid "Wipe all selected drives and use a best-effort default partition layout" +msgstr "Vymazat všechny vybrané disky a použít chytré výchozí rozdělení oddílů" + +msgid "Select what to do with each individual drive (followed by partition usage)" +msgstr "Zvolte, co se má udělat s jednotlivými disky (následováno použitím oddílu)" + +msgid "Select what you wish to do with the selected block devices" +msgstr "Zvolte, co si přejete udělat s vybranými blokovými zařízeními" + +msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" +msgstr "Toto je seznam před-programovaných profilů, které by mohly usnadnit instalaci věcí jako jsou desktopová prostředí" + +msgid "Select keyboard layout" +msgstr "Zvolte rozložení klávesnice" + +msgid "Select one of the regions to download packages from" +msgstr "Zvolte jeden z regionů ze kterého stahovat balíčky" + +msgid "Select one or more hard drives to use and configure" +msgstr "Zvolte jeden nebo více pevných disků k použití a konfiguraci" + +msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." +msgstr "Pro nejlepší kompatibilitu s vaším hardwarem AMD můžete použít buď možnost vše open-source nebo 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 "Pro nejlepší kompatibilitu s vaším hardwarem Intel můžete použít buď možnost vše open-source nebo Intel.\n" + +msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" +msgstr "Pro nejlepší kompatibilitu s vaším hardwarem Nvidia můžete použít buď možnost vše open-source nebo proprietární ovladač Nvidia.\n" + +msgid "" +"\n" +"\n" +"Select a graphics driver or leave blank to install all open-source drivers" +msgstr "" +"\n" +"\n" +"Zvolte ovladač grafické karty nebo ponechte prázdné k instalaci všech open-source ovladačů" + +msgid "All open-source (default)" +msgstr "Vše open-source (výchozí)" + +msgid "Choose which kernels to use or leave blank for default \"{}\"" +msgstr "Zvolte jádra, která mají být použita, nebo ponechte prázdné pro výchozí \"{}\"" + +msgid "Choose which locale language to use" +msgstr "Zvolte jazyk lokalizace, který chcete používat" + +msgid "Choose which locale encoding to use" +msgstr "Zvolte kódování lokalizace, které chcete používat" + +msgid "Select one of the values shown below: " +msgstr "Zvolte jednu z hodnot zobrazenou níže: " + +msgid "Select one or more of the options below: " +msgstr "Zvolte jednu nebo více možností níže: " + +msgid "Adding partition...." +msgstr "Přidávání nového oddílu..." + +msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." +msgstr "Chcete-li pokračovat, musíte zvolit platný typ souborového systému. Seznam validních typů najdete například ve výstupu `man parted`." + +msgid "Error: Listing profiles on URL \"{}\" resulted in:" +msgstr "Chyba: Výpis profilů z URL \"{}\" skončilo výstupem:" + +msgid "Error: Could not decode \"{}\" result as JSON:" +msgstr "Chyba: Nepodařilo se dekódovat výsledek \"{}\" jako JSON:" + +msgid "Keyboard layout" +msgstr "Rozložení klávesnice" + +msgid "Mirror region" +msgstr "Oblast zrcadla" + +msgid "Locale language" +msgstr "Místní jazyk" + +msgid "Locale encoding" +msgstr "Kódování místního jazyka" + +msgid "Drive(s)" +msgstr "Disk(y)" + +msgid "Disk layout" +msgstr "Rozdělení disku" + +msgid "Encryption password" +msgstr "Šifrovací heslo" + +msgid "Swap" +msgstr "Swap" + +msgid "Bootloader" +msgstr "Zavaděč" + +msgid "Root password" +msgstr "Heslo správce (root)" + +msgid "Superuser account" +msgstr "Účet superuživatele" + +msgid "User account" +msgstr "Uživatelský úšet" + +msgid "Profile" +msgstr "Profil" + +msgid "Audio" +msgstr "Audio" + +msgid "Kernels" +msgstr "Jádra" + +msgid "Additional packages" +msgstr "Dodatečné balíčky" + +msgid "Network configuration" +msgstr "Konfigurace sítě" + +msgid "Automatic time sync (NTP)" +msgstr "Automatická synchronizace času (NTP)" + +msgid "Install ({} config(s) missing)" +msgstr "Instalovat ({} konfigurace chybí)" + +msgid "" +"You decided to skip harddrive selection\n" +"and will use whatever drive-setup is mounted at {} (experimental)\n" +"WARNING: Archinstall won't check the suitability of this setup\n" +"Do you wish to continue?" +msgstr "" +"Rozhodli jste se přeskočit výběr pevného disku\n" +"a použijete jakýkoli disk, který je připojen na {} (experimentální)\n" +"VAROVÁNÍ: Archinstall nezkontroluje korektnost takové instalace\n" +"Přejete si pokračovat?" + +msgid "Re-using partition instance: {}" +msgstr "Použití existující instance oddílu: {}" + +msgid "Create a new partition" +msgstr "Vytvořit nový oddíl" + +msgid "Delete a partition" +msgstr "Smazat oddíl" + +msgid "Clear/Delete all partitions" +msgstr "Vyčistit/Smazat všechny oddíly" + +msgid "Assign mount-point for a partition" +msgstr "Přiřaďte přípojný bod k oddílu" + +msgid "Mark/Unmark a partition to be formatted (wipes data)" +msgstr "Označení/Odznačení oddílu ke zformátování (vymaže data)" + +msgid "Mark/Unmark a partition as encrypted" +msgstr "Označení/Odznačení oddílu jako šifrovaného" + +msgid "Mark/Unmark a partition as bootable (automatic for /boot)" +msgstr "Označení/Odznačení oddílu jako spouštěcího (automatické pro /boot)" + +msgid "Set desired filesystem for a partition" +msgstr "Zvolte požadovaný souborový systém pro oddíl" + +msgid "Abort" +msgstr "Přerušit" + +msgid "Hostname" +msgstr "Název počítače" + +msgid "Not configured, unavailable unless setup manually" +msgstr "Nenakonfigurováno, nedostupné mimo ruční instalaci" + +msgid "Timezone" +msgstr "Časová zóna" + +msgid "Set/Modify the below options" +msgstr "Nastavte/Upravte možnosti níže" + +msgid "Install" +msgstr "Instalovat" + +msgid "" +"Use ESC to skip\n" +"\n" +msgstr "" +"Pomocí ESC přeskočíte\n" +"\n" + +msgid "Suggest partition layout" +msgstr "Navrhnout rozdělení oddílů" + +msgid "Enter a password: " +msgstr "Zadejte heslo: " + +msgid "Enter a encryption password for {}" +msgstr "Zadejte šifrovací heslo pro {}" + +msgid "Enter disk encryption password (leave blank for no encryption): " +msgstr "Zadejte šifrovací heslo celého disku (ponechte prázdné pro nepoužití šifrování): " + +msgid "Create a required super-user with sudo privileges: " +msgstr "Vytvořte povinný účet superuživatele s oprávněními sudo: " + +msgid "Enter root password (leave blank to disable root): " +msgstr "Zadejte heslo uživatele root (ponechte prázdné k zakázání uživatele root)" + +msgid "Password for user \"{}\": " +msgstr "Heslo pro uživatele \"{}\": " + +msgid "Verifying that additional packages exist (this might take a few seconds)" +msgstr "Kontrola existence dodatečných balíčků (to může trvat několik sekund)" + +msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" +msgstr "Přejete si použít automatickou synchronizaci času (NTP) pomocí výchozích serverů?\n" + +msgid "" +"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" +"For more information, please check the Arch wiki" +msgstr "" +"Pro fungování NTP může být vyžadován hardwarový čas a další kroky po konfiguraci.\n" +"Pro další informace navštivte Arch Wiki." + +msgid "Enter a username to create an additional user (leave blank to skip): " +msgstr "Zadejte uživatelské jméno k přidání dalšího uživatele (ponechte prázdné k přeskočení): " + +msgid "Use ESC to skip\n" +msgstr "Pomocí ESC přeskočíte\n" + +msgid "" +"\n" +" Choose an object from the list, and select one of the available actions for it to execute" +msgstr "" +"\n" +"Vyberte objekt ze seznamu a zvolte k němu jednu z možných akcí" + +msgid "Cancel" +msgstr "Zrušit" + +msgid "Confirm and exit" +msgstr "Potvrdit a ukončit" + +msgid "Add" +msgstr "Přidat" + +msgid "Copy" +msgstr "Kopírovat" + +msgid "Edit" +msgstr "Upravit" + +msgid "Delete" +msgstr "Smazat" + +msgid "Select an action for < {} >" +msgstr "Zvolte akci pro < {} >" + +msgid "Copy to new key:" +msgstr "Zkopírovat k novému klíči:" + +msgid "Unknown nic type: {}. Possible values are {}" +msgstr "Neznámý typ nic: {}. Možné hodnoty jsou {}" + +msgid "" +"\n" +"This is your chosen configuration:" +msgstr "" +"\n" +"Toto je vaše konfigurace:" + +msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." +msgstr "Pacman je již spuštěn, po 10 minutách bude vynuceno jeho ukončení." + +msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." +msgstr "Nalezen zámek předchozí instance pacman. Před používáním archinstall, prosím, vyčistěte všechna existující sezení pacman." + +msgid "Choose which optional additional repositories to enable" +msgstr "Vyberte, které dodatečné balíčky mají být povoleny" + +msgid "Add a user" +msgstr "Přidat uživatele" + +msgid "Change password" +msgstr "Změnit heslo" + +msgid "Promote/Demote user" +msgstr "Udělení/Odebrání práv uživatele" + +msgid "Delete User" +msgstr "Smazat uživatele" + +msgid "" +"\n" +"Define a new user\n" +msgstr "" +"\n" +"Vytvořit nového uživatele\n" + +msgid "User Name : " +msgstr "Uživatelské jméno: " + +msgid "Should {} be a superuser (sudoer)?" +msgstr "Má být {} superuživatelem (sudoer)?" + +msgid "Define users with sudo privilege: " +msgstr "Specifikovat uživatele s oprávněními sudo: " + +msgid "No network configuration" +msgstr "Žádná konfigurace sítě" + +msgid "Set desired subvolumes on a btrfs partition" +msgstr "Nastavení požadované podsvazky na oddílu btrfs" + +msgid "" +"{}\n" +"\n" +"Select which partition to set subvolumes on" +msgstr "{} Zvolte oddíl, na kterém budou podsvazky nastaveny" + +msgid "Manage btrfs subvolumes for current partition" +msgstr "Spravovat podsvazky pro aktuální oddíl" + +msgid "No configuration" +msgstr "Žádná konfigurace" + +msgid "Save user configuration" +msgstr "Uložit uživatelskou konfiguraci" + +msgid "Save user credentials" +msgstr "Uložit přihlašovací údaje" + +msgid "Save disk layout" +msgstr "Uložit rozdělení disku" + +msgid "Save all" +msgstr "Uložit vše" + +msgid "Choose which configuration to save" +msgstr "Vyberte, které konfigurace mají být uloženy" + +msgid "Enter a directory for the configuration(s) to be saved: " +msgstr "Zadejte adresář pro uložení konfigurace (konfigurací): " + +msgid "Not a valid directory: {}" +msgstr "Adresář není validní: {}" + +msgid "The password you are using seems to be weak," +msgstr "Vaše heslo se zdá být slabé," + +msgid "are you sure you want to use it?" +msgstr "přejete si ho skutečně použít?" + +msgid "Optional repositories" +msgstr "Volitelné repozitáře" + +msgid "Save configuration" +msgstr "Uložit konfiguraci" + +msgid "Missing configurations:\n" +msgstr "Chybějící konfigurace:\n" + +msgid "Either root-password or at least 1 superuser must be specified" +msgstr "Musí být zadáno heslo správce (root) nebo musí existovat alespoň jeden superuživatel" + +msgid "Manage superuser accounts: " +msgstr "Spravovat účty superuživatele: " + +msgid "Manage ordinary user accounts: " +msgstr "Spravovat běžné účty: " + +msgid " Subvolume :{:16}" +msgstr "Podsvazek :{:16}" + +msgid " mounted at {:16}" +msgstr "připojen na :{:16}" + +msgid " with option {}" +msgstr "s přepínačem {}" + +msgid "" +"\n" +" Fill the desired values for a new subvolume \n" +msgstr "" +"\n" +"Zadejte požadované hodnoty pro nový podsvazek \n" + +msgid "Subvolume name " +msgstr "Název podsvazku" + +msgid "Subvolume mountpoint" +msgstr "Přípojný bod podsvazku" + +msgid "Subvolume options" +msgstr "Přepínače podsvazku" + +msgid "Save" +msgstr "Uložit" + +msgid "Subvolume name :" +msgstr "Název podsvazku" + +msgid "Select a mount point :" +msgstr "Zvolte přípojný bod:" + +msgid "Select the desired subvolume options " +msgstr "Zvolte požadované přepínače podsvazku" + +msgid "Define users with sudo privilege, by username: " +msgstr "Specifikace uživatelů s oprávněními sudo, pomocí uživatelského jména:" + +msgid "[!] A log file has been created here: {}" +msgstr "[!] Soubor s protokoly byl uložen zde: {}" + +msgid "Would you like to use BTRFS subvolumes with a default structure?" +msgstr "Přejete si použít výchozí strukturu BTRFS podsvazků?" + +msgid "Would you like to use BTRFS compression?" +msgstr "Přejete si použít BTRFS kompresi?" + +msgid "Would you like to create a separate partition for /home?" +msgstr "Přejete si vytvořit oddělený oddíl pro /home?" + +msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" +msgstr "Vybrané disky nemají dostatečnou kapacitu potřebnou k automatickému návrhu\n" + +msgid "Minimum capacity for /home partition: {}GB\n" +msgstr "Minimální kapacita pro oddíl /home: {}GB\n" + +msgid "Minimum capacity for Arch Linux partition: {}GB" +msgstr "Minimální kapacita pro oddíl s Arch Linux: {}GB" + +msgid "Continue" +msgstr "Pokračovat" + +msgid "yes" +msgstr "ano" + +msgid "no" +msgstr "ne" + +msgid "set: {}" +msgstr "nastavit: {}" + +msgid "Manual configuration setting must be a list" +msgstr "Ruční konfigurace musí být seznam" + +msgid "No iface specified for manual configuration" +msgstr "Pro ruční konfiguraci nebyl vybrán žádný iface" + +msgid "Manual nic configuration with no auto DHCP requires an IP address" +msgstr "Ruční konfigurace nic bez automatického DHCP vyžaduje IP adresu" + +msgid "Add interface" +msgstr "Přidat rozhraní" + +msgid "Edit interface" +msgstr "Upravit rozhraní" + +msgid "Delete interface" +msgstr "Smazat rozhraní" + +msgid "Select interface to add" +msgstr "Zvolit rozhraní k přidání" + +msgid "Manual configuration" +msgstr "Ruční konfigurace" + +msgid "Mark/Unmark a partition as compressed (btrfs only)" +msgstr "Označit/Odznačit oddíl s kompresí (jen pro btrfs)" + +msgid "The password you are using seems to be weak, are you sure you want to use it?" +msgstr "Vaše heslo se zdá být slabé, chcete ho skutečně použít?" + +msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" +msgstr "Nabízí výběr desktopových prostředí a tiling správců oken, např. gnome, kde, sway" + +msgid "Select your desired desktop environment" +msgstr "Zvolte si požadované desktopové prostředí" + +msgid "A very basic installation that allows you to customize Arch Linux as you see fit." +msgstr "Základní instalace, která vám umožní si nastavit Arch Linux jakkoliv si budete přát." + +msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" +msgstr "Nabízí výběr různých serverových balíčků k instalaci a aktivaci, např. httpd, nginx, mariadb" + +msgid "Choose which servers to install, if none then a minimal installation wil be done" +msgstr "Vyberte servery, které mají být nainstalovány, pokud nezvolíte žádné, bude provedena jen základní instalace" + +msgid "Installs a minimal system as well as xorg and graphics drivers." +msgstr "Nainstaluje minimalistický systém spolu s xorg a ovladači grafiky." + +msgid "Press Enter to continue." +msgstr "Stiskněte ENTER pro pokračování." + +msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" +msgstr "Přejete si vlézt skrze chroot do své nově vytvořené instalace a provést závěrečnou konfiguraci?" + +msgid "Are you sure you want to reset this setting?" +msgstr "Skutečně si přejete resetovat toto nastavení?" + +msgid "Select one or more hard drives to use and configure\n" +msgstr "Zvolte jeden nebo více pevných disků k použití a konfiguraci\n" + +msgid "Any modifications to the existing setting will reset the disk layout!" +msgstr "Jakékoliv úpravy stávajícího nastavení resetuje rozdělení disku!" + +msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" +msgstr "Pokud resetujete výběr disku, také tím resetujete stávající rozdělení. Přejete si pokračovat?" + +msgid "Save and exit" +msgstr "Uložit a ukončit" + +msgid "" +"{}\n" +"contains queued partitions, this will remove those, are you sure?" +msgstr "" +"{}\n" +"obsahuje oddíly ve frontě, toto je odstraní, jste si jisti?" + +msgid "No audio server" +msgstr "Žádný audio server" + +msgid "(default)" +msgstr "(výchozí)" + +msgid "Use ESC to skip" +msgstr "Pomocí ESC přeskočíte" + +msgid "" +"Use CTRL+C to reset current selection\n" +"\n" +msgstr "Pomocí CTRL+C zrušíte stávající výběr\n" + +msgid "Copy to: " +msgstr "Zkopírovat do:" + +msgid "Edit: " +msgstr "Upravit:" + +msgid "Key: " +msgstr "Klíč:" + +msgid "Edit {}: " +msgstr "Upravit {}: " + +msgid "Add: " +msgstr "Přidat: " + +msgid "Value: " +msgstr "Hodnota: " + +msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" +msgstr "Výběr disku a tvorbu oddílů můžete přeskočit a použít jakýkoliv setup, který je připojen na /mnt (experimentální)" + +msgid "Select one of the disks or skip and use /mnt as default" +msgstr "Zvolte jeden z disků nebo přeskočte a použijte /mnt jako výchozí" + +msgid "Select which partitions to mark for formatting:" +msgstr "Zvolte oddíly, které mají být označeny ke zformátování:" + +msgid "Use HSM to unlock encrypted drive" +msgstr "Použít HSM k odemykání zašifrovaného disku" + +msgid "Device" +msgstr "Zařízení" + +msgid "Size" +msgstr "Velikost" + +msgid "Free space" +msgstr "Volné místo" + +msgid "Bus-type" +msgstr "Typ sběrnice" diff --git a/archinstall/locales/de/LC_MESSAGES/base.mo b/archinstall/locales/de/LC_MESSAGES/base.mo Binary files differindex da89e7b1..3d58d749 100644 --- a/archinstall/locales/de/LC_MESSAGES/base.mo +++ b/archinstall/locales/de/LC_MESSAGES/base.mo diff --git a/archinstall/locales/de/LC_MESSAGES/base.po b/archinstall/locales/de/LC_MESSAGES/base.po index 5be554b7..51ecd8e9 100644 --- a/archinstall/locales/de/LC_MESSAGES/base.po +++ b/archinstall/locales/de/LC_MESSAGES/base.po @@ -9,109 +9,83 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.0\n" +"X-Generator: Poedit 3.0.1\n" -#: lib/installer.py:144 lib/installer.py:152 msgid "[!] A log file has been created here: {} {}" msgstr "[!] Eine Logdatei wurde erstellt: {} {}" -#: lib/installer.py:145 lib/installer.py:153 msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" msgstr "Bitte melden sie das Problem mit der erstellten Datei auf https://github.com/archlinux/archinstall/issues" -#: lib/user_interaction.py:83 lib/user_interaction/utils.py:86 msgid "Do you really want to abort?" msgstr "Wollen Sie wirklich abbrechen?" -#: lib/user_interaction.py:101 lib/user_interaction.py:104 lib/user_interaction/utils.py:53 msgid "And one more time for verification: " msgstr "Und nocheinmal zur Besätigung: " -#: lib/user_interaction.py:272 lib/user_interaction.py:275 lib/user_interaction/system_conf.py:142 msgid "Would you like to use swap on zram?" msgstr "Möchten Sie swap mit zram verwenden?" -#: lib/user_interaction.py:285 lib/user_interaction.py:288 lib/user_interaction/general_conf.py:33 msgid "Desired hostname for the installation: " msgstr "Gewnüschter Hostname für die Installation: " -#: lib/user_interaction.py:290 lib/user_interaction.py:293 msgid "Username for required superuser with sudo privileges: " msgstr "Benutzername für den erforderlichen superuser mit sudo Rechten: " -#: lib/user_interaction.py:310 lib/user_interaction.py:313 lib/user_interaction/manage_users_conf.py:167 msgid "Any additional users to install (leave blank for no users): " msgstr "Geben Sie weitere Benutzernamen ein die installiert werden sollen (leer lassen für keine weiteren Benutzer): " -#: lib/user_interaction.py:324 lib/user_interaction.py:327 msgid "Should this user be a superuser (sudoer)?" msgstr "Soll dieser Benutzer ein superuser sein (sudoer)?" -#: lib/user_interaction.py:340 lib/user_interaction.py:343 lib/user_interaction.py:346 lib/user_interaction/general_conf.py:41 msgid "Select a timezone" msgstr "Bitte wählen Sie eine Zeitzone aus" -#: lib/user_interaction.py:354 lib/user_interaction.py:357 lib/user_interaction.py:360 lib/user_interaction.py:359 lib/user_interaction/system_conf.py:115 msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" msgstr "Möchten Sie GRUB als bootloader anstelle von system-boot verwenden?" -#: lib/user_interaction.py:364 lib/user_interaction.py:367 lib/user_interaction.py:370 lib/user_interaction.py:369 lib/user_interaction/system_conf.py:125 msgid "Choose a bootloader" msgstr "Bitte wählen Sie einen bootloader aus" -#: lib/user_interaction.py:380 lib/user_interaction.py:383 lib/user_interaction.py:386 lib/user_interaction.py:385 lib/user_interaction/general_conf.py:53 msgid "Choose an audio server" msgstr "Bitte wählen Sie einen Audio server aus" -#: lib/user_interaction.py:391 lib/user_interaction.py:394 lib/user_interaction.py:397 lib/user_interaction.py:396 lib/user_interaction/general_conf.py:138 msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." msgstr "Nur die Packete base, base-devel, linux, linux-firmware, efibootmgr und optionale Profilpackete werden installiert" -#: lib/user_interaction.py:392 lib/user_interaction.py:395 lib/user_interaction.py:398 lib/user_interaction.py:397 lib/user_interaction/general_conf.py:139 msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." msgstr "Wenn Sie einen Webbrowser, z.B. Firefox oder Chromium, installieren möchten, können Sie diese nun eingeben." -#: lib/user_interaction.py:396 lib/user_interaction.py:399 lib/user_interaction.py:402 lib/user_interaction.py:401 lib/user_interaction/general_conf.py:143 msgid "Write additional packages to install (space separated, leave blank to skip): " msgstr "Schreiben Sie zusätzliche Packete die installiert werden sollen mit einem Leerzeichen getrennt (zum Überspringen leer lassen): " -#: lib/user_interaction.py:419 lib/user_interaction.py:422 lib/user_interaction.py:425 lib/user_interaction.py:424 lib/user_interaction/network_conf.py:25 msgid "Copy ISO network configuration to installation" msgstr "ISO netzwerk Einstellungen in die Installation kopieren" -#: lib/user_interaction.py:420 lib/user_interaction.py:423 lib/user_interaction.py:426 lib/user_interaction.py:425 lib/user_interaction/network_conf.py:26 msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" msgstr "NetworkManager benutzen (notwendig um Internet auf graphische Weise in GNOME und KDE einzustellen)" -#: lib/user_interaction.py:428 lib/user_interaction.py:431 lib/user_interaction.py:434 lib/user_interaction.py:433 lib/user_interaction/network_conf.py:43 msgid "Select one network interface to configure" msgstr "Bitte wählen Sie ein netzwerk zur Konfiguration aus" -#: lib/user_interaction.py:441 lib/user_interaction.py:444 lib/user_interaction.py:447 lib/user_interaction.py:446 lib/user_interaction/network_conf.py:70 msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" msgstr "Bitte wählen Sie einen Modus zur Konfiguration von \"{}\" aus oder Überspringen um mit dem voreingestellten Modus \"{}\" fortzufahren" -#: lib/user_interaction.py:446 lib/user_interaction.py:449 lib/user_interaction.py:452 lib/user_interaction.py:451 lib/user_interaction/network_conf.py:75 msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " msgstr "Bitte geben Sie eine IP Adresse und ein Subnet für {} ein (z.B. 192.168.0.5/24)" -#: lib/user_interaction.py:461 lib/user_interaction.py:464 lib/user_interaction.py:467 lib/user_interaction.py:466 lib/user_interaction/network_conf.py:86 msgid "Enter your gateway (router) IP address or leave blank for none: " msgstr "Bitte geben Sie eine gateway (router) IP Adresse ein (leer lassen für kein Adresse): " -#: lib/user_interaction.py:476 lib/user_interaction.py:479 lib/user_interaction.py:482 lib/user_interaction.py:481 lib/user_interaction/network_conf.py:102 msgid "Enter your DNS servers (space separated, blank for none): " msgstr "Bitte geben Sie die DNS server ein (mit Leerzeichen getrennt oder leer lassen für keinen server): " -#: lib/user_interaction.py:510 lib/user_interaction.py:513 lib/user_interaction.py:516 lib/user_interaction.py:515 lib/user_interaction/disk_conf.py:23 msgid "Select which filesystem your main partition should use" msgstr "Bitte wählen Sie ein Dateisystem aus, welches für die Hauptpartition verwendet werden soll" -#: lib/user_interaction.py:556 lib/user_interaction.py:559 lib/user_interaction.py:562 lib/user_interaction.py:561 lib/user_interaction/partitioning_conf.py:64 lib/user_interaction/partitioning_conf.py:63 msgid "Current partition layout" msgstr "Momentanes Partitionslayout" -#: lib/user_interaction.py:607 lib/user_interaction.py:614 lib/user_interaction.py:617 lib/user_interaction.py:620 lib/user_interaction.py:619 lib/user_interaction/partitioning_conf.py:145 lib/user_interaction/partitioning_conf.py:146 msgid "" "Select what to do with\n" "{}" @@ -119,23 +93,18 @@ msgstr "" "Bitte wählen Sie eine Aktion aus für\n" "{}" -#: lib/user_interaction.py:624 lib/user_interaction.py:709 lib/user_interaction.py:631 lib/user_interaction.py:716 lib/user_interaction.py:634 lib/user_interaction.py:719 lib/user_interaction.py:637 lib/user_interaction.py:722 lib/user_interaction.py:636 lib/user_interaction.py:721 lib/user_interaction/partitioning_conf.py:162 lib/user_interaction/partitioning_conf.py:255 lib/user_interaction/partitioning_conf.py:165 lib/user_interaction/partitioning_conf.py:260 msgid "Enter a desired filesystem type for the partition" msgstr "Bitte wählen Sie einen Dateisystemtyp für die Partition aus" -#: lib/user_interaction.py:626 lib/user_interaction.py:633 lib/user_interaction.py:636 lib/user_interaction.py:639 lib/user_interaction.py:638 lib/user_interaction/partitioning_conf.py:164 lib/user_interaction/partitioning_conf.py:167 msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "Bitte geben Sie den start Sektor ein (in Prozent oder Blocknummer, default: {}): " -#: lib/user_interaction.py:635 lib/user_interaction.py:642 lib/user_interaction.py:645 lib/user_interaction.py:648 lib/user_interaction.py:647 lib/user_interaction/partitioning_conf.py:174 lib/user_interaction/partitioning_conf.py:177 msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " msgstr "Bitte geben Sie den end Sektor ein (in Prozent oder Blocknummer, default: {}): " -#: lib/user_interaction.py:661 lib/user_interaction.py:668 lib/user_interaction.py:671 lib/user_interaction.py:674 lib/user_interaction.py:673 lib/user_interaction/partitioning_conf.py:203 lib/user_interaction/partitioning_conf.py:208 msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "{} enthält Partitionen in der Warteschlange, dies werden damit entfernt, sind sie sicher?" -#: lib/user_interaction.py:674 lib/user_interaction.py:681 lib/user_interaction.py:684 lib/user_interaction.py:687 lib/user_interaction.py:686 lib/user_interaction/partitioning_conf.py:216 lib/user_interaction/partitioning_conf.py:221 msgid "" "{}\n" "\n" @@ -145,7 +114,6 @@ msgstr "" "\n" "Wählen sie anhand vom index welche Partitionen gelöscht werden sollen" -#: lib/user_interaction.py:682 lib/user_interaction.py:689 lib/user_interaction.py:692 lib/user_interaction.py:695 lib/user_interaction.py:694 lib/user_interaction/partitioning_conf.py:226 lib/user_interaction/partitioning_conf.py:231 msgid "" "{}\n" "\n" @@ -155,15 +123,12 @@ msgstr "" "\n" "Wählen sie anhand vom index welche Partitionen zu mounten" -#: lib/user_interaction.py:686 lib/user_interaction.py:693 lib/user_interaction.py:696 lib/user_interaction.py:699 lib/user_interaction.py:698 lib/user_interaction/partitioning_conf.py:231 lib/user_interaction/partitioning_conf.py:236 msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." msgstr " * Die Mountorte sind relativ zur Installation, zum Beispiel boot würde gemountet auf /boot" -#: lib/user_interaction.py:687 lib/user_interaction.py:694 lib/user_interaction.py:697 lib/user_interaction.py:700 lib/user_interaction.py:699 lib/user_interaction/partitioning_conf.py:233 lib/user_interaction/partitioning_conf.py:238 msgid "Select where to mount partition (leave blank to remove mountpoint): " msgstr "Bitte geben sie an wo die Partition gemounted werden soll (leer lassen um den Mountort zu entfernen): " -#: lib/user_interaction.py:698 lib/user_interaction.py:705 lib/user_interaction.py:708 lib/user_interaction.py:711 lib/user_interaction.py:710 lib/user_interaction/partitioning_conf.py:244 lib/user_interaction/partitioning_conf.py:249 msgid "" "{}\n" "\n" @@ -173,7 +138,6 @@ msgstr "" "\n" "Bitte wählen sie welche Partition formatiert werden soll" -#: lib/user_interaction.py:717 lib/user_interaction.py:724 lib/user_interaction.py:727 lib/user_interaction.py:730 lib/user_interaction.py:729 lib/user_interaction/partitioning_conf.py:265 lib/user_interaction/partitioning_conf.py:270 msgid "" "{}\n" "\n" @@ -183,7 +147,6 @@ msgstr "" "\n" "Bitte wählen sie welche Partition verschlüsselt werden soll" -#: lib/user_interaction.py:725 lib/user_interaction.py:732 lib/user_interaction.py:735 lib/user_interaction.py:738 lib/user_interaction.py:737 lib/user_interaction/partitioning_conf.py:274 lib/user_interaction/partitioning_conf.py:279 msgid "" "{}\n" "\n" @@ -193,7 +156,6 @@ msgstr "" "\n" "Bitte wählen sie welche Partition bootbar ist" -#: lib/user_interaction.py:732 lib/user_interaction.py:739 lib/user_interaction.py:742 lib/user_interaction.py:745 lib/user_interaction.py:744 lib/user_interaction/partitioning_conf.py:282 lib/user_interaction/partitioning_conf.py:287 msgid "" "{}\n" "\n" @@ -203,55 +165,42 @@ msgstr "" "\n" "Bitte wählen sie auf welche Partition ein Dateisystem eingerichtet werden soll" -#: lib/user_interaction.py:739 lib/user_interaction.py:746 lib/user_interaction.py:749 lib/user_interaction.py:752 lib/user_interaction.py:751 lib/user_interaction/partitioning_conf.py:289 lib/user_interaction/partitioning_conf.py:294 msgid "Enter a desired filesystem type for the partition: " msgstr "Bitte geben sie einen gewünschten Dateisystemtyp für die Partition ein: " -#: lib/user_interaction.py:760 lib/menu/selection_menu.py:141 lib/user_interaction.py:767 lib/menu/selection_menu.py:139 lib/menu/selection_menu.py:143 lib/user_interaction.py:770 lib/user_interaction.py:773 lib/user_interaction.py:772 lib/menu/selection_menu.py:407 lib/menu/selection_menu.py:415 lib/menu/selection_menu.py:17 lib/user_interaction/general_conf.py:105 lib/user_interaction/global_menu.py:43 lib/menu/selection_menu.py:53 lib/menu/selection_menu.py:463 lib/menu/global_menu.py:43 -msgid "Select Archinstall language" +msgid "Archinstall language" msgstr "Sprache für Archinstall" -#: lib/user_interaction.py:765 lib/user_interaction.py:772 lib/user_interaction.py:775 lib/user_interaction.py:778 lib/user_interaction.py:777 lib/user_interaction/disk_conf.py:40 msgid "Wipe all selected drives and use a best-effort default partition layout" msgstr "Alle Laufwerke löschen und ein vorgegebenes Partitionenlayout verwenden" -#: lib/user_interaction.py:766 lib/user_interaction.py:773 lib/user_interaction.py:776 lib/user_interaction.py:779 lib/user_interaction.py:778 lib/user_interaction/disk_conf.py:41 msgid "Select what to do with each individual drive (followed by partition usage)" msgstr "Bitte geben sie an was mit jedem individuellem Laufwerk geschehen soll" -#: lib/user_interaction.py:769 lib/user_interaction.py:770 lib/user_interaction.py:777 lib/user_interaction.py:780 lib/user_interaction.py:783 lib/user_interaction.py:782 lib/user_interaction/disk_conf.py:45 msgid "Select what you wish to do with the selected block devices" msgstr "Bitte wählen sie was mit dem ausgewählten Gerät geschehen soll" -#: lib/user_interaction.py:822 lib/user_interaction.py:823 lib/user_interaction.py:830 lib/user_interaction.py:833 lib/user_interaction.py:836 lib/user_interaction.py:835 lib/user_interaction/general_conf.py:126 msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" msgstr "Dies ist eine Liste von bereits programmierten Profilen, diese ermöglichen es einfacher Desktop Umgebungen einzustellen" -#: lib/user_interaction.py:846 lib/user_interaction.py:847 lib/user_interaction.py:854 lib/user_interaction.py:857 lib/user_interaction.py:860 lib/user_interaction.py:859 lib/user_interaction/general_conf.py:71 -msgid "Select Keyboard layout" +msgid "Select keyboard layout" msgstr "Bitte wählen sie ein Tastaturlayout aus" -#: lib/user_interaction.py:861 lib/user_interaction.py:862 lib/user_interaction.py:869 lib/user_interaction.py:872 lib/user_interaction.py:875 lib/user_interaction.py:874 lib/user_interaction/general_conf.py:92 msgid "Select one of the regions to download packages from" msgstr "Bitte wählen sie eine Region zum downloaden von Packeten aus" -#: lib/user_interaction.py:883 lib/user_interaction.py:884 lib/user_interaction.py:891 lib/user_interaction.py:894 lib/user_interaction.py:897 lib/user_interaction.py:896 lib/user_interaction/system_conf.py:52 msgid "Select one or more hard drives to use and configure" msgstr "Bitte wählen sie eine oder mehrere Laufwerke aus die konfiguriert werden sollen" -#: lib/user_interaction.py:910 lib/user_interaction.py:911 lib/user_interaction.py:918 lib/user_interaction.py:921 lib/user_interaction.py:924 lib/user_interaction.py:923 lib/user_interaction/system_conf.py:80 msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." msgstr "Für die beste kompabilität mit ihrer AMD hardware, sollten sie womöglich die open-source oder AMD / ATI optionen verwenden" -#: lib/user_interaction.py:912 lib/user_interaction.py:913 lib/user_interaction.py:920 lib/user_interaction.py:923 lib/user_interaction.py:926 lib/user_interaction.py:925 lib/user_interaction/system_conf.py:84 msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" msgstr "Für die beste kompabilität mit ihrer Intel hardware, sollten sie womöglich die open-source oder Intel optionen verwenden.\n" -#: lib/user_interaction.py:914 lib/user_interaction.py:915 lib/user_interaction.py:922 lib/user_interaction.py:925 lib/user_interaction.py:928 lib/user_interaction.py:927 lib/user_interaction/system_conf.py:88 msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" msgstr "Für die beste kompabilität mit ihrer Nvidia hardware, sollten sie womöglich die Nvidia proprietary driver option verwenden.\n" -#: lib/user_interaction.py:917 lib/user_interaction.py:918 lib/user_interaction.py:925 lib/user_interaction.py:928 lib/user_interaction.py:931 lib/user_interaction.py:930 lib/user_interaction/system_conf.py:92 msgid "" "\n" "\n" @@ -261,123 +210,93 @@ msgstr "" "\n" "Bitte wählen sie einen Grafiktreiber aus oder leer lassen um alle open-source Treiber zu installieren" -#: lib/user_interaction.py:921 lib/user_interaction.py:922 lib/user_interaction.py:929 lib/user_interaction.py:932 lib/user_interaction.py:935 lib/user_interaction.py:934 lib/user_interaction/system_conf.py:96 msgid "All open-source (default)" msgstr "Alle open-source (default)" -#: lib/user_interaction.py:940 lib/user_interaction.py:941 lib/user_interaction.py:948 lib/user_interaction.py:951 lib/user_interaction.py:954 lib/user_interaction.py:953 lib/user_interaction/system_conf.py:28 msgid "Choose which kernels to use or leave blank for default \"{}\"" msgstr "Bitte wählen sie welche Kernel benutzt werden sollen oder leer lassen für default \"{}\"" -#: lib/user_interaction.py:954 lib/user_interaction.py:955 lib/user_interaction.py:962 lib/user_interaction.py:965 lib/user_interaction.py:968 lib/user_interaction.py:967 lib/user_interaction/locale_conf.py:16 msgid "Choose which locale language to use" msgstr "Bitte wählen sie eine lokale Sprache aus" -#: lib/user_interaction.py:968 lib/user_interaction.py:969 lib/user_interaction.py:976 lib/user_interaction.py:979 lib/user_interaction.py:982 lib/user_interaction.py:981 lib/user_interaction/locale_conf.py:29 msgid "Choose which locale encoding to use" msgstr "Bitte wählen sie eine lokale Kodierung aus" -#: lib/user_interaction.py:1009 lib/user_interaction.py:1010 lib/user_interaction.py:1017 lib/user_interaction.py:1020 lib/user_interaction.py:1023 lib/user_interaction.py:1022 lib/user_interaction/backwards_compatible_conf.py:49 msgid "Select one of the values shown below: " msgstr "Bitte wählen sie einen der folgenden Werte aus:" -#: lib/user_interaction.py:1050 lib/user_interaction.py:1051 lib/user_interaction.py:1058 lib/user_interaction.py:1061 lib/user_interaction.py:1064 lib/user_interaction.py:1063 lib/user_interaction/backwards_compatible_conf.py:88 msgid "Select one or more of the options below: " msgstr "Bitte wählen sie eine oder mehrere Optionen aus: " -#: lib/disk/filesystem.py:86 lib/disk/filesystem.py:87 msgid "Adding partition...." msgstr "Partitionen werden hinzugefügt..." -#: lib/disk/filesystem.py:139 lib/disk/filesystem.py:141 lib/disk/filesystem.py:142 msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." msgstr "Bitte geben sie einen gültigen Dateisystemtyp ein um fortzufahren. Wenden sie sich an \"man parted\" für eine Liste von gültigen Typen." -#: lib/profiles.py:89 lib/profiles.py:90 msgid "Error: Listing profiles on URL \"{}\" resulted in:" msgstr "Fehler: Auflistung von Profilen mit URL \"{}\":" -#: lib/profiles.py:92 lib/profiles.py:93 msgid "Error: Could not decode \"{}\" result as JSON:" msgstr "Fehler: \"{}\" konnte nicht in ein JSON format dekodiert werden:" -#: lib/menu/selection_menu.py:146 lib/menu/selection_menu.py:144 lib/menu/selection_menu.py:148 lib/menu/selection_menu.py:412 lib/menu/selection_menu.py:420 lib/user_interaction/global_menu.py:48 lib/menu/selection_menu.py:468 lib/menu/global_menu.py:48 -msgid "Select keyboard layout" -msgstr "Tastaturlayout auswählen" +msgid "Keyboard layout" +msgstr "Tastaturlayout" -#: lib/menu/selection_menu.py:149 lib/menu/selection_menu.py:147 lib/menu/selection_menu.py:151 lib/menu/selection_menu.py:415 lib/menu/selection_menu.py:423 lib/user_interaction/global_menu.py:51 lib/menu/selection_menu.py:471 lib/menu/global_menu.py:51 -msgid "Select mirror region" -msgstr "Mirror-region auswählen" +msgid "Mirror region" +msgstr "Mirror-region" -#: lib/menu/selection_menu.py:154 lib/menu/selection_menu.py:152 lib/menu/selection_menu.py:156 lib/menu/selection_menu.py:420 lib/menu/selection_menu.py:428 lib/user_interaction/global_menu.py:56 lib/menu/selection_menu.py:476 lib/menu/global_menu.py:56 -msgid "Select locale language" -msgstr "Lokale Sprache auswählen" +msgid "Locale language" +msgstr "Lokale Sprache" -#: lib/menu/selection_menu.py:156 lib/menu/selection_menu.py:154 lib/menu/selection_menu.py:158 lib/menu/selection_menu.py:422 lib/menu/selection_menu.py:430 lib/user_interaction/global_menu.py:58 lib/menu/selection_menu.py:478 lib/menu/global_menu.py:58 -msgid "Select locale encoding" -msgstr "Lokale Kodierung auswählen" +msgid "Locale encoding" +msgstr "Lokale Kodierung" -#: lib/menu/selection_menu.py:159 lib/menu/selection_menu.py:157 lib/menu/selection_menu.py:161 lib/menu/selection_menu.py:425 lib/menu/selection_menu.py:433 lib/user_interaction/global_menu.py:61 lib/menu/selection_menu.py:481 lib/menu/global_menu.py:61 -msgid "Select harddrives" -msgstr "Laufwerke auswählen" +msgid "Drive(s)" +msgstr "Laufwerke" -#: lib/menu/selection_menu.py:163 lib/menu/selection_menu.py:161 lib/menu/selection_menu.py:165 lib/menu/selection_menu.py:429 lib/menu/selection_menu.py:437 lib/user_interaction/global_menu.py:65 lib/menu/selection_menu.py:485 lib/menu/global_menu.py:65 msgid "Select disk layout" msgstr "Laufwerke-layout auswählen" -#: lib/menu/selection_menu.py:171 lib/menu/selection_menu.py:169 lib/menu/selection_menu.py:173 lib/menu/selection_menu.py:437 lib/menu/selection_menu.py:445 lib/user_interaction/global_menu.py:73 lib/menu/selection_menu.py:493 lib/menu/global_menu.py:73 msgid "Set encryption password" msgstr "Verschlüsselungspasswort angeben" -#: lib/menu/selection_menu.py:177 lib/menu/selection_menu.py:175 lib/menu/selection_menu.py:179 lib/menu/selection_menu.py:443 lib/menu/selection_menu.py:451 lib/user_interaction/global_menu.py:79 lib/menu/selection_menu.py:499 lib/menu/global_menu.py:79 -msgid "Use swap" -msgstr "Swap benützen" +msgid "Swap" +msgstr "Swap" -#: lib/menu/selection_menu.py:182 lib/menu/selection_menu.py:180 lib/menu/selection_menu.py:184 lib/menu/selection_menu.py:448 lib/menu/selection_menu.py:456 lib/user_interaction/global_menu.py:84 lib/menu/selection_menu.py:504 lib/menu/global_menu.py:84 -msgid "Select bootloader" -msgstr "Bootloader auswählen" +msgid "Bootloader" +msgstr "Bootloader" -#: lib/menu/selection_menu.py:188 lib/menu/selection_menu.py:186 lib/menu/selection_menu.py:190 lib/menu/selection_menu.py:454 lib/menu/selection_menu.py:462 lib/user_interaction/global_menu.py:95 lib/menu/selection_menu.py:515 lib/menu/global_menu.py:95 -msgid "Set root password" -msgstr "Root Passwort wählen" +msgid "root password" +msgstr "Root Passwort" -#: lib/menu/selection_menu.py:193 lib/menu/selection_menu.py:191 lib/menu/selection_menu.py:195 lib/menu/selection_menu.py:459 lib/menu/selection_menu.py:467 lib/user_interaction/global_menu.py:100 lib/menu/selection_menu.py:520 lib/menu/global_menu.py:100 -msgid "Specify superuser account" -msgstr "Superuser Konto wählen" +msgid "Superuser account" +msgstr "Superuser Konto" -#: lib/menu/selection_menu.py:199 lib/menu/selection_menu.py:197 lib/menu/selection_menu.py:201 lib/menu/selection_menu.py:465 lib/menu/selection_menu.py:473 lib/user_interaction/global_menu.py:107 lib/menu/selection_menu.py:528 lib/menu/global_menu.py:107 -msgid "Specify user account" -msgstr "Benutzerkonto wählen" +msgid "User account" +msgstr "Benutzerkonto" -#: lib/menu/selection_menu.py:205 lib/menu/selection_menu.py:203 lib/menu/selection_menu.py:207 lib/menu/selection_menu.py:471 lib/menu/selection_menu.py:479 lib/user_interaction/global_menu.py:114 lib/menu/selection_menu.py:535 lib/menu/global_menu.py:114 -msgid "Specify profile" -msgstr "Profile auswählen" +msgid "Profile" +msgstr "Profile" -#: lib/menu/selection_menu.py:210 lib/menu/selection_menu.py:208 lib/menu/selection_menu.py:212 lib/menu/selection_menu.py:476 lib/menu/selection_menu.py:484 lib/user_interaction/global_menu.py:119 lib/menu/selection_menu.py:540 lib/menu/global_menu.py:119 -msgid "Select audio" -msgstr "Audio auswählen" +msgid "Audio" +msgstr "Audio" -#: lib/menu/selection_menu.py:214 lib/menu/selection_menu.py:212 lib/menu/selection_menu.py:216 lib/menu/selection_menu.py:480 lib/menu/selection_menu.py:488 lib/user_interaction/global_menu.py:123 lib/menu/selection_menu.py:544 lib/menu/global_menu.py:123 -msgid "Select kernels" -msgstr "Kernel auswählen" +msgid "Kernels" +msgstr "Kernels" -#: lib/menu/selection_menu.py:219 lib/menu/selection_menu.py:217 lib/menu/selection_menu.py:221 lib/menu/selection_menu.py:485 lib/menu/selection_menu.py:493 lib/user_interaction/global_menu.py:128 lib/menu/selection_menu.py:549 lib/menu/global_menu.py:128 -msgid "Additional packages to install" -msgstr "Zus. Packete für die Installation" +msgid "Additional packages" +msgstr "Zus. Packete" -#: lib/menu/selection_menu.py:224 lib/menu/selection_menu.py:222 lib/menu/selection_menu.py:226 lib/menu/selection_menu.py:490 lib/menu/selection_menu.py:498 lib/user_interaction/global_menu.py:139 lib/menu/selection_menu.py:560 lib/menu/global_menu.py:139 -msgid "Configure network" +msgid "Network configuration" msgstr "Netzwerkonfiguration" -#: lib/menu/selection_menu.py:232 lib/menu/selection_menu.py:230 lib/menu/selection_menu.py:234 lib/menu/selection_menu.py:498 lib/menu/selection_menu.py:506 lib/user_interaction/global_menu.py:150 lib/menu/selection_menu.py:571 lib/menu/global_menu.py:150 -msgid "Set automatic time sync (NTP)" +msgid "Automatic time sync (NTP)" msgstr "Autom. Zeitsynchronisierung (NTP)" -#: lib/menu/selection_menu.py:310 lib/menu/selection_menu.py:308 lib/menu/selection_menu.py:315 lib/menu/selection_menu.py:527 lib/menu/selection_menu.py:535 lib/user_interaction/global_menu.py:187 lib/menu/selection_menu.py:608 lib/menu/global_menu.py:187 msgid "Install ({} config(s) missing)" msgstr "Installieren ({} konfiguration(en) ausständig)" -#: lib/menu/selection_menu.py:373 lib/menu/selection_menu.py:371 lib/menu/selection_menu.py:378 lib/menu/selection_menu.py:591 lib/menu/selection_menu.py:599 lib/user_interaction/global_menu.py:249 lib/menu/selection_menu.py:669 lib/menu/global_menu.py:249 msgid "" "You decided to skip harddrive selection\n" "and will use whatever drive-setup is mounted at {} (experimental)\n" @@ -389,67 +308,51 @@ msgstr "" "WARNUNG: Archinstall wird die Kompabilität der Einstellung nicht überprüfen\n" "Wollen sie trotzdem fortfahren?" -#: lib/disk/filesystem.py:97 lib/disk/filesystem.py:98 msgid "Re-using partition instance: {}" msgstr "Wiederverwenden der Partitionsinstanz: {}" -#: lib/user_interaction.py:590 lib/user_interaction.py:593 lib/user_interaction.py:596 lib/user_interaction.py:595 lib/user_interaction/partitioning_conf.py:119 lib/user_interaction/partitioning_conf.py:120 msgid "Create a new partition" msgstr "Neue Partition erstellen" -#: lib/user_interaction.py:592 lib/user_interaction.py:595 lib/user_interaction.py:598 lib/user_interaction.py:597 lib/user_interaction/partitioning_conf.py:121 lib/user_interaction/partitioning_conf.py:122 msgid "Delete a partition" msgstr "Partition löschen" -#: lib/user_interaction.py:593 lib/user_interaction.py:596 lib/user_interaction.py:599 lib/user_interaction.py:598 lib/user_interaction/partitioning_conf.py:122 lib/user_interaction/partitioning_conf.py:123 msgid "Clear/Delete all partitions" msgstr "Alle partitionen löschen" -#: lib/user_interaction.py:594 lib/user_interaction.py:597 lib/user_interaction.py:600 lib/user_interaction.py:599 lib/user_interaction/partitioning_conf.py:123 lib/user_interaction/partitioning_conf.py:124 msgid "Assign mount-point for a partition" msgstr "Mountort für Partition angeben" -#: lib/user_interaction.py:595 lib/user_interaction.py:598 lib/user_interaction.py:601 lib/user_interaction.py:600 lib/user_interaction/partitioning_conf.py:124 lib/user_interaction/partitioning_conf.py:125 msgid "Mark/Unmark a partition to be formatted (wipes data)" msgstr "Markieren welche Partition formattiert werden soll (alle Daten werden gelöscht)" -#: lib/user_interaction.py:596 lib/user_interaction.py:599 lib/user_interaction.py:602 lib/user_interaction.py:601 lib/user_interaction/partitioning_conf.py:125 lib/user_interaction/partitioning_conf.py:126 msgid "Mark/Unmark a partition as encrypted" msgstr "Markieren welche Partitionen verschlüsselt werden sollen" -#: lib/user_interaction.py:597 lib/user_interaction.py:600 lib/user_interaction.py:603 lib/user_interaction.py:602 lib/user_interaction/partitioning_conf.py:126 lib/user_interaction/partitioning_conf.py:127 msgid "Mark/Unmark a partition as bootable (automatic for /boot)" msgstr "Markieren welche Partition bootbar ist (automatisch für /boot)" -#: lib/user_interaction.py:598 lib/user_interaction.py:601 lib/user_interaction.py:604 lib/user_interaction.py:603 lib/user_interaction/partitioning_conf.py:127 lib/user_interaction/partitioning_conf.py:128 msgid "Set desired filesystem for a partition" msgstr "Bitte wählen Sie einen Dateisystemtyp für die Partition aus" -#: lib/menu/selection_menu.py:239 lib/menu/selection_menu.py:237 lib/menu/selection_menu.py:241 lib/menu/selection_menu.py:270 lib/menu/selection_menu.py:507 lib/menu/selection_menu.py:515 lib/user_interaction/global_menu.py:167 lib/menu/selection_menu.py:588 lib/menu/global_menu.py:167 msgid "Abort" msgstr "Abbrechen" -#: lib/menu/selection_menu.py:183 lib/menu/selection_menu.py:187 lib/menu/selection_menu.py:451 lib/menu/selection_menu.py:459 lib/user_interaction/global_menu.py:89 lib/menu/selection_menu.py:509 lib/menu/global_menu.py:89 -msgid "Specify hostname" -msgstr "Hostnamen wählen" +msgid "Hostname" +msgstr "Hostnamen" -#: lib/menu/selection_menu.py:228 lib/menu/selection_menu.py:492 lib/menu/selection_menu.py:500 lib/user_interaction/global_menu.py:141 lib/menu/selection_menu.py:562 lib/menu/global_menu.py:141 msgid "Not configured, unavailable unless setup manually" msgstr "Nicht konfiguriert, unverfügbar wenn nicht selber eingestellt" -#: lib/menu/selection_menu.py:231 lib/menu/selection_menu.py:495 lib/menu/selection_menu.py:503 lib/user_interaction/global_menu.py:145 lib/menu/selection_menu.py:566 lib/menu/global_menu.py:145 -msgid "Select timezone" -msgstr "Zeitzone wählen" +msgid "Timezone" +msgstr "Zeitzone" -#: lib/menu/selection_menu.py:266 lib/menu/selection_menu.py:276 lib/menu/selection_menu.py:312 msgid "Set/Modify the below options" msgstr "Setzen sie die unten stehenden Einstellungen" -#: lib/menu/selection_menu.py:272 msgid "Install" msgstr "Installieren" -#: lib/menu/menu.py:68 lib/menu/menu.py:75 lib/menu/menu.py:119 msgid "" "Use ESC to skip\n" "\n" @@ -457,43 +360,33 @@ msgstr "" "ESC um zu Überspringen\n" "\n" -#: lib/user_interaction.py:591 lib/user_interaction.py:594 lib/user_interaction.py:597 lib/user_interaction.py:596 lib/user_interaction/partitioning_conf.py:120 lib/user_interaction/partitioning_conf.py:121 msgid "Suggest partition layout" msgstr "Ein Partitionslayout vorschlagen" -#: lib/user_interaction.py:101 lib/user_interaction/utils.py:43 msgid "Enter a password: " msgstr "Passwort eingeben: " -#: lib/disk/filesystem.py:117 lib/disk/filesystem.py:118 msgid "Enter a encryption password for {}" msgstr "Verschlüsselungspasswort angeben für {}" -#: lib/menu/selection_menu.py:174 lib/menu/selection_menu.py:567 lib/menu/selection_menu.py:575 lib/user_interaction/global_menu.py:225 lib/menu/selection_menu.py:646 lib/menu/global_menu.py:225 msgid "Enter disk encryption password (leave blank for no encryption): " msgstr "Geben sie ein Verschlüsselungspasswort ein (leer lassen um zu Überspringen): " -#: lib/menu/selection_menu.py:407 lib/menu/selection_menu.py:617 lib/menu/selection_menu.py:625 msgid "Create a required super-user with sudo privileges: " msgstr "Geben sie einen super-user mit sudo Privilegien an: " -#: lib/menu/selection_menu.py:347 lib/menu/selection_menu.py:554 lib/menu/selection_menu.py:562 lib/user_interaction/global_menu.py:220 lib/menu/selection_menu.py:641 lib/menu/global_menu.py:220 msgid "Enter root password (leave blank to disable root): " msgstr "Geben sie ein Root passwort ein (leer lassen um Root zu deaktivieren): " -#: lib/user_interaction.py:307 lib/user_interaction.py:324 lib/user_interaction/manage_users_conf.py:86 lib/user_interaction/manage_users_conf.py:121 msgid "Password for user \"{}\": " msgstr "Passwort für Benutzer \"{}\": " -#: lib/user_interaction.py:405 lib/user_interaction.py:408 lib/user_interaction.py:407 lib/user_interaction/general_conf.py:152 msgid "Verifying that additional packages exist (this might take a few seconds)" msgstr "Angegebene Packete werden verifiziert (dies könnte einige Sekunden dauern)" -#: lib/user_interaction.py:281 lib/user_interaction/general_conf.py:22 msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" msgstr "Möchten sie automatische Zeitsynchronisierung mit dem default Server einschalten?\n" -#: lib/user_interaction.py:282 lib/user_interaction/general_conf.py:23 msgid "" "Hardware time and other post-configuration steps might be required in order for NTP to work.\n" "For more information, please check the Arch wiki" @@ -501,155 +394,96 @@ msgstr "" "Hardware Zeit und andere Einstellungsschritte könnten notwendig sein um NTP zu benutzen.\n" "Für weitere Informationen wenden sie sich bitte an das Arch wiki" -#: lib/menu/selection_menu.py:411 lib/menu/selection_menu.py:621 lib/menu/selection_menu.py:629 msgid "Enter a username to create an additional user (leave blank to skip): " msgstr "Geben sie einen weiteren Benutzernamen an der angelegt werden soll (leer lassen um zu Überspringen): " -#: lib/menu/menu.py:116 -#, fuzzy msgid "Use ESC to skip\n" -msgstr "" -"ESC um zu Überspringen\n" -"\n" +msgstr "ESC um zu Überspringen\n" -#: lib/menu/list_manager.py:117 msgid "" "\n" " Choose an object from the list, and select one of the available actions for it to execute" msgstr "" +"\n" +" Wählen sie ein Object aus der Liste aus und wählen sie anschließend eine Aktion dafür aus " -#: lib/menu/list_manager.py:130 lib/user_interaction/subvolume_config.py:90 msgid "Cancel" -msgstr "" +msgstr "Abbrechen" -#: lib/menu/list_manager.py:131 -#, fuzzy msgid "Confirm and exit" -msgstr "Netzwerkonfiguration" +msgstr "Bestätigen und Schließen" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:228 lib/menu/list_manager.py:251 lib/menu/list_manager.py:276 lib/user_interaction/subvolume_config.py:12 lib/user_interaction/subvolume_config.py:44 lib/user_interaction/subvolume_config.py:78 lib/user_interaction/subvolume_config.py:82 lib/user_interaction/subvolume_config.py:85 msgid "Add" -msgstr "" +msgstr "Hinzufügen" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:231 lib/menu/list_manager.py:255 lib/user_interaction/subvolume_config.py:78 msgid "Copy" -msgstr "" +msgstr "Kopieren" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:237 lib/menu/list_manager.py:261 lib/user_interaction/subvolume_config.py:82 lib/user_interaction/subvolume_config.py:85 msgid "Edit" -msgstr "" +msgstr "Bearbeiten" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:242 lib/menu/list_manager.py:264 lib/user_interaction/subvolume_config.py:40 msgid "Delete" -msgstr "" +msgstr "Löschen" -#: lib/menu/list_manager.py:185 -#, fuzzy msgid "Select an action for < {} >" -msgstr "" -"Bitte wählen Sie eine Aktion aus für\n" -"{}" +msgstr "Wählen sie eine Aktion aus für < {} >" -#: lib/menu/list_manager.py:229 -msgid "Add :" -msgstr "" - -#: lib/menu/list_manager.py:233 -msgid "Copy to :" -msgstr "" - -#: lib/menu/list_manager.py:240 -msgid "Edite :" -msgstr "" - -#: lib/menu/list_manager.py:252 -msgid "Key :" -msgstr "" - -#: lib/menu/list_manager.py:253 -msgid "Value :" -msgstr "" - -#: lib/menu/list_manager.py:257 msgid "Copy to new key:" -msgstr "" +msgstr "Kopieren nach neuem Schlüssel:" -#: lib/menu/list_manager.py:262 -#, python-brace-format -msgid "Edit {origkey} :" -msgstr "" - -#: lib/models/network_configuration.py:53 lib/models/network_configuration.py:74 msgid "Unknown nic type: {}. Possible values are {}" -msgstr "" +msgstr "Nicht erkannter Netzwerinterfacecontroller: {}. Erlaubte Werte {}" -#: lib/configuration.py:75 msgid "" "\n" "This is your chosen configuration:" msgstr "" +"\n" +"Das ist ihre gewählte Konfiguration:" -#: lib/pacman.py:18 msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "" +msgstr "Pacman läuft bereits, warten für maximal 10min auf Beendigung." -#: lib/pacman.py:25 msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "" +msgstr "Existierendes Pacman lock wurde nicht beendet. Bitte beenden sie existierende Pacman Sessions um archinstall benützen zu können." -#: lib/user_interaction/general_conf.py:174 msgid "Choose which optional additional repositories to enable" -msgstr "" +msgstr "Wählen sie welche zusätzlichen Repositories eingeschaltet werden sollen" -#: lib/user_interaction/manage_users_conf.py:32 -msgid "Add an user" -msgstr "" +msgid "Add a user" +msgstr "Benutzerkonto hinzufügen" -#: lib/user_interaction/manage_users_conf.py:33 -#, fuzzy msgid "Change password" -msgstr "Passwort eingeben: " +msgstr "Passwort ändern" -#: lib/user_interaction/manage_users_conf.py:34 msgid "Promote/Demote user" -msgstr "" +msgstr "Benutzerkonto Berechtigen/Einschränken" -#: lib/user_interaction/manage_users_conf.py:35 msgid "Delete User" -msgstr "" +msgstr "Benutzerkonto löschen" -#: lib/user_interaction/manage_users_conf.py:99 msgid "" "\n" "Define a new user\n" msgstr "" +"\n" +"Neues Benutzerkonto anlegen\n" -#: lib/user_interaction/manage_users_conf.py:100 msgid "User Name : " -msgstr "" +msgstr "Benutzername: " -#: lib/user_interaction/manage_users_conf.py:115 -#, fuzzy msgid "Should {} be a superuser (sudoer)?" -msgstr "Soll dieser Benutzer ein superuser sein (sudoer)?" +msgstr "Soll {} ein superuser sein (sudoer)?" -#: lib/user_interaction/manage_users_conf.py:161 -#, fuzzy msgid "Define users with sudo privilege: " -msgstr "Geben sie einen super-user mit sudo Privilegien an: " +msgstr "Geben sie super-user mit sudo Privilegien an: " -#: lib/user_interaction/network_conf.py:24 -#, fuzzy msgid "No network configuration" -msgstr "ISO netzwerk Einstellungen in die Installation kopieren" +msgstr "Keine Netzwerkkonfiguration" -#: lib/user_interaction/partitioning_conf.py:128 lib/user_interaction/partitioning_conf.py:129 -#, fuzzy msgid "Set desired subvolumes on a btrfs partition" -msgstr "Bitte wählen Sie einen Dateisystemtyp für die Partition aus" +msgstr "Bitte wählen Sie subvolumes für die Btrfs Partition" -#: lib/user_interaction/partitioning_conf.py:296 lib/user_interaction/partitioning_conf.py:303 -#, fuzzy msgid "" "{}\n" "\n" @@ -657,135 +491,258 @@ msgid "" msgstr "" "{}\n" "\n" -"Bitte wählen sie auf welche Partition ein Dateisystem eingerichtet werden soll" +"Bitte wählen sie auf welcher Partition subvolumes eingerichtet werden sollen" -#: lib/user_interaction/partitioning_conf.py:305 lib/user_interaction/partitioning_conf.py:312 msgid "Manage btrfs subvolumes for current partition" -msgstr "" +msgstr "Bearbeiten von Btrfs subvolumes für die aktuelle Partition" -#: lib/user_interaction/save_conf.py:24 lib/user_interaction/save_conf.py:29 msgid "No configuration" -msgstr "" +msgstr "Keine Konfiguration" -#: lib/user_interaction/save_conf.py:42 msgid "Save user configuration" -msgstr "" +msgstr "Benutzerkonfiguration speichern" -#: lib/user_interaction/save_conf.py:43 msgid "Save user credentials" -msgstr "" +msgstr "Benutzeranmeldedaten speichern" -#: lib/user_interaction/save_conf.py:44 -#, fuzzy msgid "Save disk layout" -msgstr "Laufwerke-layout auswählen" +msgstr "Laufwerke-layout speichern" -#: lib/user_interaction/save_conf.py:45 msgid "Save all" -msgstr "" +msgstr "Alle speichern" -#: lib/user_interaction/save_conf.py:48 -#, fuzzy msgid "Choose which configuration to save" -msgstr "Bitte wählen sie eine lokale Sprache aus" +msgstr "Bitte wählen sie eine Konfiguration aus welche gespeichert werden soll" -#: lib/user_interaction/save_conf.py:59 msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "" +msgstr "Geben sie eine Ordner an wo die Konfigurationen gespeichert werden sollen: " -#: lib/user_interaction/save_conf.py:63 msgid "Not a valid directory: {}" -msgstr "" +msgstr "Ordner existiert nicht: {}" -#: lib/user_interaction/utils.py:32 msgid "The password you are using seems to be weak," -msgstr "" +msgstr "Das gewählte Passwort ist sehr schwach," -#: lib/user_interaction/utils.py:33 -#, fuzzy msgid "are you sure you want to use it?" -msgstr "Wollen Sie wirklich abbrechen?" +msgstr "wollen sie dieses wirklich verwenden?" -#: lib/user_interaction/global_menu.py:134 lib/menu/selection_menu.py:555 lib/menu/global_menu.py:134 -#, fuzzy -msgid "Additional repositories to enable" -msgstr "Zus. Packete für die Installation" +msgid "Optional repositories" +msgstr "Zus. Repositories" -#: lib/user_interaction/global_menu.py:155 lib/menu/selection_menu.py:576 lib/menu/global_menu.py:155 msgid "Save configuration" -msgstr "" +msgstr "Konfiguration speichern" -#: lib/user_interaction/global_menu.py:192 lib/menu/selection_menu.py:613 lib/menu/global_menu.py:192 msgid "Missing configurations:\n" -msgstr "" +msgstr "Ausständige Konfigurationen:\n" -#: lib/user_interaction/global_menu.py:210 lib/menu/selection_menu.py:631 lib/menu/global_menu.py:210 msgid "Either root-password or at least 1 superuser must be specified" -msgstr "" +msgstr "Entweder root Passwort oder wenigstens 1 super-user muss konfiguriert sein" -#: lib/user_interaction/global_menu.py:275 lib/menu/selection_menu.py:695 lib/menu/global_menu.py:275 -#, fuzzy msgid "Manage superuser accounts: " -msgstr "Superuser Konto wählen" +msgstr "Superuser Konto bearbeiten: " -#: lib/user_interaction/global_menu.py:279 lib/menu/selection_menu.py:699 lib/menu/global_menu.py:279 -#, fuzzy msgid "Manage ordinary user accounts: " -msgstr "Benutzerkonto wählen" +msgstr "Benutzerkonten bearbeiten: " -#: lib/user_interaction/subvolume_config.py:17 msgid " Subvolume :{:16}" -msgstr "" +msgstr " Subvolume :{:16}" -#: lib/user_interaction/subvolume_config.py:19 lib/user_interaction/subvolume_config.py:22 msgid " mounted at {:16}" -msgstr "" +msgstr " Mounted an {:16}" -#: lib/user_interaction/subvolume_config.py:26 msgid " with option {}" -msgstr "" +msgstr "mit option {}" -#: lib/user_interaction/subvolume_config.py:46 msgid "" "\n" " Fill the desired values for a new subvolume \n" msgstr "" +"\n" +" Geben sie die gewünschten Werte für ein neues Subvolumen an \n" -#: lib/user_interaction/subvolume_config.py:77 msgid "Subvolume name " -msgstr "" +msgstr "Subvolumen name" -#: lib/user_interaction/subvolume_config.py:81 msgid "Subvolume mountpoint" -msgstr "" +msgstr "Subvolumen mountpunkt" -#: lib/user_interaction/subvolume_config.py:84 msgid "Subvolume options" -msgstr "" +msgstr "Subvolumen Optionen" -#: lib/user_interaction/subvolume_config.py:87 msgid "Save" -msgstr "" +msgstr "Speichern" -#: lib/user_interaction/subvolume_config.py:121 msgid "Subvolume name :" -msgstr "" +msgstr "Subvolumen name :" -#: lib/user_interaction/subvolume_config.py:124 -#, fuzzy msgid "Select a mount point :" -msgstr "Bitte wählen Sie eine Zeitzone aus" +msgstr "Bitte wählen Sie einen Mountpunkt aus" -#: lib/user_interaction/subvolume_config.py:128 msgid "Select the desired subvolume options " +msgstr "Wählen sie die gewünschte Subvolumen Optionen" + +msgid "Define users with sudo privilege, by username: " +msgstr "Geben sie Benutzer mit sudo Privilegien an: " + +msgid "[!] A log file has been created here: {}" +msgstr "[!] Eine Logdatei wurde erstellt: {}" + +msgid "Would you like to use BTRFS subvolumes with a default structure?" +msgstr "Möchten sie Btrfs Subvolumen mit vorgebener Struktur?" + +msgid "Would you like to use BTRFS compression?" +msgstr "Möchten sie Btrfs kompression?" + +msgid "Would you like to create a separate partition for /home?" +msgstr "Möchten sie eine separate Partition für /home?" + +msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" +msgstr "Die ausgewählten Laufwerke haben nicht genug Speicherplatz für eine automatische Vorgabe\n" + +msgid "Minimum capacity for /home partition: {}GB\n" +msgstr "Minimaler Speicherplatz für /home Partition: {}GB\n" + +msgid "Minimum capacity for Arch Linux partition: {}GB" +msgstr "Minimaler Speicherplatz für Arch Linux Partition: {}GB" + +msgid "Continue" +msgstr "Weiter" + +msgid "yes" +msgstr "ja" + +msgid "no" +msgstr "nein" + +msgid "set: {}" +msgstr "gewählt: {}" + +msgid "Manual configuration setting must be a list" +msgstr "Manuelle Konfiguration muss eine Liste sein" + +msgid "No iface specified for manual configuration" +msgstr "Kein Verbindung angegeben für eine manuelle Konfiguration" + +msgid "Manual nic configuration with no auto DHCP requires an IP address" +msgstr "Manuelle Konfiguration für Netzwerverbindung mit keinem auto DHCP benötigt eien IP Addresse" + +msgid "Add interface" +msgstr "Verbindung hinzufügen" + +msgid "Edit interface" +msgstr "Verbindung bearbeiten" + +msgid "Delete interface" +msgstr "Verbindung löschen" + +msgid "Select interface to add" +msgstr "Wählen sie eine Verbindung welche hinzugefügt werden soll" + +msgid "Manual configuration" +msgstr "Manuelle konfiguration" + +msgid "Mark/Unmark a partition as compressed (btrfs only)" +msgstr "Markieren/Unmarkieren Kompression von einer Partition (nur Btrfs) " + +msgid "The password you are using seems to be weak, are you sure you want to use it?" +msgstr "Das gewählte Passwort ist schwach, möchten sie trotzdem fortfahren?" + +msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" +msgstr "Auswahl von Desktopumgebungen und tiling window managern, z.B. gnome, kde, sway" + +msgid "Select your desired desktop environment" +msgstr "Wählen sie eine Desktopumgebung aus" + +msgid "A very basic installation that allows you to customize Arch Linux as you see fit." +msgstr "Eine sehr minimale Installation welche es erlaubt Arch Linux weitgehend anzupassen" + +msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" +msgstr "Auswahl von Serverpaketen welche installiert werden sollen, z.B. httpd, nginx, mariadb" + +msgid "Choose which servers to install, if none then a minimal installation wil be done" +msgstr "Wählen sie die gewünschten Server aus welche installiert werden sollen" + +msgid "Installs a minimal system as well as xorg and graphics drivers." +msgstr "Installiert ein minimales System inklusive xorg und Graphiktreibern" + +msgid "Press Enter to continue." +msgstr "Drücken sie Enter um fortzufahren." + +msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" +msgstr "Möchten sie chroot in das neu installierte System um noch weitere manuelle Konfigurationen forzunehmen?" + +msgid "Are you sure you want to reset this setting?" +msgstr "Wollen Sie wirklich diese Konfiguration zurücksetzen?" + +msgid "Select one or more hard drives to use and configure\n" +msgstr "Bitte wählen sie eine oder mehrere Laufwerke aus die konfiguriert werden sollen\n" + +msgid "Any modifications to the existing setting will reset the disk layout!" +msgstr "Modifikationen zur momentanen Konfiguration führen zu einem Löschen der Laufwerkskonfiguration!" + +msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" +msgstr "Wenn sie die Laufwerkkonfiguration ändern, dann wird die Laufwer-layout zurückgesetzt. Sind sie sicher?" + +msgid "Save and exit" +msgstr "Speichern und zurück" + +msgid "" +"{}\n" +"contains queued partitions, this will remove those, are you sure?" +msgstr "" +"{}\n" +"enthält Partitionen in der Warteschlange, dies werden damit entfernt, sind sie sicher?" + +msgid "No audio server" +msgstr "Kein Audio server" + +msgid "(default)" +msgstr "(vorgegeben)" + +msgid "Use ESC to skip" +msgstr "ESC drücken um zu überspringen" + +msgid "" +"Use CTRL+C to reset current selection\n" +"\n" +msgstr "" +"Ctrl+C drücken um die Einstellungen zurückzusetzen\n" +"\n" + +msgid "Copy to: " +msgstr "Kopieren nach: " + +msgid "Edit: " +msgstr "Bearbeiten: " + +msgid "Key: " +msgstr "Schlüssel: " + +msgid "Edit {}: " +msgstr "Bearbeiten {}: " + +msgid "Add: " msgstr "" -#: lib/user_interaction/manage_users_conf.py:161 #, fuzzy -msgid "Define users with sudo privilege, by username: " -msgstr "Geben sie einen super-user mit sudo Privilegien an: " +msgid "Value: " +msgstr "Wert :" + +msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" +msgstr "" + +msgid "Select one of the disks or skip and use /mnt as default" +msgstr "" -#: lib/installer.py:152 #, fuzzy -msgid "[!] A log file has been created here: {}" -msgstr "[!] Eine Logdatei wurde erstellt: {} {}" +msgid "Select which partitions to mark for formatting:" +msgstr "" +"{}\n" +"\n" +"Bitte wählen sie welche Partition formatiert werden soll" + +#~ msgid "Add :" +#~ msgstr "Hinzufügen :" + +#~ msgid "Value :" +#~ msgstr "Wert :" diff --git a/archinstall/locales/en/LC_MESSAGES/base.mo b/archinstall/locales/en/LC_MESSAGES/base.mo Binary files differindex c89651e7..e6ac80c2 100644 --- a/archinstall/locales/en/LC_MESSAGES/base.mo +++ b/archinstall/locales/en/LC_MESSAGES/base.mo diff --git a/archinstall/locales/en/LC_MESSAGES/base.po b/archinstall/locales/en/LC_MESSAGES/base.po index 36fb34b9..531e20a9 100644 --- a/archinstall/locales/en/LC_MESSAGES/base.po +++ b/archinstall/locales/en/LC_MESSAGES/base.po @@ -1,353 +1,279 @@ msgid "" msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: en\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.0.1\n" -#: lib/installer.py:144 lib/installer.py:152 msgid "[!] A log file has been created here: {} {}" msgstr "" -#: lib/installer.py:145 lib/installer.py:153 msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" msgstr "" -#: lib/user_interaction.py:83 lib/user_interaction/utils.py:86 msgid "Do you really want to abort?" msgstr "" -#: lib/user_interaction.py:101 lib/user_interaction.py:104 lib/user_interaction/utils.py:53 msgid "And one more time for verification: " msgstr "" -#: lib/user_interaction.py:272 lib/user_interaction.py:275 lib/user_interaction/system_conf.py:142 msgid "Would you like to use swap on zram?" msgstr "" -#: lib/user_interaction.py:285 lib/user_interaction.py:288 lib/user_interaction/general_conf.py:33 msgid "Desired hostname for the installation: " msgstr "" -#: lib/user_interaction.py:290 lib/user_interaction.py:293 msgid "Username for required superuser with sudo privileges: " msgstr "" -#: lib/user_interaction.py:310 lib/user_interaction.py:313 lib/user_interaction/manage_users_conf.py:167 msgid "Any additional users to install (leave blank for no users): " msgstr "" -#: lib/user_interaction.py:324 lib/user_interaction.py:327 msgid "Should this user be a superuser (sudoer)?" msgstr "" -#: lib/user_interaction.py:340 lib/user_interaction.py:343 lib/user_interaction.py:346 lib/user_interaction/general_conf.py:41 msgid "Select a timezone" msgstr "" -#: lib/user_interaction.py:354 lib/user_interaction.py:357 lib/user_interaction.py:360 lib/user_interaction.py:359 lib/user_interaction/system_conf.py:115 msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" msgstr "" -#: lib/user_interaction.py:364 lib/user_interaction.py:367 lib/user_interaction.py:370 lib/user_interaction.py:369 lib/user_interaction/system_conf.py:125 msgid "Choose a bootloader" msgstr "" -#: lib/user_interaction.py:380 lib/user_interaction.py:383 lib/user_interaction.py:386 lib/user_interaction.py:385 lib/user_interaction/general_conf.py:53 msgid "Choose an audio server" msgstr "" -#: lib/user_interaction.py:391 lib/user_interaction.py:394 lib/user_interaction.py:397 lib/user_interaction.py:396 lib/user_interaction/general_conf.py:138 msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." msgstr "" -#: lib/user_interaction.py:392 lib/user_interaction.py:395 lib/user_interaction.py:398 lib/user_interaction.py:397 lib/user_interaction/general_conf.py:139 msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." msgstr "" -#: lib/user_interaction.py:396 lib/user_interaction.py:399 lib/user_interaction.py:402 lib/user_interaction.py:401 lib/user_interaction/general_conf.py:143 msgid "Write additional packages to install (space separated, leave blank to skip): " msgstr "" -#: lib/user_interaction.py:419 lib/user_interaction.py:422 lib/user_interaction.py:425 lib/user_interaction.py:424 lib/user_interaction/network_conf.py:25 msgid "Copy ISO network configuration to installation" msgstr "" -#: lib/user_interaction.py:420 lib/user_interaction.py:423 lib/user_interaction.py:426 lib/user_interaction.py:425 lib/user_interaction/network_conf.py:26 msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" msgstr "" -#: lib/user_interaction.py:428 lib/user_interaction.py:431 lib/user_interaction.py:434 lib/user_interaction.py:433 lib/user_interaction/network_conf.py:43 msgid "Select one network interface to configure" msgstr "" -#: lib/user_interaction.py:441 lib/user_interaction.py:444 lib/user_interaction.py:447 lib/user_interaction.py:446 lib/user_interaction/network_conf.py:70 msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" msgstr "" -#: lib/user_interaction.py:446 lib/user_interaction.py:449 lib/user_interaction.py:452 lib/user_interaction.py:451 lib/user_interaction/network_conf.py:75 msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " msgstr "" -#: lib/user_interaction.py:461 lib/user_interaction.py:464 lib/user_interaction.py:467 lib/user_interaction.py:466 lib/user_interaction/network_conf.py:86 msgid "Enter your gateway (router) IP address or leave blank for none: " msgstr "" -#: lib/user_interaction.py:476 lib/user_interaction.py:479 lib/user_interaction.py:482 lib/user_interaction.py:481 lib/user_interaction/network_conf.py:102 msgid "Enter your DNS servers (space separated, blank for none): " msgstr "" -#: lib/user_interaction.py:510 lib/user_interaction.py:513 lib/user_interaction.py:516 lib/user_interaction.py:515 lib/user_interaction/disk_conf.py:23 msgid "Select which filesystem your main partition should use" msgstr "" -#: lib/user_interaction.py:556 lib/user_interaction.py:559 lib/user_interaction.py:562 lib/user_interaction.py:561 lib/user_interaction/partitioning_conf.py:64 lib/user_interaction/partitioning_conf.py:63 msgid "Current partition layout" msgstr "" -#: lib/user_interaction.py:607 lib/user_interaction.py:614 lib/user_interaction.py:617 lib/user_interaction.py:620 lib/user_interaction.py:619 lib/user_interaction/partitioning_conf.py:145 lib/user_interaction/partitioning_conf.py:146 msgid "" "Select what to do with\n" "{}" msgstr "" -#: lib/user_interaction.py:624 lib/user_interaction.py:709 lib/user_interaction.py:631 lib/user_interaction.py:716 lib/user_interaction.py:634 lib/user_interaction.py:719 lib/user_interaction.py:637 lib/user_interaction.py:722 lib/user_interaction.py:636 lib/user_interaction.py:721 lib/user_interaction/partitioning_conf.py:162 lib/user_interaction/partitioning_conf.py:255 lib/user_interaction/partitioning_conf.py:165 lib/user_interaction/partitioning_conf.py:260 msgid "Enter a desired filesystem type for the partition" msgstr "" -#: lib/user_interaction.py:626 lib/user_interaction.py:633 lib/user_interaction.py:636 lib/user_interaction.py:639 lib/user_interaction.py:638 lib/user_interaction/partitioning_conf.py:164 lib/user_interaction/partitioning_conf.py:167 msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "" -#: lib/user_interaction.py:635 lib/user_interaction.py:642 lib/user_interaction.py:645 lib/user_interaction.py:648 lib/user_interaction.py:647 lib/user_interaction/partitioning_conf.py:174 lib/user_interaction/partitioning_conf.py:177 msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " msgstr "" -#: lib/user_interaction.py:661 lib/user_interaction.py:668 lib/user_interaction.py:671 lib/user_interaction.py:674 lib/user_interaction.py:673 lib/user_interaction/partitioning_conf.py:203 lib/user_interaction/partitioning_conf.py:208 msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "" -#: lib/user_interaction.py:674 lib/user_interaction.py:681 lib/user_interaction.py:684 lib/user_interaction.py:687 lib/user_interaction.py:686 lib/user_interaction/partitioning_conf.py:216 lib/user_interaction/partitioning_conf.py:221 msgid "" "{}\n" "\n" "Select by index which partitions to delete" msgstr "" -#: lib/user_interaction.py:682 lib/user_interaction.py:689 lib/user_interaction.py:692 lib/user_interaction.py:695 lib/user_interaction.py:694 lib/user_interaction/partitioning_conf.py:226 lib/user_interaction/partitioning_conf.py:231 msgid "" "{}\n" "\n" "Select by index which partition to mount where" msgstr "" -#: lib/user_interaction.py:686 lib/user_interaction.py:693 lib/user_interaction.py:696 lib/user_interaction.py:699 lib/user_interaction.py:698 lib/user_interaction/partitioning_conf.py:231 lib/user_interaction/partitioning_conf.py:236 msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." msgstr "" -#: lib/user_interaction.py:687 lib/user_interaction.py:694 lib/user_interaction.py:697 lib/user_interaction.py:700 lib/user_interaction.py:699 lib/user_interaction/partitioning_conf.py:233 lib/user_interaction/partitioning_conf.py:238 msgid "Select where to mount partition (leave blank to remove mountpoint): " msgstr "" -#: lib/user_interaction.py:698 lib/user_interaction.py:705 lib/user_interaction.py:708 lib/user_interaction.py:711 lib/user_interaction.py:710 lib/user_interaction/partitioning_conf.py:244 lib/user_interaction/partitioning_conf.py:249 msgid "" "{}\n" "\n" "Select which partition to mask for formatting" msgstr "" -#: lib/user_interaction.py:717 lib/user_interaction.py:724 lib/user_interaction.py:727 lib/user_interaction.py:730 lib/user_interaction.py:729 lib/user_interaction/partitioning_conf.py:265 lib/user_interaction/partitioning_conf.py:270 msgid "" "{}\n" "\n" "Select which partition to mark as encrypted" msgstr "" -#: lib/user_interaction.py:725 lib/user_interaction.py:732 lib/user_interaction.py:735 lib/user_interaction.py:738 lib/user_interaction.py:737 lib/user_interaction/partitioning_conf.py:274 lib/user_interaction/partitioning_conf.py:279 msgid "" "{}\n" "\n" "Select which partition to mark as bootable" msgstr "" -#: lib/user_interaction.py:732 lib/user_interaction.py:739 lib/user_interaction.py:742 lib/user_interaction.py:745 lib/user_interaction.py:744 lib/user_interaction/partitioning_conf.py:282 lib/user_interaction/partitioning_conf.py:287 msgid "" "{}\n" "\n" "Select which partition to set a filesystem on" msgstr "" -#: lib/user_interaction.py:739 lib/user_interaction.py:746 lib/user_interaction.py:749 lib/user_interaction.py:752 lib/user_interaction.py:751 lib/user_interaction/partitioning_conf.py:289 lib/user_interaction/partitioning_conf.py:294 msgid "Enter a desired filesystem type for the partition: " msgstr "" -#: lib/user_interaction.py:760 lib/menu/selection_menu.py:141 lib/user_interaction.py:767 lib/menu/selection_menu.py:139 lib/menu/selection_menu.py:143 lib/user_interaction.py:770 lib/user_interaction.py:773 lib/user_interaction.py:772 lib/menu/selection_menu.py:407 lib/menu/selection_menu.py:415 lib/menu/selection_menu.py:17 lib/user_interaction/general_conf.py:105 lib/user_interaction/global_menu.py:43 lib/menu/selection_menu.py:53 lib/menu/selection_menu.py:463 lib/menu/global_menu.py:43 -msgid "Select Archinstall language" +msgid "Archinstall language" msgstr "" -#: lib/user_interaction.py:765 lib/user_interaction.py:772 lib/user_interaction.py:775 lib/user_interaction.py:778 lib/user_interaction.py:777 lib/user_interaction/disk_conf.py:40 msgid "Wipe all selected drives and use a best-effort default partition layout" msgstr "" -#: lib/user_interaction.py:766 lib/user_interaction.py:773 lib/user_interaction.py:776 lib/user_interaction.py:779 lib/user_interaction.py:778 lib/user_interaction/disk_conf.py:41 msgid "Select what to do with each individual drive (followed by partition usage)" msgstr "" -#: lib/user_interaction.py:769 lib/user_interaction.py:770 lib/user_interaction.py:777 lib/user_interaction.py:780 lib/user_interaction.py:783 lib/user_interaction.py:782 lib/user_interaction/disk_conf.py:45 msgid "Select what you wish to do with the selected block devices" msgstr "" -#: lib/user_interaction.py:822 lib/user_interaction.py:823 lib/user_interaction.py:830 lib/user_interaction.py:833 lib/user_interaction.py:836 lib/user_interaction.py:835 lib/user_interaction/general_conf.py:126 msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" msgstr "" -#: lib/user_interaction.py:846 lib/user_interaction.py:847 lib/user_interaction.py:854 lib/user_interaction.py:857 lib/user_interaction.py:860 lib/user_interaction.py:859 lib/user_interaction/general_conf.py:71 -msgid "Select Keyboard layout" +msgid "Select keyboard layout" msgstr "" -#: lib/user_interaction.py:861 lib/user_interaction.py:862 lib/user_interaction.py:869 lib/user_interaction.py:872 lib/user_interaction.py:875 lib/user_interaction.py:874 lib/user_interaction/general_conf.py:92 msgid "Select one of the regions to download packages from" msgstr "" -#: lib/user_interaction.py:883 lib/user_interaction.py:884 lib/user_interaction.py:891 lib/user_interaction.py:894 lib/user_interaction.py:897 lib/user_interaction.py:896 lib/user_interaction/system_conf.py:52 msgid "Select one or more hard drives to use and configure" msgstr "" -#: lib/user_interaction.py:910 lib/user_interaction.py:911 lib/user_interaction.py:918 lib/user_interaction.py:921 lib/user_interaction.py:924 lib/user_interaction.py:923 lib/user_interaction/system_conf.py:80 msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." msgstr "" -#: lib/user_interaction.py:912 lib/user_interaction.py:913 lib/user_interaction.py:920 lib/user_interaction.py:923 lib/user_interaction.py:926 lib/user_interaction.py:925 lib/user_interaction/system_conf.py:84 msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" msgstr "" -#: lib/user_interaction.py:914 lib/user_interaction.py:915 lib/user_interaction.py:922 lib/user_interaction.py:925 lib/user_interaction.py:928 lib/user_interaction.py:927 lib/user_interaction/system_conf.py:88 msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" msgstr "" -#: lib/user_interaction.py:917 lib/user_interaction.py:918 lib/user_interaction.py:925 lib/user_interaction.py:928 lib/user_interaction.py:931 lib/user_interaction.py:930 lib/user_interaction/system_conf.py:92 msgid "" "\n" "\n" "Select a graphics driver or leave blank to install all open-source drivers" msgstr "" -#: lib/user_interaction.py:921 lib/user_interaction.py:922 lib/user_interaction.py:929 lib/user_interaction.py:932 lib/user_interaction.py:935 lib/user_interaction.py:934 lib/user_interaction/system_conf.py:96 msgid "All open-source (default)" msgstr "" -#: lib/user_interaction.py:940 lib/user_interaction.py:941 lib/user_interaction.py:948 lib/user_interaction.py:951 lib/user_interaction.py:954 lib/user_interaction.py:953 lib/user_interaction/system_conf.py:28 msgid "Choose which kernels to use or leave blank for default \"{}\"" msgstr "" -#: lib/user_interaction.py:954 lib/user_interaction.py:955 lib/user_interaction.py:962 lib/user_interaction.py:965 lib/user_interaction.py:968 lib/user_interaction.py:967 lib/user_interaction/locale_conf.py:16 msgid "Choose which locale language to use" msgstr "" -#: lib/user_interaction.py:968 lib/user_interaction.py:969 lib/user_interaction.py:976 lib/user_interaction.py:979 lib/user_interaction.py:982 lib/user_interaction.py:981 lib/user_interaction/locale_conf.py:29 msgid "Choose which locale encoding to use" msgstr "" -#: lib/user_interaction.py:1009 lib/user_interaction.py:1010 lib/user_interaction.py:1017 lib/user_interaction.py:1020 lib/user_interaction.py:1023 lib/user_interaction.py:1022 lib/user_interaction/backwards_compatible_conf.py:49 msgid "Select one of the values shown below: " msgstr "" -#: lib/user_interaction.py:1050 lib/user_interaction.py:1051 lib/user_interaction.py:1058 lib/user_interaction.py:1061 lib/user_interaction.py:1064 lib/user_interaction.py:1063 lib/user_interaction/backwards_compatible_conf.py:88 msgid "Select one or more of the options below: " msgstr "" -#: lib/disk/filesystem.py:86 lib/disk/filesystem.py:87 msgid "Adding partition...." msgstr "" -#: lib/disk/filesystem.py:139 lib/disk/filesystem.py:141 lib/disk/filesystem.py:142 msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." msgstr "" -#: lib/profiles.py:89 lib/profiles.py:90 msgid "Error: Listing profiles on URL \"{}\" resulted in:" msgstr "" -#: lib/profiles.py:92 lib/profiles.py:93 msgid "Error: Could not decode \"{}\" result as JSON:" msgstr "" -#: lib/menu/selection_menu.py:146 lib/menu/selection_menu.py:144 lib/menu/selection_menu.py:148 lib/menu/selection_menu.py:412 lib/menu/selection_menu.py:420 lib/user_interaction/global_menu.py:48 lib/menu/selection_menu.py:468 lib/menu/global_menu.py:48 -msgid "Select keyboard layout" +msgid "Keyboard layout" msgstr "" -#: lib/menu/selection_menu.py:149 lib/menu/selection_menu.py:147 lib/menu/selection_menu.py:151 lib/menu/selection_menu.py:415 lib/menu/selection_menu.py:423 lib/user_interaction/global_menu.py:51 lib/menu/selection_menu.py:471 lib/menu/global_menu.py:51 -msgid "Select mirror region" +msgid "Mirror region" msgstr "" -#: lib/menu/selection_menu.py:154 lib/menu/selection_menu.py:152 lib/menu/selection_menu.py:156 lib/menu/selection_menu.py:420 lib/menu/selection_menu.py:428 lib/user_interaction/global_menu.py:56 lib/menu/selection_menu.py:476 lib/menu/global_menu.py:56 -msgid "Select locale language" +msgid "Locale language" msgstr "" -#: lib/menu/selection_menu.py:156 lib/menu/selection_menu.py:154 lib/menu/selection_menu.py:158 lib/menu/selection_menu.py:422 lib/menu/selection_menu.py:430 lib/user_interaction/global_menu.py:58 lib/menu/selection_menu.py:478 lib/menu/global_menu.py:58 -msgid "Select locale encoding" +msgid "Locale encoding" msgstr "" -#: lib/menu/selection_menu.py:159 lib/menu/selection_menu.py:157 lib/menu/selection_menu.py:161 lib/menu/selection_menu.py:425 lib/menu/selection_menu.py:433 lib/user_interaction/global_menu.py:61 lib/menu/selection_menu.py:481 lib/menu/global_menu.py:61 -msgid "Select harddrives" +msgid "Drive(s)" msgstr "" -#: lib/menu/selection_menu.py:163 lib/menu/selection_menu.py:161 lib/menu/selection_menu.py:165 lib/menu/selection_menu.py:429 lib/menu/selection_menu.py:437 lib/user_interaction/global_menu.py:65 lib/menu/selection_menu.py:485 lib/menu/global_menu.py:65 msgid "Select disk layout" msgstr "" -#: lib/menu/selection_menu.py:171 lib/menu/selection_menu.py:169 lib/menu/selection_menu.py:173 lib/menu/selection_menu.py:437 lib/menu/selection_menu.py:445 lib/user_interaction/global_menu.py:73 lib/menu/selection_menu.py:493 lib/menu/global_menu.py:73 msgid "Set encryption password" msgstr "" -#: lib/menu/selection_menu.py:177 lib/menu/selection_menu.py:175 lib/menu/selection_menu.py:179 lib/menu/selection_menu.py:443 lib/menu/selection_menu.py:451 lib/user_interaction/global_menu.py:79 lib/menu/selection_menu.py:499 lib/menu/global_menu.py:79 -msgid "Use swap" +msgid "Swap" msgstr "" -#: lib/menu/selection_menu.py:182 lib/menu/selection_menu.py:180 lib/menu/selection_menu.py:184 lib/menu/selection_menu.py:448 lib/menu/selection_menu.py:456 lib/user_interaction/global_menu.py:84 lib/menu/selection_menu.py:504 lib/menu/global_menu.py:84 -msgid "Select bootloader" +msgid "Bootloader" msgstr "" -#: lib/menu/selection_menu.py:188 lib/menu/selection_menu.py:186 lib/menu/selection_menu.py:190 lib/menu/selection_menu.py:454 lib/menu/selection_menu.py:462 lib/user_interaction/global_menu.py:95 lib/menu/selection_menu.py:515 lib/menu/global_menu.py:95 -msgid "Set root password" +msgid "root password" msgstr "" -#: lib/menu/selection_menu.py:193 lib/menu/selection_menu.py:191 lib/menu/selection_menu.py:195 lib/menu/selection_menu.py:459 lib/menu/selection_menu.py:467 lib/user_interaction/global_menu.py:100 lib/menu/selection_menu.py:520 lib/menu/global_menu.py:100 -msgid "Specify superuser account" +msgid "Superuser account" msgstr "" -#: lib/menu/selection_menu.py:199 lib/menu/selection_menu.py:197 lib/menu/selection_menu.py:201 lib/menu/selection_menu.py:465 lib/menu/selection_menu.py:473 lib/user_interaction/global_menu.py:107 lib/menu/selection_menu.py:528 lib/menu/global_menu.py:107 -msgid "Specify user account" +msgid "User account" msgstr "" -#: lib/menu/selection_menu.py:205 lib/menu/selection_menu.py:203 lib/menu/selection_menu.py:207 lib/menu/selection_menu.py:471 lib/menu/selection_menu.py:479 lib/user_interaction/global_menu.py:114 lib/menu/selection_menu.py:535 lib/menu/global_menu.py:114 -msgid "Specify profile" +msgid "Profile" msgstr "" -#: lib/menu/selection_menu.py:210 lib/menu/selection_menu.py:208 lib/menu/selection_menu.py:212 lib/menu/selection_menu.py:476 lib/menu/selection_menu.py:484 lib/user_interaction/global_menu.py:119 lib/menu/selection_menu.py:540 lib/menu/global_menu.py:119 -msgid "Select audio" +msgid "Audio" msgstr "" -#: lib/menu/selection_menu.py:214 lib/menu/selection_menu.py:212 lib/menu/selection_menu.py:216 lib/menu/selection_menu.py:480 lib/menu/selection_menu.py:488 lib/user_interaction/global_menu.py:123 lib/menu/selection_menu.py:544 lib/menu/global_menu.py:123 -msgid "Select kernels" +msgid "Kernels" msgstr "" -#: lib/menu/selection_menu.py:219 lib/menu/selection_menu.py:217 lib/menu/selection_menu.py:221 lib/menu/selection_menu.py:485 lib/menu/selection_menu.py:493 lib/user_interaction/global_menu.py:128 lib/menu/selection_menu.py:549 lib/menu/global_menu.py:128 -msgid "Additional packages to install" +msgid "Additional packages" msgstr "" -#: lib/menu/selection_menu.py:224 lib/menu/selection_menu.py:222 lib/menu/selection_menu.py:226 lib/menu/selection_menu.py:490 lib/menu/selection_menu.py:498 lib/user_interaction/global_menu.py:139 lib/menu/selection_menu.py:560 lib/menu/global_menu.py:139 -msgid "Configure network" +msgid "Network configuration" msgstr "" -#: lib/menu/selection_menu.py:232 lib/menu/selection_menu.py:230 lib/menu/selection_menu.py:234 lib/menu/selection_menu.py:498 lib/menu/selection_menu.py:506 lib/user_interaction/global_menu.py:150 lib/menu/selection_menu.py:571 lib/menu/global_menu.py:150 -msgid "Set automatic time sync (NTP)" +msgid "Automatic time sync (NTP)" msgstr "" -#: lib/menu/selection_menu.py:310 lib/menu/selection_menu.py:308 lib/menu/selection_menu.py:315 lib/menu/selection_menu.py:527 lib/menu/selection_menu.py:535 lib/user_interaction/global_menu.py:187 lib/menu/selection_menu.py:608 lib/menu/global_menu.py:187 msgid "Install ({} config(s) missing)" msgstr "" -#: lib/menu/selection_menu.py:373 lib/menu/selection_menu.py:371 lib/menu/selection_menu.py:378 lib/menu/selection_menu.py:591 lib/menu/selection_menu.py:599 lib/user_interaction/global_menu.py:249 lib/menu/selection_menu.py:669 lib/menu/global_menu.py:249 msgid "" "You decided to skip harddrive selection\n" "and will use whatever drive-setup is mounted at {} (experimental)\n" @@ -355,374 +281,411 @@ msgid "" "Do you wish to continue?" msgstr "" -#: lib/disk/filesystem.py:97 lib/disk/filesystem.py:98 msgid "Re-using partition instance: {}" msgstr "" -#: lib/user_interaction.py:590 lib/user_interaction.py:593 lib/user_interaction.py:596 lib/user_interaction.py:595 lib/user_interaction/partitioning_conf.py:119 lib/user_interaction/partitioning_conf.py:120 msgid "Create a new partition" msgstr "" -#: lib/user_interaction.py:592 lib/user_interaction.py:595 lib/user_interaction.py:598 lib/user_interaction.py:597 lib/user_interaction/partitioning_conf.py:121 lib/user_interaction/partitioning_conf.py:122 msgid "Delete a partition" msgstr "" -#: lib/user_interaction.py:593 lib/user_interaction.py:596 lib/user_interaction.py:599 lib/user_interaction.py:598 lib/user_interaction/partitioning_conf.py:122 lib/user_interaction/partitioning_conf.py:123 msgid "Clear/Delete all partitions" msgstr "" -#: lib/user_interaction.py:594 lib/user_interaction.py:597 lib/user_interaction.py:600 lib/user_interaction.py:599 lib/user_interaction/partitioning_conf.py:123 lib/user_interaction/partitioning_conf.py:124 msgid "Assign mount-point for a partition" msgstr "" -#: lib/user_interaction.py:595 lib/user_interaction.py:598 lib/user_interaction.py:601 lib/user_interaction.py:600 lib/user_interaction/partitioning_conf.py:124 lib/user_interaction/partitioning_conf.py:125 msgid "Mark/Unmark a partition to be formatted (wipes data)" msgstr "" -#: lib/user_interaction.py:596 lib/user_interaction.py:599 lib/user_interaction.py:602 lib/user_interaction.py:601 lib/user_interaction/partitioning_conf.py:125 lib/user_interaction/partitioning_conf.py:126 msgid "Mark/Unmark a partition as encrypted" msgstr "" -#: lib/user_interaction.py:597 lib/user_interaction.py:600 lib/user_interaction.py:603 lib/user_interaction.py:602 lib/user_interaction/partitioning_conf.py:126 lib/user_interaction/partitioning_conf.py:127 msgid "Mark/Unmark a partition as bootable (automatic for /boot)" msgstr "" -#: lib/user_interaction.py:598 lib/user_interaction.py:601 lib/user_interaction.py:604 lib/user_interaction.py:603 lib/user_interaction/partitioning_conf.py:127 lib/user_interaction/partitioning_conf.py:128 msgid "Set desired filesystem for a partition" msgstr "" -#: lib/menu/selection_menu.py:239 lib/menu/selection_menu.py:237 lib/menu/selection_menu.py:241 lib/menu/selection_menu.py:270 lib/menu/selection_menu.py:507 lib/menu/selection_menu.py:515 lib/user_interaction/global_menu.py:167 lib/menu/selection_menu.py:588 lib/menu/global_menu.py:167 msgid "Abort" msgstr "" -#: lib/menu/selection_menu.py:183 lib/menu/selection_menu.py:187 lib/menu/selection_menu.py:451 lib/menu/selection_menu.py:459 lib/user_interaction/global_menu.py:89 lib/menu/selection_menu.py:509 lib/menu/global_menu.py:89 -msgid "Specify hostname" +msgid "Hostname" msgstr "" -#: lib/menu/selection_menu.py:228 lib/menu/selection_menu.py:492 lib/menu/selection_menu.py:500 lib/user_interaction/global_menu.py:141 lib/menu/selection_menu.py:562 lib/menu/global_menu.py:141 msgid "Not configured, unavailable unless setup manually" msgstr "" -#: lib/menu/selection_menu.py:231 lib/menu/selection_menu.py:495 lib/menu/selection_menu.py:503 lib/user_interaction/global_menu.py:145 lib/menu/selection_menu.py:566 lib/menu/global_menu.py:145 -msgid "Select timezone" +msgid "Timezone" msgstr "" -#: lib/menu/selection_menu.py:266 lib/menu/selection_menu.py:276 lib/menu/selection_menu.py:312 msgid "Set/Modify the below options" msgstr "" -#: lib/menu/selection_menu.py:272 msgid "Install" msgstr "" -#: lib/menu/menu.py:68 lib/menu/menu.py:75 lib/menu/menu.py:119 msgid "" "Use ESC to skip\n" "\n" msgstr "" -#: lib/user_interaction.py:591 lib/user_interaction.py:594 lib/user_interaction.py:597 lib/user_interaction.py:596 lib/user_interaction/partitioning_conf.py:120 lib/user_interaction/partitioning_conf.py:121 msgid "Suggest partition layout" msgstr "" -#: lib/user_interaction.py:101 lib/user_interaction/utils.py:43 msgid "Enter a password: " msgstr "" -#: lib/disk/filesystem.py:117 lib/disk/filesystem.py:118 msgid "Enter a encryption password for {}" msgstr "" -#: lib/menu/selection_menu.py:174 lib/menu/selection_menu.py:567 lib/menu/selection_menu.py:575 lib/user_interaction/global_menu.py:225 lib/menu/selection_menu.py:646 lib/menu/global_menu.py:225 msgid "Enter disk encryption password (leave blank for no encryption): " msgstr "" -#: lib/menu/selection_menu.py:407 lib/menu/selection_menu.py:617 lib/menu/selection_menu.py:625 msgid "Create a required super-user with sudo privileges: " msgstr "" -#: lib/menu/selection_menu.py:347 lib/menu/selection_menu.py:554 lib/menu/selection_menu.py:562 lib/user_interaction/global_menu.py:220 lib/menu/selection_menu.py:641 lib/menu/global_menu.py:220 msgid "Enter root password (leave blank to disable root): " msgstr "" -#: lib/user_interaction.py:307 lib/user_interaction.py:324 lib/user_interaction/manage_users_conf.py:86 lib/user_interaction/manage_users_conf.py:121 msgid "Password for user \"{}\": " msgstr "" -#: lib/user_interaction.py:405 lib/user_interaction.py:408 lib/user_interaction.py:407 lib/user_interaction/general_conf.py:152 msgid "Verifying that additional packages exist (this might take a few seconds)" msgstr "" -#: lib/user_interaction.py:281 lib/user_interaction/general_conf.py:22 msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" msgstr "" -#: lib/user_interaction.py:282 lib/user_interaction/general_conf.py:23 msgid "" "Hardware time and other post-configuration steps might be required in order for NTP to work.\n" "For more information, please check the Arch wiki" msgstr "" -#: lib/menu/selection_menu.py:411 lib/menu/selection_menu.py:621 lib/menu/selection_menu.py:629 msgid "Enter a username to create an additional user (leave blank to skip): " msgstr "" -#: lib/menu/menu.py:116 msgid "Use ESC to skip\n" msgstr "" -#: lib/menu/list_manager.py:117 msgid "" "\n" " Choose an object from the list, and select one of the available actions for it to execute" msgstr "" -#: lib/menu/list_manager.py:130 lib/user_interaction/subvolume_config.py:90 msgid "Cancel" msgstr "" -#: lib/menu/list_manager.py:131 msgid "Confirm and exit" msgstr "" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:228 lib/menu/list_manager.py:251 lib/menu/list_manager.py:276 lib/user_interaction/subvolume_config.py:12 lib/user_interaction/subvolume_config.py:44 lib/user_interaction/subvolume_config.py:78 lib/user_interaction/subvolume_config.py:82 lib/user_interaction/subvolume_config.py:85 msgid "Add" msgstr "" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:231 lib/menu/list_manager.py:255 lib/user_interaction/subvolume_config.py:78 msgid "Copy" msgstr "" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:237 lib/menu/list_manager.py:261 lib/user_interaction/subvolume_config.py:82 lib/user_interaction/subvolume_config.py:85 msgid "Edit" msgstr "" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:242 lib/menu/list_manager.py:264 lib/user_interaction/subvolume_config.py:40 msgid "Delete" msgstr "" -#: lib/menu/list_manager.py:185 msgid "Select an action for < {} >" msgstr "" -#: lib/menu/list_manager.py:229 -msgid "Add :" -msgstr "" - -#: lib/menu/list_manager.py:233 -msgid "Copy to :" -msgstr "" - -#: lib/menu/list_manager.py:240 -msgid "Edite :" -msgstr "" - -#: lib/menu/list_manager.py:252 -msgid "Key :" -msgstr "" - -#: lib/menu/list_manager.py:253 -msgid "Value :" -msgstr "" - -#: lib/menu/list_manager.py:257 msgid "Copy to new key:" msgstr "" -#: lib/menu/list_manager.py:262 -#, python-brace-format -msgid "Edit {origkey} :" -msgstr "" - -#: lib/models/network_configuration.py:53 lib/models/network_configuration.py:74 msgid "Unknown nic type: {}. Possible values are {}" msgstr "" -#: lib/configuration.py:75 msgid "" "\n" "This is your chosen configuration:" msgstr "" -#: lib/pacman.py:18 msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." msgstr "" -#: lib/pacman.py:25 msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." msgstr "" -#: lib/user_interaction/general_conf.py:174 msgid "Choose which optional additional repositories to enable" msgstr "" -#: lib/user_interaction/manage_users_conf.py:32 -msgid "Add an user" +msgid "Add a user" msgstr "" -#: lib/user_interaction/manage_users_conf.py:33 msgid "Change password" msgstr "" -#: lib/user_interaction/manage_users_conf.py:34 msgid "Promote/Demote user" msgstr "" -#: lib/user_interaction/manage_users_conf.py:35 msgid "Delete User" msgstr "" -#: lib/user_interaction/manage_users_conf.py:99 msgid "" "\n" "Define a new user\n" msgstr "" -#: lib/user_interaction/manage_users_conf.py:100 msgid "User Name : " msgstr "" -#: lib/user_interaction/manage_users_conf.py:115 msgid "Should {} be a superuser (sudoer)?" msgstr "" -#: lib/user_interaction/manage_users_conf.py:161 msgid "Define users with sudo privilege: " msgstr "" -#: lib/user_interaction/network_conf.py:24 msgid "No network configuration" msgstr "" -#: lib/user_interaction/partitioning_conf.py:128 lib/user_interaction/partitioning_conf.py:129 msgid "Set desired subvolumes on a btrfs partition" msgstr "" -#: lib/user_interaction/partitioning_conf.py:296 lib/user_interaction/partitioning_conf.py:303 msgid "" "{}\n" "\n" "Select which partition to set subvolumes on" msgstr "" -#: lib/user_interaction/partitioning_conf.py:305 lib/user_interaction/partitioning_conf.py:312 msgid "Manage btrfs subvolumes for current partition" msgstr "" -#: lib/user_interaction/save_conf.py:24 lib/user_interaction/save_conf.py:29 msgid "No configuration" msgstr "" -#: lib/user_interaction/save_conf.py:42 msgid "Save user configuration" msgstr "" -#: lib/user_interaction/save_conf.py:43 msgid "Save user credentials" msgstr "" -#: lib/user_interaction/save_conf.py:44 msgid "Save disk layout" msgstr "" -#: lib/user_interaction/save_conf.py:45 msgid "Save all" msgstr "" -#: lib/user_interaction/save_conf.py:48 msgid "Choose which configuration to save" msgstr "" -#: lib/user_interaction/save_conf.py:59 msgid "Enter a directory for the configuration(s) to be saved: " msgstr "" -#: lib/user_interaction/save_conf.py:63 msgid "Not a valid directory: {}" msgstr "" -#: lib/user_interaction/utils.py:32 msgid "The password you are using seems to be weak," msgstr "" -#: lib/user_interaction/utils.py:33 msgid "are you sure you want to use it?" msgstr "" -#: lib/user_interaction/global_menu.py:134 lib/menu/selection_menu.py:555 lib/menu/global_menu.py:134 -msgid "Additional repositories to enable" +msgid "Optional repositories" msgstr "" -#: lib/user_interaction/global_menu.py:155 lib/menu/selection_menu.py:576 lib/menu/global_menu.py:155 msgid "Save configuration" msgstr "" -#: lib/user_interaction/global_menu.py:192 lib/menu/selection_menu.py:613 lib/menu/global_menu.py:192 msgid "Missing configurations:\n" msgstr "" -#: lib/user_interaction/global_menu.py:210 lib/menu/selection_menu.py:631 lib/menu/global_menu.py:210 msgid "Either root-password or at least 1 superuser must be specified" msgstr "" -#: lib/user_interaction/global_menu.py:275 lib/menu/selection_menu.py:695 lib/menu/global_menu.py:275 msgid "Manage superuser accounts: " msgstr "" -#: lib/user_interaction/global_menu.py:279 lib/menu/selection_menu.py:699 lib/menu/global_menu.py:279 msgid "Manage ordinary user accounts: " msgstr "" -#: lib/user_interaction/subvolume_config.py:17 msgid " Subvolume :{:16}" msgstr "" -#: lib/user_interaction/subvolume_config.py:19 lib/user_interaction/subvolume_config.py:22 msgid " mounted at {:16}" msgstr "" -#: lib/user_interaction/subvolume_config.py:26 msgid " with option {}" msgstr "" -#: lib/user_interaction/subvolume_config.py:46 msgid "" "\n" " Fill the desired values for a new subvolume \n" msgstr "" -#: lib/user_interaction/subvolume_config.py:77 msgid "Subvolume name " msgstr "" -#: lib/user_interaction/subvolume_config.py:81 msgid "Subvolume mountpoint" msgstr "" -#: lib/user_interaction/subvolume_config.py:84 msgid "Subvolume options" msgstr "" -#: lib/user_interaction/subvolume_config.py:87 msgid "Save" msgstr "" -#: lib/user_interaction/subvolume_config.py:121 msgid "Subvolume name :" msgstr "" -#: lib/user_interaction/subvolume_config.py:124 msgid "Select a mount point :" msgstr "" -#: lib/user_interaction/subvolume_config.py:128 msgid "Select the desired subvolume options " msgstr "" -#: lib/user_interaction/manage_users_conf.py:161 msgid "Define users with sudo privilege, by username: " msgstr "" -#: lib/installer.py:152 msgid "[!] A log file has been created here: {}" msgstr "" + +msgid "Would you like to use BTRFS subvolumes with a default structure?" +msgstr "" + +msgid "Would you like to use BTRFS compression?" +msgstr "" + +msgid "Would you like to create a separate partition for /home?" +msgstr "" + +msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" +msgstr "" + +msgid "Minimum capacity for /home partition: {}GB\n" +msgstr "" + +msgid "Minimum capacity for Arch Linux partition: {}GB" +msgstr "" + +msgid "Continue" +msgstr "" + +msgid "yes" +msgstr "" + +msgid "no" +msgstr "" + +msgid "set: {}" +msgstr "" + +msgid "Manual configuration setting must be a list" +msgstr "" + +msgid "No iface specified for manual configuration" +msgstr "" + +msgid "Manual nic configuration with no auto DHCP requires an IP address" +msgstr "" + +msgid "Add interface" +msgstr "" + +msgid "Edit interface" +msgstr "" + +msgid "Delete interface" +msgstr "" + +msgid "Select interface to add" +msgstr "" + +msgid "Manual configuration" +msgstr "" + +msgid "Mark/Unmark a partition as compressed (btrfs only)" +msgstr "" + +msgid "The password you are using seems to be weak, are you sure you want to use it?" +msgstr "" + +msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" +msgstr "" + +msgid "Select your desired desktop environment" +msgstr "" + +msgid "A very basic installation that allows you to customize Arch Linux as you see fit." +msgstr "" + +msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" +msgstr "" + +msgid "Choose which servers to install, if none then a minimal installation wil be done" +msgstr "" + +msgid "Installs a minimal system as well as xorg and graphics drivers." +msgstr "" + +msgid "Press Enter to continue." +msgstr "" + +msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" +msgstr "" + +msgid "Are you sure you want to reset this setting?" +msgstr "" + +msgid "Select one or more hard drives to use and configure\n" +msgstr "" + +msgid "Any modifications to the existing setting will reset the disk layout!" +msgstr "" + +msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" +msgstr "" + +msgid "Save and exit" +msgstr "" + +msgid "" +"{}\n" +"contains queued partitions, this will remove those, are you sure?" +msgstr "" + +msgid "No audio server" +msgstr "" + +msgid "(default)" +msgstr "" + +msgid "Use ESC to skip" +msgstr "" + +msgid "" +"Use CTRL+C to reset current selection\n" +"\n" +msgstr "" + +msgid "Copy to: " +msgstr "" + +msgid "Edit: " +msgstr "" + +msgid "Key: " +msgstr "" + +msgid "Edit {}: " +msgstr "" + +msgid "Add: " +msgstr "" + +msgid "Value: " +msgstr "" + +msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" +msgstr "" + +msgid "Select one of the disks or skip and use /mnt as default" +msgstr "" + +msgid "Select which partitions to mark for formatting:" +msgstr "" diff --git a/archinstall/locales/es/LC_MESSAGES/base.mo b/archinstall/locales/es/LC_MESSAGES/base.mo Binary files differindex ce51e8d8..08b79e92 100644 --- a/archinstall/locales/es/LC_MESSAGES/base.mo +++ b/archinstall/locales/es/LC_MESSAGES/base.mo diff --git a/archinstall/locales/es/LC_MESSAGES/base.po b/archinstall/locales/es/LC_MESSAGES/base.po index 7b113134..58afcbc3 100644 --- a/archinstall/locales/es/LC_MESSAGES/base.po +++ b/archinstall/locales/es/LC_MESSAGES/base.po @@ -3,6 +3,7 @@ msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" "PO-Revision-Date: \n" +"Last-Translator: \n" "Language-Team: \n" "Language: es\n" "MIME-Version: 1.0\n" @@ -10,107 +11,81 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.0.1\n" -#: lib/installer.py:144 lib/installer.py:152 msgid "[!] A log file has been created here: {} {}" -msgstr "[!] Un archivo de registro ha sido creado aquí: {} {}" +msgstr "[!] Se ha creado un archivo de registro aquí: {} {}" -#: lib/installer.py:145 lib/installer.py:153 msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" msgstr " Por favor envíe este problema (y archivo) a https://github.com/archlinux/archinstall/issues" -#: lib/user_interaction.py:83 lib/user_interaction/utils.py:86 msgid "Do you really want to abort?" -msgstr "Realmente desea abortar?" +msgstr "¿Realmente desea abortar?" -#: lib/user_interaction.py:101 lib/user_interaction.py:104 lib/user_interaction/utils.py:53 msgid "And one more time for verification: " msgstr "Una última vez para verificación: " -#: lib/user_interaction.py:272 lib/user_interaction.py:275 lib/user_interaction/system_conf.py:142 msgid "Would you like to use swap on zram?" -msgstr "Te gustaría usar swap en zram?" +msgstr "¿Te gustaría usar swap en zram?" -#: lib/user_interaction.py:285 lib/user_interaction.py:288 lib/user_interaction/general_conf.py:33 msgid "Desired hostname for the installation: " -msgstr "Hostname deseado para la instalación: " +msgstr "Nombre de host deseado para la instalación: " -#: lib/user_interaction.py:290 lib/user_interaction.py:293 msgid "Username for required superuser with sudo privileges: " msgstr "Nombre de usuario para el superusuario con privilegios sudo: " -#: lib/user_interaction.py:310 lib/user_interaction.py:313 lib/user_interaction/manage_users_conf.py:167 msgid "Any additional users to install (leave blank for no users): " msgstr "Algún usuario adicional a instalar (deje en blanco para no agregar ninguno): " -#: lib/user_interaction.py:324 lib/user_interaction.py:327 msgid "Should this user be a superuser (sudoer)?" msgstr "Debería este usuario ser un superusuario (sudoer)?" -#: lib/user_interaction.py:340 lib/user_interaction.py:343 lib/user_interaction.py:346 lib/user_interaction/general_conf.py:41 msgid "Select a timezone" -msgstr "Selecciona una zona horaria" +msgstr "Zona horaria" -#: lib/user_interaction.py:354 lib/user_interaction.py:357 lib/user_interaction.py:360 lib/user_interaction.py:359 lib/user_interaction/system_conf.py:115 msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" msgstr "Te gustaría usar GRUB como gestor de arranque en lugar de systemd-boot?" -#: lib/user_interaction.py:364 lib/user_interaction.py:367 lib/user_interaction.py:370 lib/user_interaction.py:369 lib/user_interaction/system_conf.py:125 msgid "Choose a bootloader" msgstr "Elige un gestor de arranque" -#: lib/user_interaction.py:380 lib/user_interaction.py:383 lib/user_interaction.py:386 lib/user_interaction.py:385 lib/user_interaction/general_conf.py:53 msgid "Choose an audio server" msgstr "Elige un servidor de audio" -#: lib/user_interaction.py:391 lib/user_interaction.py:394 lib/user_interaction.py:397 lib/user_interaction.py:396 lib/user_interaction/general_conf.py:138 msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." msgstr "Solo paquetes como base, base-devel, linux, linux-firmware, efibootmgr y paquetes opcionales de perfil se instalan." -#: lib/user_interaction.py:392 lib/user_interaction.py:395 lib/user_interaction.py:398 lib/user_interaction.py:397 lib/user_interaction/general_conf.py:139 msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." msgstr "Si desea un navegador web, como firefox o chromium, puede especificarlo en el siguiente diálogo." -#: lib/user_interaction.py:396 lib/user_interaction.py:399 lib/user_interaction.py:402 lib/user_interaction.py:401 lib/user_interaction/general_conf.py:143 msgid "Write additional packages to install (space separated, leave blank to skip): " msgstr "Escriba paquetes adicionales para instalar (separados por espacios, deja en blanco para omitir): " -#: lib/user_interaction.py:419 lib/user_interaction.py:422 lib/user_interaction.py:425 lib/user_interaction.py:424 lib/user_interaction/network_conf.py:25 msgid "Copy ISO network configuration to installation" msgstr "Copiar la configuración de red ISO a la instalación" -#: lib/user_interaction.py:420 lib/user_interaction.py:423 lib/user_interaction.py:426 lib/user_interaction.py:425 lib/user_interaction/network_conf.py:26 msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" msgstr "Usar NetworkManager (necesario para configurar internet gráficamente en GNOME y KDE)" -#: lib/user_interaction.py:428 lib/user_interaction.py:431 lib/user_interaction.py:434 lib/user_interaction.py:433 lib/user_interaction/network_conf.py:43 msgid "Select one network interface to configure" msgstr "Selecciona una interfaz de red para configurar" -#: lib/user_interaction.py:441 lib/user_interaction.py:444 lib/user_interaction.py:447 lib/user_interaction.py:446 lib/user_interaction/network_conf.py:70 msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "Selecciona el modo para configurar \"{}\" u omitir para usar el modo \"{}\" predeterminado" +msgstr "Seleccione qué modo configurar para \"{}\" o salte para usar el modo predeterminado \"{}\"" -#: lib/user_interaction.py:446 lib/user_interaction.py:449 lib/user_interaction.py:452 lib/user_interaction.py:451 lib/user_interaction/network_conf.py:75 msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " msgstr "Escriba la IP y subred para {} (ejemplo: 192.168.0.5/24): " -#: lib/user_interaction.py:461 lib/user_interaction.py:464 lib/user_interaction.py:467 lib/user_interaction.py:466 lib/user_interaction/network_conf.py:86 msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "Escriba la IP de su puerta de enlace (router) o deje en blanco para no usar ninguna: " +msgstr "Escriba la IP de su puerta de enlace (enrutador) o deje en blanco para no usar ninguna: " -#: lib/user_interaction.py:476 lib/user_interaction.py:479 lib/user_interaction.py:482 lib/user_interaction.py:481 lib/user_interaction/network_conf.py:102 msgid "Enter your DNS servers (space separated, blank for none): " msgstr "Escriba los servidores DNS (separados por espacios, en blanco para no usar ninguno): " -#: lib/user_interaction.py:510 lib/user_interaction.py:513 lib/user_interaction.py:516 lib/user_interaction.py:515 lib/user_interaction/disk_conf.py:23 msgid "Select which filesystem your main partition should use" msgstr "Selecciona el sistema de archivos que su partición principal debe usar" -#: lib/user_interaction.py:556 lib/user_interaction.py:559 lib/user_interaction.py:562 lib/user_interaction.py:561 lib/user_interaction/partitioning_conf.py:64 lib/user_interaction/partitioning_conf.py:63 msgid "Current partition layout" msgstr "Distribución actual de las particiones" -#: lib/user_interaction.py:607 lib/user_interaction.py:614 lib/user_interaction.py:617 lib/user_interaction.py:620 lib/user_interaction.py:619 lib/user_interaction/partitioning_conf.py:145 lib/user_interaction/partitioning_conf.py:146 msgid "" "Select what to do with\n" "{}" @@ -118,23 +93,18 @@ msgstr "" "Selecciona qué hacer con\n" "{}" -#: lib/user_interaction.py:624 lib/user_interaction.py:709 lib/user_interaction.py:631 lib/user_interaction.py:716 lib/user_interaction.py:634 lib/user_interaction.py:719 lib/user_interaction.py:637 lib/user_interaction.py:722 lib/user_interaction.py:636 lib/user_interaction.py:721 lib/user_interaction/partitioning_conf.py:162 lib/user_interaction/partitioning_conf.py:255 lib/user_interaction/partitioning_conf.py:165 lib/user_interaction/partitioning_conf.py:260 msgid "Enter a desired filesystem type for the partition" -msgstr "Escriba el tipo de sistema de archivos que desea para la partición" +msgstr "Ingrese un tipo de sistema de archivos deseado para la partición" -#: lib/user_interaction.py:626 lib/user_interaction.py:633 lib/user_interaction.py:636 lib/user_interaction.py:639 lib/user_interaction.py:638 lib/user_interaction/partitioning_conf.py:164 lib/user_interaction/partitioning_conf.py:167 msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "Escriba el sector de inicio (porcentaje o número de bloque, por defecto: {}): " -#: lib/user_interaction.py:635 lib/user_interaction.py:642 lib/user_interaction.py:645 lib/user_interaction.py:648 lib/user_interaction.py:647 lib/user_interaction/partitioning_conf.py:174 lib/user_interaction/partitioning_conf.py:177 msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " msgstr "Escriba el sector final de la partición (porcentaje o número de bloque, ej: {}): " -#: lib/user_interaction.py:661 lib/user_interaction.py:668 lib/user_interaction.py:671 lib/user_interaction.py:674 lib/user_interaction.py:673 lib/user_interaction/partitioning_conf.py:203 lib/user_interaction/partitioning_conf.py:208 msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "{} contiene particiones en cola, esto eliminará esas particiones, ¿estás seguro?" -#: lib/user_interaction.py:674 lib/user_interaction.py:681 lib/user_interaction.py:684 lib/user_interaction.py:687 lib/user_interaction.py:686 lib/user_interaction/partitioning_conf.py:216 lib/user_interaction/partitioning_conf.py:221 msgid "" "{}\n" "\n" @@ -144,7 +114,6 @@ msgstr "" "\n" "Selecciona por índice las particiones a eliminar" -#: lib/user_interaction.py:682 lib/user_interaction.py:689 lib/user_interaction.py:692 lib/user_interaction.py:695 lib/user_interaction.py:694 lib/user_interaction/partitioning_conf.py:226 lib/user_interaction/partitioning_conf.py:231 msgid "" "{}\n" "\n" @@ -154,15 +123,12 @@ msgstr "" "\n" "Selecciona por índice la ubicación de la partición a montar" -#: lib/user_interaction.py:686 lib/user_interaction.py:693 lib/user_interaction.py:696 lib/user_interaction.py:699 lib/user_interaction.py:698 lib/user_interaction/partitioning_conf.py:231 lib/user_interaction/partitioning_conf.py:236 msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." msgstr " * Los puntos de montaje de partición son relativos a la instalación, el arranque sería /boot como ejemplo." -#: lib/user_interaction.py:687 lib/user_interaction.py:694 lib/user_interaction.py:697 lib/user_interaction.py:700 lib/user_interaction.py:699 lib/user_interaction/partitioning_conf.py:233 lib/user_interaction/partitioning_conf.py:238 msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "Selecciona dónde montar la partición (deja en blanco para eliminar el punto de montaje): " +msgstr "Seleccione dónde montar la partición (deja en blanco para eliminar el punto de montaje): " -#: lib/user_interaction.py:698 lib/user_interaction.py:705 lib/user_interaction.py:708 lib/user_interaction.py:711 lib/user_interaction.py:710 lib/user_interaction/partitioning_conf.py:244 lib/user_interaction/partitioning_conf.py:249 msgid "" "{}\n" "\n" @@ -170,9 +136,8 @@ msgid "" msgstr "" "{}\n" "\n" -"Selecciona la partición a ocultar para formatear" +"Seleccione qué partición enmascarar para formatear" -#: lib/user_interaction.py:717 lib/user_interaction.py:724 lib/user_interaction.py:727 lib/user_interaction.py:730 lib/user_interaction.py:729 lib/user_interaction/partitioning_conf.py:265 lib/user_interaction/partitioning_conf.py:270 msgid "" "{}\n" "\n" @@ -180,9 +145,8 @@ msgid "" msgstr "" "{}\n" "\n" -"Selecciona la partición a marcar como encriptada" +"Seleccione qué partición marcar como encriptada" -#: lib/user_interaction.py:725 lib/user_interaction.py:732 lib/user_interaction.py:735 lib/user_interaction.py:738 lib/user_interaction.py:737 lib/user_interaction/partitioning_conf.py:274 lib/user_interaction/partitioning_conf.py:279 msgid "" "{}\n" "\n" @@ -190,9 +154,8 @@ msgid "" msgstr "" "{}\n" "\n" -"Selecciona la partición a marcar como bootable" +"Seleccione qué partición marcar como de arranque" -#: lib/user_interaction.py:732 lib/user_interaction.py:739 lib/user_interaction.py:742 lib/user_interaction.py:745 lib/user_interaction.py:744 lib/user_interaction/partitioning_conf.py:282 lib/user_interaction/partitioning_conf.py:287 msgid "" "{}\n" "\n" @@ -200,57 +163,44 @@ msgid "" msgstr "" "{}\n" "\n" -"Selecciona la partición a configurar con un sistema de archivos" +"Seleccione en qué partición establecer un sistema de archivos" -#: lib/user_interaction.py:739 lib/user_interaction.py:746 lib/user_interaction.py:749 lib/user_interaction.py:752 lib/user_interaction.py:751 lib/user_interaction/partitioning_conf.py:289 lib/user_interaction/partitioning_conf.py:294 msgid "Enter a desired filesystem type for the partition: " msgstr "Escriba el tipo de sistema de archivos que desea para la partición: " -#: lib/user_interaction.py:760 lib/menu/selection_menu.py:141 lib/user_interaction.py:767 lib/menu/selection_menu.py:139 lib/menu/selection_menu.py:143 lib/user_interaction.py:770 lib/user_interaction.py:773 lib/user_interaction.py:772 lib/menu/selection_menu.py:407 lib/menu/selection_menu.py:415 lib/menu/selection_menu.py:17 lib/user_interaction/general_conf.py:105 lib/user_interaction/global_menu.py:43 lib/menu/selection_menu.py:53 lib/menu/selection_menu.py:463 lib/menu/global_menu.py:43 -msgid "Select Archinstall language" -msgstr "Selecciona el idioma de Archinstall" +msgid "Archinstall language" +msgstr "Idioma de Archinstall" -#: lib/user_interaction.py:765 lib/user_interaction.py:772 lib/user_interaction.py:775 lib/user_interaction.py:778 lib/user_interaction.py:777 lib/user_interaction/disk_conf.py:40 msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Limpiar todos los discos seleccionados y usar una distribución de particiones por defecto" +msgstr "Borrar todas las unidades seleccionadas y use un diseño de partición predeterminado de mejor esfuerzo" -#: lib/user_interaction.py:766 lib/user_interaction.py:773 lib/user_interaction.py:776 lib/user_interaction.py:779 lib/user_interaction.py:778 lib/user_interaction/disk_conf.py:41 msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Selecciona qué hacer con cada disco individual (seguido por el uso de partición)" +msgstr "Seleccione qué hacer con cada unidad individual (seguido del uso de la partición)" -#: lib/user_interaction.py:769 lib/user_interaction.py:770 lib/user_interaction.py:777 lib/user_interaction.py:780 lib/user_interaction.py:783 lib/user_interaction.py:782 lib/user_interaction/disk_conf.py:45 msgid "Select what you wish to do with the selected block devices" -msgstr "Selecciona qué quieres hacer con los dispositivos de bloque seleccionados" +msgstr "Seleccione lo que desea hacer con los dispositivos de bloque seleccionados" -#: lib/user_interaction.py:822 lib/user_interaction.py:823 lib/user_interaction.py:830 lib/user_interaction.py:833 lib/user_interaction.py:836 lib/user_interaction.py:835 lib/user_interaction/general_conf.py:126 msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" msgstr "Esta es una lista de perfiles pre-programados, pueden facilitar la instalación de aplicaciones como entornos de escritorio" -#: lib/user_interaction.py:846 lib/user_interaction.py:847 lib/user_interaction.py:854 lib/user_interaction.py:857 lib/user_interaction.py:860 lib/user_interaction.py:859 lib/user_interaction/general_conf.py:71 -msgid "Select Keyboard layout" -msgstr "Selecciona la distribución del teclado" +msgid "Select keyboard layout" +msgstr "Seleccione la distribución del teclado" -#: lib/user_interaction.py:861 lib/user_interaction.py:862 lib/user_interaction.py:869 lib/user_interaction.py:872 lib/user_interaction.py:875 lib/user_interaction.py:874 lib/user_interaction/general_conf.py:92 msgid "Select one of the regions to download packages from" -msgstr "Selecciona una de las regiones para descargar paquetes" +msgstr "Seleccione una de las regiones para descargar paquetes desde" -#: lib/user_interaction.py:883 lib/user_interaction.py:884 lib/user_interaction.py:891 lib/user_interaction.py:894 lib/user_interaction.py:897 lib/user_interaction.py:896 lib/user_interaction/system_conf.py:52 msgid "Select one or more hard drives to use and configure" -msgstr "Selecciona uno o más discos duros para usar y configurar" +msgstr "Seleccione uno o más discos duros para usar y configurar" -#: lib/user_interaction.py:910 lib/user_interaction.py:911 lib/user_interaction.py:918 lib/user_interaction.py:921 lib/user_interaction.py:924 lib/user_interaction.py:923 lib/user_interaction/system_conf.py:80 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 la mejor compatibilidad con tu hardware AMD, puedes querer usar tanto la opción de todo código abierto como la opción AMD / ATI." -#: lib/user_interaction.py:912 lib/user_interaction.py:913 lib/user_interaction.py:920 lib/user_interaction.py:923 lib/user_interaction.py:926 lib/user_interaction.py:925 lib/user_interaction/system_conf.py:84 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 la mejor compatibilidad con tu hardware Intel, puedes querer usar tanto la opción de todo código abierto como la opción Intel.\n" -#: lib/user_interaction.py:914 lib/user_interaction.py:915 lib/user_interaction.py:922 lib/user_interaction.py:925 lib/user_interaction.py:928 lib/user_interaction.py:927 lib/user_interaction/system_conf.py:88 msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" msgstr "Para la mejor compatibilidad con tu hardware Nvidia, puedes querer usar el controlador propietario Nvidia.\n" -#: lib/user_interaction.py:917 lib/user_interaction.py:918 lib/user_interaction.py:925 lib/user_interaction.py:928 lib/user_interaction.py:931 lib/user_interaction.py:930 lib/user_interaction/system_conf.py:92 msgid "" "\n" "\n" @@ -258,125 +208,95 @@ msgid "" msgstr "" "\n" "\n" -"Selecciona un controlador de gráficos o deja en blanco para instalar todos los controladores de código abierto" +"Seleccione un controlador de gráficos o déjelo en blanco para instalar todos los controladores de código abierto" -#: lib/user_interaction.py:921 lib/user_interaction.py:922 lib/user_interaction.py:929 lib/user_interaction.py:932 lib/user_interaction.py:935 lib/user_interaction.py:934 lib/user_interaction/system_conf.py:96 msgid "All open-source (default)" -msgstr "Todo código abierto (por defecto)" +msgstr "Todo de código abierto (predeterminado)" -#: lib/user_interaction.py:940 lib/user_interaction.py:941 lib/user_interaction.py:948 lib/user_interaction.py:951 lib/user_interaction.py:954 lib/user_interaction.py:953 lib/user_interaction/system_conf.py:28 msgid "Choose which kernels to use or leave blank for default \"{}\"" msgstr "Elige qué kernels usar o deja en blanco para usar los por defecto \"{}\"" -#: lib/user_interaction.py:954 lib/user_interaction.py:955 lib/user_interaction.py:962 lib/user_interaction.py:965 lib/user_interaction.py:968 lib/user_interaction.py:967 lib/user_interaction/locale_conf.py:16 msgid "Choose which locale language to use" msgstr "Elige qué idioma local usar" -#: lib/user_interaction.py:968 lib/user_interaction.py:969 lib/user_interaction.py:976 lib/user_interaction.py:979 lib/user_interaction.py:982 lib/user_interaction.py:981 lib/user_interaction/locale_conf.py:29 msgid "Choose which locale encoding to use" msgstr "Elige qué codificación local usar" -#: lib/user_interaction.py:1009 lib/user_interaction.py:1010 lib/user_interaction.py:1017 lib/user_interaction.py:1020 lib/user_interaction.py:1023 lib/user_interaction.py:1022 lib/user_interaction/backwards_compatible_conf.py:49 msgid "Select one of the values shown below: " -msgstr "Selecciona uno de los valores mostrados abajo: " +msgstr "Seleccione uno de los valores que se muestran a continuación: " -#: lib/user_interaction.py:1050 lib/user_interaction.py:1051 lib/user_interaction.py:1058 lib/user_interaction.py:1061 lib/user_interaction.py:1064 lib/user_interaction.py:1063 lib/user_interaction/backwards_compatible_conf.py:88 msgid "Select one or more of the options below: " -msgstr "Selecciona una o más opciones de abajo: " +msgstr "Seleccione una o más de las siguientes opciones: " -#: lib/disk/filesystem.py:86 lib/disk/filesystem.py:87 msgid "Adding partition...." msgstr "Añadiendo partición..." -#: lib/disk/filesystem.py:139 lib/disk/filesystem.py:141 lib/disk/filesystem.py:142 msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." msgstr "Necesitas ingresar un tip de filesystem valido para continuar. Vea `man parted` para tipos de sistemas de archivos válidos." -#: lib/profiles.py:89 lib/profiles.py:90 msgid "Error: Listing profiles on URL \"{}\" resulted in:" msgstr "Error: Enlistar perfiles en la URL \"{}\" resultó en:" -#: lib/profiles.py:92 lib/profiles.py:93 msgid "Error: Could not decode \"{}\" result as JSON:" msgstr "Error: No se pudo decodificar el resultado \"{}\" como JSON:" -#: lib/menu/selection_menu.py:146 lib/menu/selection_menu.py:144 lib/menu/selection_menu.py:148 lib/menu/selection_menu.py:412 lib/menu/selection_menu.py:420 lib/user_interaction/global_menu.py:48 lib/menu/selection_menu.py:468 lib/menu/global_menu.py:48 -msgid "Select keyboard layout" -msgstr "Selecciona la distribución del teclado" +msgid "Keyboard layout" +msgstr "Distribución del teclado" -#: lib/menu/selection_menu.py:149 lib/menu/selection_menu.py:147 lib/menu/selection_menu.py:151 lib/menu/selection_menu.py:415 lib/menu/selection_menu.py:423 lib/user_interaction/global_menu.py:51 lib/menu/selection_menu.py:471 lib/menu/global_menu.py:51 -msgid "Select mirror region" -msgstr "Selecciona la región del mirror" +msgid "Mirror region" +msgstr "Región del servidor" -#: lib/menu/selection_menu.py:154 lib/menu/selection_menu.py:152 lib/menu/selection_menu.py:156 lib/menu/selection_menu.py:420 lib/menu/selection_menu.py:428 lib/user_interaction/global_menu.py:56 lib/menu/selection_menu.py:476 lib/menu/global_menu.py:56 -msgid "Select locale language" -msgstr "Selecciona el idioma local" +msgid "Locale language" +msgstr "Idioma local" -#: lib/menu/selection_menu.py:156 lib/menu/selection_menu.py:154 lib/menu/selection_menu.py:158 lib/menu/selection_menu.py:422 lib/menu/selection_menu.py:430 lib/user_interaction/global_menu.py:58 lib/menu/selection_menu.py:478 lib/menu/global_menu.py:58 -msgid "Select locale encoding" -msgstr "Selecciona la codificación local" +msgid "Locale encoding" +msgstr "Codificación local" -#: lib/menu/selection_menu.py:159 lib/menu/selection_menu.py:157 lib/menu/selection_menu.py:161 lib/menu/selection_menu.py:425 lib/menu/selection_menu.py:433 lib/user_interaction/global_menu.py:61 lib/menu/selection_menu.py:481 lib/menu/global_menu.py:61 -msgid "Select harddrives" -msgstr "Selecciona los discos duros" +msgid "Drive(s)" +msgstr "Disco(s)" -#: lib/menu/selection_menu.py:163 lib/menu/selection_menu.py:161 lib/menu/selection_menu.py:165 lib/menu/selection_menu.py:429 lib/menu/selection_menu.py:437 lib/user_interaction/global_menu.py:65 lib/menu/selection_menu.py:485 lib/menu/global_menu.py:65 -msgid "Select disk layout" -msgstr "Selecciona la distribución de los discos" +msgid "Disk layout" +msgstr "Diseño del disco" -#: lib/menu/selection_menu.py:171 lib/menu/selection_menu.py:169 lib/menu/selection_menu.py:173 lib/menu/selection_menu.py:437 lib/menu/selection_menu.py:445 lib/user_interaction/global_menu.py:73 lib/menu/selection_menu.py:493 lib/menu/global_menu.py:73 -msgid "Set encryption password" -msgstr "Establecer la contraseña de cifrado" +msgid "Encryption password" +msgstr "Contraseña de cifrado" -#: lib/menu/selection_menu.py:177 lib/menu/selection_menu.py:175 lib/menu/selection_menu.py:179 lib/menu/selection_menu.py:443 lib/menu/selection_menu.py:451 lib/user_interaction/global_menu.py:79 lib/menu/selection_menu.py:499 lib/menu/global_menu.py:79 -msgid "Use swap" -msgstr "Usar swap" +msgid "Swap" +msgstr "Swap" -#: lib/menu/selection_menu.py:182 lib/menu/selection_menu.py:180 lib/menu/selection_menu.py:184 lib/menu/selection_menu.py:448 lib/menu/selection_menu.py:456 lib/user_interaction/global_menu.py:84 lib/menu/selection_menu.py:504 lib/menu/global_menu.py:84 -msgid "Select bootloader" -msgstr "Selecciona el cargador de arranque" +msgid "Bootloader" +msgstr "Cargador de arranque" -#: lib/menu/selection_menu.py:188 lib/menu/selection_menu.py:186 lib/menu/selection_menu.py:190 lib/menu/selection_menu.py:454 lib/menu/selection_menu.py:462 lib/user_interaction/global_menu.py:95 lib/menu/selection_menu.py:515 lib/menu/global_menu.py:95 -msgid "Set root password" -msgstr "Establecer la contraseña de root" +msgid "Root password" +msgstr "Contraseña de root" -#: lib/menu/selection_menu.py:193 lib/menu/selection_menu.py:191 lib/menu/selection_menu.py:195 lib/menu/selection_menu.py:459 lib/menu/selection_menu.py:467 lib/user_interaction/global_menu.py:100 lib/menu/selection_menu.py:520 lib/menu/global_menu.py:100 -msgid "Specify superuser account" -msgstr "Especificar la cuenta de superusuario" +msgid "Superuser account" +msgstr "Cuenta de superusuario" -#: lib/menu/selection_menu.py:199 lib/menu/selection_menu.py:197 lib/menu/selection_menu.py:201 lib/menu/selection_menu.py:465 lib/menu/selection_menu.py:473 lib/user_interaction/global_menu.py:107 lib/menu/selection_menu.py:528 lib/menu/global_menu.py:107 -msgid "Specify user account" -msgstr "Especificar la cuenta de usuario" +msgid "User account" +msgstr "Cuenta de usuario" -#: lib/menu/selection_menu.py:205 lib/menu/selection_menu.py:203 lib/menu/selection_menu.py:207 lib/menu/selection_menu.py:471 lib/menu/selection_menu.py:479 lib/user_interaction/global_menu.py:114 lib/menu/selection_menu.py:535 lib/menu/global_menu.py:114 -msgid "Specify profile" -msgstr "Especificar el perfil" +msgid "Profile" +msgstr "Perfil" -#: lib/menu/selection_menu.py:210 lib/menu/selection_menu.py:208 lib/menu/selection_menu.py:212 lib/menu/selection_menu.py:476 lib/menu/selection_menu.py:484 lib/user_interaction/global_menu.py:119 lib/menu/selection_menu.py:540 lib/menu/global_menu.py:119 -msgid "Select audio" -msgstr "Selecciona el audio" +msgid "Audio" +msgstr "Audio" -#: lib/menu/selection_menu.py:214 lib/menu/selection_menu.py:212 lib/menu/selection_menu.py:216 lib/menu/selection_menu.py:480 lib/menu/selection_menu.py:488 lib/user_interaction/global_menu.py:123 lib/menu/selection_menu.py:544 lib/menu/global_menu.py:123 -msgid "Select kernels" -msgstr "Selecciona los kernels" +msgid "Kernels" +msgstr "Kernels" -#: lib/menu/selection_menu.py:219 lib/menu/selection_menu.py:217 lib/menu/selection_menu.py:221 lib/menu/selection_menu.py:485 lib/menu/selection_menu.py:493 lib/user_interaction/global_menu.py:128 lib/menu/selection_menu.py:549 lib/menu/global_menu.py:128 -msgid "Additional packages to install" -msgstr "Paquetes adicionales a instalar" +msgid "Additional packages" +msgstr "Paquetes adicionales" -#: lib/menu/selection_menu.py:224 lib/menu/selection_menu.py:222 lib/menu/selection_menu.py:226 lib/menu/selection_menu.py:490 lib/menu/selection_menu.py:498 lib/user_interaction/global_menu.py:139 lib/menu/selection_menu.py:560 lib/menu/global_menu.py:139 -msgid "Configure network" -msgstr "Configurar la red" +msgid "Network configuration" +msgstr "Configuración de la red" -#: lib/menu/selection_menu.py:232 lib/menu/selection_menu.py:230 lib/menu/selection_menu.py:234 lib/menu/selection_menu.py:498 lib/menu/selection_menu.py:506 lib/user_interaction/global_menu.py:150 lib/menu/selection_menu.py:571 lib/menu/global_menu.py:150 -msgid "Set automatic time sync (NTP)" -msgstr "Establecer la sincronización automática de hora (NTP)" +msgid "Automatic time sync (NTP)" +msgstr "Sincronización automática de hora (NTP)" -#: lib/menu/selection_menu.py:310 lib/menu/selection_menu.py:308 lib/menu/selection_menu.py:315 lib/menu/selection_menu.py:527 lib/menu/selection_menu.py:535 lib/user_interaction/global_menu.py:187 lib/menu/selection_menu.py:608 lib/menu/global_menu.py:187 msgid "Install ({} config(s) missing)" -msgstr "Instalar ({} ajuste(s) faltantes)" +msgstr "Instalar ({} ajuste(s) faltante(s))" -#: lib/menu/selection_menu.py:373 lib/menu/selection_menu.py:371 lib/menu/selection_menu.py:378 lib/menu/selection_menu.py:591 lib/menu/selection_menu.py:599 lib/user_interaction/global_menu.py:249 lib/menu/selection_menu.py:669 lib/menu/global_menu.py:249 msgid "" "You decided to skip harddrive selection\n" "and will use whatever drive-setup is mounted at {} (experimental)\n" @@ -388,67 +308,51 @@ msgstr "" "ADVERTENCIA: Archinstall no verificará la idoneidad de esta configuración\n" "¿Desea continuar?" -#: lib/disk/filesystem.py:97 lib/disk/filesystem.py:98 msgid "Re-using partition instance: {}" msgstr "Reutilizando instancia de partición: {}" -#: lib/user_interaction.py:590 lib/user_interaction.py:593 lib/user_interaction.py:596 lib/user_interaction.py:595 lib/user_interaction/partitioning_conf.py:119 lib/user_interaction/partitioning_conf.py:120 msgid "Create a new partition" msgstr "Crear una nueva partición" -#: lib/user_interaction.py:592 lib/user_interaction.py:595 lib/user_interaction.py:598 lib/user_interaction.py:597 lib/user_interaction/partitioning_conf.py:121 lib/user_interaction/partitioning_conf.py:122 msgid "Delete a partition" msgstr "Eliminar una partición" -#: lib/user_interaction.py:593 lib/user_interaction.py:596 lib/user_interaction.py:599 lib/user_interaction.py:598 lib/user_interaction/partitioning_conf.py:122 lib/user_interaction/partitioning_conf.py:123 msgid "Clear/Delete all partitions" msgstr "Limpiar/Eliminar todas las particiones" -#: lib/user_interaction.py:594 lib/user_interaction.py:597 lib/user_interaction.py:600 lib/user_interaction.py:599 lib/user_interaction/partitioning_conf.py:123 lib/user_interaction/partitioning_conf.py:124 msgid "Assign mount-point for a partition" msgstr "Asignar punto de montaje para una partición" -#: lib/user_interaction.py:595 lib/user_interaction.py:598 lib/user_interaction.py:601 lib/user_interaction.py:600 lib/user_interaction/partitioning_conf.py:124 lib/user_interaction/partitioning_conf.py:125 msgid "Mark/Unmark a partition to be formatted (wipes data)" msgstr "Marcar/Desmarcar una partición para ser formateada (borra los datos)" -#: lib/user_interaction.py:596 lib/user_interaction.py:599 lib/user_interaction.py:602 lib/user_interaction.py:601 lib/user_interaction/partitioning_conf.py:125 lib/user_interaction/partitioning_conf.py:126 msgid "Mark/Unmark a partition as encrypted" msgstr "Marcar/Desmarcar una partición como encriptada" -#: lib/user_interaction.py:597 lib/user_interaction.py:600 lib/user_interaction.py:603 lib/user_interaction.py:602 lib/user_interaction/partitioning_conf.py:126 lib/user_interaction/partitioning_conf.py:127 msgid "Mark/Unmark a partition as bootable (automatic for /boot)" msgstr "Marcar/Desmarcar una partición como bootable (automática para /boot)" -#: lib/user_interaction.py:598 lib/user_interaction.py:601 lib/user_interaction.py:604 lib/user_interaction.py:603 lib/user_interaction/partitioning_conf.py:127 lib/user_interaction/partitioning_conf.py:128 msgid "Set desired filesystem for a partition" msgstr "Establecer el sistema de archivos deseado para una partición" -#: lib/menu/selection_menu.py:239 lib/menu/selection_menu.py:237 lib/menu/selection_menu.py:241 lib/menu/selection_menu.py:270 lib/menu/selection_menu.py:507 lib/menu/selection_menu.py:515 lib/user_interaction/global_menu.py:167 lib/menu/selection_menu.py:588 lib/menu/global_menu.py:167 msgid "Abort" -msgstr "Cancelar" +msgstr "Abortar" -#: lib/menu/selection_menu.py:183 lib/menu/selection_menu.py:187 lib/menu/selection_menu.py:451 lib/menu/selection_menu.py:459 lib/user_interaction/global_menu.py:89 lib/menu/selection_menu.py:509 lib/menu/global_menu.py:89 -msgid "Specify hostname" -msgstr "Especificar el nombre del host" +msgid "Hostname" +msgstr "Nombre del host" -#: lib/menu/selection_menu.py:228 lib/menu/selection_menu.py:492 lib/menu/selection_menu.py:500 lib/user_interaction/global_menu.py:141 lib/menu/selection_menu.py:562 lib/menu/global_menu.py:141 msgid "Not configured, unavailable unless setup manually" msgstr "No configurado, no disponible a menos que se configure manualmente" -#: lib/menu/selection_menu.py:231 lib/menu/selection_menu.py:495 lib/menu/selection_menu.py:503 lib/user_interaction/global_menu.py:145 lib/menu/selection_menu.py:566 lib/menu/global_menu.py:145 -msgid "Select timezone" -msgstr "Selecciona la zona horaria" +msgid "Timezone" +msgstr "Zona horaria" -#: lib/menu/selection_menu.py:266 lib/menu/selection_menu.py:276 lib/menu/selection_menu.py:312 msgid "Set/Modify the below options" msgstr "Establecer/Modificar las opciones siguientes" -#: lib/menu/selection_menu.py:272 msgid "Install" msgstr "Instalar" -#: lib/menu/menu.py:68 lib/menu/menu.py:75 lib/menu/menu.py:119 msgid "" "Use ESC to skip\n" "\n" @@ -456,197 +360,128 @@ msgstr "" "Usar ESC para saltar\n" "\n" -#: lib/user_interaction.py:591 lib/user_interaction.py:594 lib/user_interaction.py:597 lib/user_interaction.py:596 lib/user_interaction/partitioning_conf.py:120 lib/user_interaction/partitioning_conf.py:121 msgid "Suggest partition layout" msgstr "Sugerir el diseño de partición" -#: lib/user_interaction.py:101 lib/user_interaction/utils.py:43 msgid "Enter a password: " msgstr "Introduzca una contraseña: " -#: lib/disk/filesystem.py:117 lib/disk/filesystem.py:118 msgid "Enter a encryption password for {}" msgstr "Introduzca una contraseña de cifrado para {}" -#: lib/menu/selection_menu.py:174 lib/menu/selection_menu.py:567 lib/menu/selection_menu.py:575 lib/user_interaction/global_menu.py:225 lib/menu/selection_menu.py:646 lib/menu/global_menu.py:225 msgid "Enter disk encryption password (leave blank for no encryption): " msgstr "Introduzca la contraseña de cifrado de disco (dejar en blanco para no cifrar): " -#: lib/menu/selection_menu.py:407 lib/menu/selection_menu.py:617 lib/menu/selection_menu.py:625 msgid "Create a required super-user with sudo privileges: " msgstr "Crear un super-usuario requerido con privilegios sudo: " -#: lib/menu/selection_menu.py:347 lib/menu/selection_menu.py:554 lib/menu/selection_menu.py:562 lib/user_interaction/global_menu.py:220 lib/menu/selection_menu.py:641 lib/menu/global_menu.py:220 msgid "Enter root password (leave blank to disable root): " msgstr "Introduzca la contraseña de root (dejar en blanco para desactivar root): " -#: lib/user_interaction.py:307 lib/user_interaction.py:324 lib/user_interaction/manage_users_conf.py:86 lib/user_interaction/manage_users_conf.py:121 msgid "Password for user \"{}\": " msgstr "Contraseña para el usuario “{}”: " -#: lib/user_interaction.py:405 lib/user_interaction.py:408 lib/user_interaction.py:407 lib/user_interaction/general_conf.py:152 msgid "Verifying that additional packages exist (this might take a few seconds)" msgstr "Verificando que los paquetes adicionales existen (esto puede tardar unos segundos)" -#: lib/user_interaction.py:281 lib/user_interaction/general_conf.py:22 msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" msgstr "Te gustaría utilizar la sincronización automática de hora (NTP) con los servidores de hora predeterminados?\n" -#: lib/user_interaction.py:282 lib/user_interaction/general_conf.py:23 msgid "" "Hardware time and other post-configuration steps might be required in order for NTP to work.\n" "For more information, please check the Arch wiki" msgstr "La hora del hardware y otros pasos post-configuración pueden ser necesarios para que NTP funcione. Para más información, por favor, consulte la wiki de Arch" -#: lib/menu/selection_menu.py:411 lib/menu/selection_menu.py:621 lib/menu/selection_menu.py:629 msgid "Enter a username to create an additional user (leave blank to skip): " msgstr "Introduzca un nombre de usuario para crear un usuario adicional (dejar en blanco para saltar): " -#: lib/menu/menu.py:116 -#, fuzzy msgid "Use ESC to skip\n" -msgstr "" -"Usar ESC para saltar\n" -"\n" +msgstr "Use ESC para saltar\n" -#: lib/menu/list_manager.py:117 msgid "" "\n" " Choose an object from the list, and select one of the available actions for it to execute" msgstr "" +"\n" +"Elija un objeto de la lista y seleccione una de las acciones disponibles para que se ejecute" -#: lib/menu/list_manager.py:130 lib/user_interaction/subvolume_config.py:90 msgid "Cancel" -msgstr "" +msgstr "Cancelar" -#: lib/menu/list_manager.py:131 -#, fuzzy msgid "Confirm and exit" -msgstr "Configurar la red" +msgstr "Confirmar y salir" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:228 lib/menu/list_manager.py:251 lib/menu/list_manager.py:276 lib/user_interaction/subvolume_config.py:12 lib/user_interaction/subvolume_config.py:44 lib/user_interaction/subvolume_config.py:78 lib/user_interaction/subvolume_config.py:82 lib/user_interaction/subvolume_config.py:85 msgid "Add" -msgstr "" +msgstr "Añadir" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:231 lib/menu/list_manager.py:255 lib/user_interaction/subvolume_config.py:78 msgid "Copy" -msgstr "" +msgstr "Copiar" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:237 lib/menu/list_manager.py:261 lib/user_interaction/subvolume_config.py:82 lib/user_interaction/subvolume_config.py:85 msgid "Edit" -msgstr "" +msgstr "Editar" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:242 lib/menu/list_manager.py:264 lib/user_interaction/subvolume_config.py:40 msgid "Delete" -msgstr "" +msgstr "Eliminar" -#: lib/menu/list_manager.py:185 -#, fuzzy msgid "Select an action for < {} >" -msgstr "" -"Selecciona qué hacer con\n" -"{}" - -#: lib/menu/list_manager.py:229 -msgid "Add :" -msgstr "" +msgstr "Seleccione una acción para < {} >" -#: lib/menu/list_manager.py:233 -msgid "Copy to :" -msgstr "" - -#: lib/menu/list_manager.py:240 -msgid "Edite :" -msgstr "" - -#: lib/menu/list_manager.py:252 -msgid "Key :" -msgstr "" - -#: lib/menu/list_manager.py:253 -msgid "Value :" -msgstr "" - -#: lib/menu/list_manager.py:257 msgid "Copy to new key:" -msgstr "" +msgstr "Copiar a nueva clave:" -#: lib/menu/list_manager.py:262 -#, python-brace-format -msgid "Edit {origkey} :" -msgstr "" - -#: lib/models/network_configuration.py:53 lib/models/network_configuration.py:74 msgid "Unknown nic type: {}. Possible values are {}" -msgstr "" +msgstr "Tipo de nic desconocido: {}. Los valores posibles son {}" -#: lib/configuration.py:75 msgid "" "\n" "This is your chosen configuration:" msgstr "" +"\n" +"Esta es su configuración elegida:" -#: lib/pacman.py:18 msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "" +msgstr "Pacman ya se está ejecutando, esperando un máximo de 10 minutos para que finalice." -#: lib/pacman.py:25 msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "" +msgstr "El bloqueo de pacman preexistente nunca salió. Limpie cualquier sesión de pacman existente antes de usar archinstall." -#: lib/user_interaction/general_conf.py:174 msgid "Choose which optional additional repositories to enable" -msgstr "" +msgstr "Elija qué repositorios adicionales opcionales habilitar" -#: lib/user_interaction/manage_users_conf.py:32 -msgid "Add an user" -msgstr "" +msgid "Add a user" +msgstr "Añadir un usuario" -#: lib/user_interaction/manage_users_conf.py:33 -#, fuzzy msgid "Change password" -msgstr "Introduzca una contraseña: " +msgstr "Cambiar contraseña" -#: lib/user_interaction/manage_users_conf.py:34 msgid "Promote/Demote user" -msgstr "" +msgstr "Promocionar/Degradar usuario" -#: lib/user_interaction/manage_users_conf.py:35 msgid "Delete User" -msgstr "" +msgstr "Eliminar usuario" -#: lib/user_interaction/manage_users_conf.py:99 msgid "" "\n" "Define a new user\n" msgstr "" +"\n" +"Definir un nuevo usuario\n" -#: lib/user_interaction/manage_users_conf.py:100 msgid "User Name : " -msgstr "" +msgstr "Nombre de usuario : " -#: lib/user_interaction/manage_users_conf.py:115 -#, fuzzy msgid "Should {} be a superuser (sudoer)?" -msgstr "Debería este usuario ser un superusuario (sudoer)?" +msgstr "¿Debe {} ser un superusuario (sudoer)?" -#: lib/user_interaction/manage_users_conf.py:161 -#, fuzzy msgid "Define users with sudo privilege: " -msgstr "Crear un super-usuario requerido con privilegios sudo: " +msgstr "Defina usuarios con privilegio sudo: " -#: lib/user_interaction/network_conf.py:24 -#, fuzzy msgid "No network configuration" -msgstr "Copiar la configuración de red ISO a la instalación" +msgstr "Sin configuración de red" -#: lib/user_interaction/partitioning_conf.py:128 lib/user_interaction/partitioning_conf.py:129 -#, fuzzy msgid "Set desired subvolumes on a btrfs partition" -msgstr "Establecer el sistema de archivos deseado para una partición" +msgstr "Establecer los subvolúmenes deseados en una partición btrfs" -#: lib/user_interaction/partitioning_conf.py:296 lib/user_interaction/partitioning_conf.py:303 -#, fuzzy msgid "" "{}\n" "\n" @@ -654,135 +489,296 @@ msgid "" msgstr "" "{}\n" "\n" -"Selecciona la partición a configurar con un sistema de archivos" +"Seleccione en qué partición configurar los subvolúmenes" -#: lib/user_interaction/partitioning_conf.py:305 lib/user_interaction/partitioning_conf.py:312 msgid "Manage btrfs subvolumes for current partition" -msgstr "" +msgstr "Administrar subvolúmenes btrfs para la partición actual" -#: lib/user_interaction/save_conf.py:24 lib/user_interaction/save_conf.py:29 msgid "No configuration" -msgstr "" +msgstr "Sin configuración" -#: lib/user_interaction/save_conf.py:42 msgid "Save user configuration" -msgstr "" +msgstr "Guardar configuración de usuario" -#: lib/user_interaction/save_conf.py:43 msgid "Save user credentials" -msgstr "" +msgstr "Guardar credenciales de usuario" -#: lib/user_interaction/save_conf.py:44 -#, fuzzy msgid "Save disk layout" -msgstr "Selecciona la distribución de los discos" +msgstr "Guardar diseño de disco" -#: lib/user_interaction/save_conf.py:45 msgid "Save all" -msgstr "" +msgstr "Guardar todo" -#: lib/user_interaction/save_conf.py:48 -#, fuzzy msgid "Choose which configuration to save" -msgstr "Elige qué idioma local usar" +msgstr "Elija qué configuración guardar" -#: lib/user_interaction/save_conf.py:59 msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "" +msgstr "Introduzca un directorio para guardar la(s) configuración(es): " -#: lib/user_interaction/save_conf.py:63 msgid "Not a valid directory: {}" -msgstr "" +msgstr "No es un directorio válido: {}" -#: lib/user_interaction/utils.py:32 msgid "The password you are using seems to be weak," -msgstr "" +msgstr "La contraseña que está utilizando parece ser débil," -#: lib/user_interaction/utils.py:33 -#, fuzzy msgid "are you sure you want to use it?" -msgstr "Realmente desea abortar?" +msgstr "¿Estás seguro de que quieres usarlo?" -#: lib/user_interaction/global_menu.py:134 lib/menu/selection_menu.py:555 lib/menu/global_menu.py:134 -#, fuzzy -msgid "Additional repositories to enable" -msgstr "Paquetes adicionales a instalar" +msgid "Optional repositories" +msgstr "Repositorios adicionales" -#: lib/user_interaction/global_menu.py:155 lib/menu/selection_menu.py:576 lib/menu/global_menu.py:155 msgid "Save configuration" -msgstr "" +msgstr "Guardar configuración" -#: lib/user_interaction/global_menu.py:192 lib/menu/selection_menu.py:613 lib/menu/global_menu.py:192 msgid "Missing configurations:\n" -msgstr "" +msgstr "Configuraciones que faltan:\n" -#: lib/user_interaction/global_menu.py:210 lib/menu/selection_menu.py:631 lib/menu/global_menu.py:210 msgid "Either root-password or at least 1 superuser must be specified" -msgstr "" +msgstr "Se debe especificar una contraseña raíz o al menos 1 superusuario" -#: lib/user_interaction/global_menu.py:275 lib/menu/selection_menu.py:695 lib/menu/global_menu.py:275 -#, fuzzy msgid "Manage superuser accounts: " -msgstr "Especificar la cuenta de superusuario" +msgstr "Administrar cuentas de superusuario: " -#: lib/user_interaction/global_menu.py:279 lib/menu/selection_menu.py:699 lib/menu/global_menu.py:279 -#, fuzzy msgid "Manage ordinary user accounts: " -msgstr "Especificar la cuenta de usuario" +msgstr "Administrar cuentas de usuario ordinarias: " -#: lib/user_interaction/subvolume_config.py:17 msgid " Subvolume :{:16}" -msgstr "" +msgstr " Subvolumen :{:16}" -#: lib/user_interaction/subvolume_config.py:19 lib/user_interaction/subvolume_config.py:22 msgid " mounted at {:16}" -msgstr "" +msgstr " montado en {:16}" -#: lib/user_interaction/subvolume_config.py:26 msgid " with option {}" -msgstr "" +msgstr " con opción {}" -#: lib/user_interaction/subvolume_config.py:46 msgid "" "\n" " Fill the desired values for a new subvolume \n" msgstr "" +"\n" +"Rellene los valores deseados para un nuevo subvolumen\n" -#: lib/user_interaction/subvolume_config.py:77 msgid "Subvolume name " -msgstr "" +msgstr "Nombre del subvolumen " -#: lib/user_interaction/subvolume_config.py:81 msgid "Subvolume mountpoint" -msgstr "" +msgstr "Punto de montaje de subvolumen" -#: lib/user_interaction/subvolume_config.py:84 msgid "Subvolume options" -msgstr "" +msgstr "Opciones de subvolumen" -#: lib/user_interaction/subvolume_config.py:87 msgid "Save" -msgstr "" +msgstr "Guardar" -#: lib/user_interaction/subvolume_config.py:121 msgid "Subvolume name :" -msgstr "" +msgstr "Nombre del subvolumen :" -#: lib/user_interaction/subvolume_config.py:124 -#, fuzzy msgid "Select a mount point :" -msgstr "Selecciona una zona horaria" +msgstr "Seleccione un punto de montaje :" -#: lib/user_interaction/subvolume_config.py:128 msgid "Select the desired subvolume options " -msgstr "" +msgstr "Seleccione las opciones de subvolumen deseadas " -#: lib/user_interaction/manage_users_conf.py:161 -#, fuzzy msgid "Define users with sudo privilege, by username: " -msgstr "Crear un super-usuario requerido con privilegios sudo: " +msgstr "Defina usuarios con privilegio sudo, por nombre de usuario: " -#: lib/installer.py:152 -#, fuzzy msgid "[!] A log file has been created here: {}" -msgstr "[!] Un archivo de registro ha sido creado aquí: {} {}" +msgstr "[!] Se ha creado un archivo de registro aquí: {}" + +msgid "Would you like to use BTRFS subvolumes with a default structure?" +msgstr "¿Le gustaría utilizar subvolúmenes BTRFS con una estructura predeterminada?" + +msgid "Would you like to use BTRFS compression?" +msgstr "¿Te gustaría usar la compresión BTRFS?" + +msgid "Would you like to create a separate partition for /home?" +msgstr "¿Le gustaría crear una partición separada para /home?" + +msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" +msgstr "Las unidades seleccionadas no tienen la capacidad mínima requerida para una sugerencia automática\n" + +msgid "Minimum capacity for /home partition: {}GB\n" +msgstr "Capacidad mínima para la partición /home: {}GB\n" + +msgid "Minimum capacity for Arch Linux partition: {}GB" +msgstr "Capacidad mínima para la partición Arch Linux: {}GB" + +msgid "Continue" +msgstr "Continuar" + +msgid "yes" +msgstr "sí" + +msgid "no" +msgstr "no" + +msgid "set: {}" +msgstr "establecer: {}" + +msgid "Manual configuration setting must be a list" +msgstr "El ajuste de configuración manual debe ser una lista" + +msgid "No iface specified for manual configuration" +msgstr "No se especificó iface para la configuración manual" + +msgid "Manual nic configuration with no auto DHCP requires an IP address" +msgstr "La configuración manual de la NIC sin DHCP automático requiere una dirección IP" + +msgid "Add interface" +msgstr "Añadir interfaz" + +msgid "Edit interface" +msgstr "Editar interfaz" + +msgid "Delete interface" +msgstr "Eliminar intefaz" + +msgid "Select interface to add" +msgstr "Seleccione la interfaz para agregar" + +msgid "Manual configuration" +msgstr "Configuración manual" + +msgid "Mark/Unmark a partition as compressed (btrfs only)" +msgstr "Marcar/Desmarcar una partición como comprimida (solo btrfs)" + +msgid "The password you are using seems to be weak, are you sure you want to use it?" +msgstr "La contraseña que está utilizando parece ser débil, ¿está seguro de que desea usarla?" + +msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" +msgstr "Proporciona una selección de entornos de escritorio y administradores de ventanas en mosaico, p.e. gnome, kde, sway" + +msgid "Select your desired desktop environment" +msgstr "Seleccione su entorno de escritorio deseado" + +msgid "A very basic installation that allows you to customize Arch Linux as you see fit." +msgstr "Una instalación muy básica que te permite personalizar Arch Linux como mejor te parezca." + +msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" +msgstr "Proporciona una selección de varios paquetes de servidor para instalar y habilitar, p.e. httpd, nginx, mariadb" + +msgid "Choose which servers to install, if none then a minimal installation wil be done" +msgstr "Elija qué servidores instalar, si no hay ninguno, se realizará una instalación mínima" + +msgid "Installs a minimal system as well as xorg and graphics drivers." +msgstr "Instala un sistema mínimo, así como controladores xorg y gráficos." + +msgid "Press Enter to continue." +msgstr "Presione Entrar para continuar." + +msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" +msgstr "¿Le gustaría hacer chroot en la instalación recién creada y realizar la configuración posterior a la instalación?" + +msgid "Are you sure you want to reset this setting?" +msgstr "¿Está seguro de que desea restablecer esta configuración?" + +msgid "Select one or more hard drives to use and configure\n" +msgstr "Seleccione uno o más discos duros para usar y configurar\n" + +msgid "Any modifications to the existing setting will reset the disk layout!" +msgstr "¡Cualquier modificación a la configuración existente restablecerá el diseño del disco!" + +msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" +msgstr "Si restablece la selección del disco duro, esto también restablecerá el diseño actual del disco. ¿Está seguro?" + +msgid "Save and exit" +msgstr "Guardar y salir" + +msgid "" +"{}\n" +"contains queued partitions, this will remove those, are you sure?" +msgstr "" +"{}\n" +"contiene particiones en cola, esto las eliminará, ¿está seguro?" + +msgid "No audio server" +msgstr "Sin servidor de audio" + +msgid "(default)" +msgstr "(predeterminado)" + +msgid "Use ESC to skip" +msgstr "Use ESC para saltar" + +msgid "" +"Use CTRL+C to reset current selection\n" +"\n" +msgstr "" +"Use CTRL+C para restablecer la selección actual\n" +"\n" + +msgid "Copy to: " +msgstr "Copiar a: " + +msgid "Edit: " +msgstr "Editar: " + +msgid "Key: " +msgstr "Clave: " + +msgid "Edit {}: " +msgstr "Editar {}: " + +msgid "Add: " +msgstr "Añadir: " + +msgid "Value: " +msgstr "Valor: " + +msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" +msgstr "Puede omitir la selección de una unidad y la partición y usar cualquier configuración de unidad que esté montada en /mnt (experimental)" + +msgid "Select one of the disks or skip and use /mnt as default" +msgstr "Seleccione uno de los discos u omita y use /mnt como predeterminado" + +msgid "Select which partitions to mark for formatting:" +msgstr "Seleccione qué particiones marcar para formatear:" + +msgid "Use HSM to unlock encrypted drive" +msgstr "Utilice HSM para desbloquear la unidad cifrada" + +msgid "Device" +msgstr "Dispositivo" + +msgid "Size" +msgstr "Tamaño" + +msgid "Free space" +msgstr "Espacio libre" + +msgid "Bus-type" +msgstr "Tipo de bus" + +msgid "Either root-password or at least 1 user with sudo privileges must be specified" +msgstr "Se debe especificar una contraseña de root o al menos 1 usuario con privilegios sudo" + +msgid "Enter username (leave blank to skip): " +msgstr "Ingrese el nombre de usuario (déjelo en blanco para omitir): " + +msgid "The username you entered is invalid. Try again" +msgstr "El nombre de usuario que ingresó no es válido. Intente nuevamente" + +msgid "Should \"{}\" be a superuser (sudo)?" +msgstr "¿Debe \"{}\" ser un superusuario (sudo)?" + +#~ msgid "Select disk layout" +#~ msgstr "Seleccione el diseño del disco" + +#~ msgid "Add :" +#~ msgstr "Añadir :" + +#~ msgid "Value :" +#~ msgstr "Valor :" + +#, python-brace-format +#~ msgid "Edit {origkey} :" +#~ msgstr "Editar {origkey} :" + +#~ msgid "Copy to :" +#~ msgstr "Copiar a :" + +#~ msgid "Edite :" +#~ msgstr "Editar :" + +#~ msgid "Key :" +#~ msgstr "Clave :" diff --git a/archinstall/locales/fr/LC_MESSAGES/base.mo b/archinstall/locales/fr/LC_MESSAGES/base.mo Binary files differindex 1d037b6d..918fe21d 100644 --- a/archinstall/locales/fr/LC_MESSAGES/base.mo +++ b/archinstall/locales/fr/LC_MESSAGES/base.mo diff --git a/archinstall/locales/fr/LC_MESSAGES/base.po b/archinstall/locales/fr/LC_MESSAGES/base.po index c96f2d91..9b038e8c 100644 --- a/archinstall/locales/fr/LC_MESSAGES/base.po +++ b/archinstall/locales/fr/LC_MESSAGES/base.po @@ -3,115 +3,89 @@ msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" "PO-Revision-Date: \n" -"Last-Translator: roxfr <roxfr@outlook.fr>\n" +"Last-Translator: Aleksandr Melman <Alexmelman88@gmail.com>\n" "Language-Team: \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.0\n" +"X-Generator: Poedit 3.0.1\n" -#: lib/installer.py:144 lib/installer.py:152 msgid "[!] A log file has been created here: {} {}" msgstr "[!] Un fichier journal a été créé ici : {} {}" -#: lib/installer.py:145 lib/installer.py:153 msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" msgstr " Veuillez soumettre ce problème (et le fichier) à https://github.com/archlinux/archinstall/issues" -#: lib/user_interaction.py:83 lib/user_interaction/utils.py:86 msgid "Do you really want to abort?" msgstr "Voulez-vous vraiment abandonner ?" -#: lib/user_interaction.py:101 lib/user_interaction.py:104 lib/user_interaction/utils.py:53 msgid "And one more time for verification: " msgstr "Et encore une fois pour vérification : " -#: lib/user_interaction.py:272 lib/user_interaction.py:275 lib/user_interaction/system_conf.py:142 msgid "Would you like to use swap on zram?" msgstr "Souhaitez-vous utiliser le swap sur zram ?" -#: lib/user_interaction.py:285 lib/user_interaction.py:288 lib/user_interaction/general_conf.py:33 msgid "Desired hostname for the installation: " msgstr "Nom d'hôte souhaité pour l'installation : " -#: lib/user_interaction.py:290 lib/user_interaction.py:293 msgid "Username for required superuser with sudo privileges: " msgstr "Nom d'utilisateur pour le superutilisateur requis avec les privilèges sudo : " -#: lib/user_interaction.py:310 lib/user_interaction.py:313 lib/user_interaction/manage_users_conf.py:167 msgid "Any additional users to install (leave blank for no users): " msgstr "Utilisateur supplémentaire à installer (laisser vide pour aucun utilisateur) : " -#: lib/user_interaction.py:324 lib/user_interaction.py:327 msgid "Should this user be a superuser (sudoer)?" msgstr "Cet utilisateur doit-il être un superutilisateur (sudoer) ?" -#: lib/user_interaction.py:340 lib/user_interaction.py:343 lib/user_interaction.py:346 lib/user_interaction/general_conf.py:41 msgid "Select a timezone" msgstr "Sélectionner un fuseau horaire" -#: lib/user_interaction.py:354 lib/user_interaction.py:357 lib/user_interaction.py:360 lib/user_interaction.py:359 lib/user_interaction/system_conf.py:115 msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" msgstr "Souhaitez-vous utiliser GRUB comme chargeur de démarrage au lieu de systemd-boot ?" -#: lib/user_interaction.py:364 lib/user_interaction.py:367 lib/user_interaction.py:370 lib/user_interaction.py:369 lib/user_interaction/system_conf.py:125 msgid "Choose a bootloader" msgstr "Choisir un chargeur de démarrage" -#: lib/user_interaction.py:380 lib/user_interaction.py:383 lib/user_interaction.py:386 lib/user_interaction.py:385 lib/user_interaction/general_conf.py:53 msgid "Choose an audio server" msgstr "Choisir un serveur audio" -#: lib/user_interaction.py:391 lib/user_interaction.py:394 lib/user_interaction.py:397 lib/user_interaction.py:396 lib/user_interaction/general_conf.py:138 msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." msgstr "Seuls les packages tels que base, base-devel, linux, linux-firmware, efibootmgr et les packages de profil optionnels sont installés." -#: lib/user_interaction.py:392 lib/user_interaction.py:395 lib/user_interaction.py:398 lib/user_interaction.py:397 lib/user_interaction/general_conf.py:139 msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." msgstr "Si vous désirez un navigateur Web, tel que firefox ou chrome, vous pouvez le spécifier dans l'invite suivante." -#: lib/user_interaction.py:396 lib/user_interaction.py:399 lib/user_interaction.py:402 lib/user_interaction.py:401 lib/user_interaction/general_conf.py:143 msgid "Write additional packages to install (space separated, leave blank to skip): " msgstr "Écrire des packages supplémentaires à installer (espaces séparés, laisser vide pour ignorer) : " -#: lib/user_interaction.py:419 lib/user_interaction.py:422 lib/user_interaction.py:425 lib/user_interaction.py:424 lib/user_interaction/network_conf.py:25 msgid "Copy ISO network configuration to installation" msgstr "Copier la configuration réseau ISO dans l'installation" -#: lib/user_interaction.py:420 lib/user_interaction.py:423 lib/user_interaction.py:426 lib/user_interaction.py:425 lib/user_interaction/network_conf.py:26 msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" msgstr "Utiliser NetworkManager (nécessaire pour configurer graphiquement Internet dans GNOME et KDE)" -#: lib/user_interaction.py:428 lib/user_interaction.py:431 lib/user_interaction.py:434 lib/user_interaction.py:433 lib/user_interaction/network_conf.py:43 msgid "Select one network interface to configure" msgstr "Sélectionner une interface réseau à configurer" -#: lib/user_interaction.py:441 lib/user_interaction.py:444 lib/user_interaction.py:447 lib/user_interaction.py:446 lib/user_interaction/network_conf.py:70 msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" msgstr "Sélectionner le mode à configurer pour \"{}\" ou ignorer pour utiliser le mode par défaut \"{}\"" -#: lib/user_interaction.py:446 lib/user_interaction.py:449 lib/user_interaction.py:452 lib/user_interaction.py:451 lib/user_interaction/network_conf.py:75 msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " msgstr "Entrer l'IP et le sous-réseau pour {} (exemple : 192.168.0.5/24) : " -#: lib/user_interaction.py:461 lib/user_interaction.py:464 lib/user_interaction.py:467 lib/user_interaction.py:466 lib/user_interaction/network_conf.py:86 msgid "Enter your gateway (router) IP address or leave blank for none: " msgstr "Entrer l'adresse IP de votre passerelle (routeur) ou laisser vide pour aucune : " -#: lib/user_interaction.py:476 lib/user_interaction.py:479 lib/user_interaction.py:482 lib/user_interaction.py:481 lib/user_interaction/network_conf.py:102 msgid "Enter your DNS servers (space separated, blank for none): " msgstr "Entrer vos serveurs DNS (séparés par des espaces, vide pour aucun) : " -#: lib/user_interaction.py:510 lib/user_interaction.py:513 lib/user_interaction.py:516 lib/user_interaction.py:515 lib/user_interaction/disk_conf.py:23 msgid "Select which filesystem your main partition should use" msgstr "Sélectionner le système de fichiers que votre partition principale doit utiliser" -#: lib/user_interaction.py:556 lib/user_interaction.py:559 lib/user_interaction.py:562 lib/user_interaction.py:561 lib/user_interaction/partitioning_conf.py:64 lib/user_interaction/partitioning_conf.py:63 msgid "Current partition layout" msgstr "Disposition actuelle des partitions" -#: lib/user_interaction.py:607 lib/user_interaction.py:614 lib/user_interaction.py:617 lib/user_interaction.py:620 lib/user_interaction.py:619 lib/user_interaction/partitioning_conf.py:145 lib/user_interaction/partitioning_conf.py:146 msgid "" "Select what to do with\n" "{}" @@ -119,23 +93,18 @@ msgstr "" "Sélectionner quoi faire avec\n" "{}" -#: lib/user_interaction.py:624 lib/user_interaction.py:709 lib/user_interaction.py:631 lib/user_interaction.py:716 lib/user_interaction.py:634 lib/user_interaction.py:719 lib/user_interaction.py:637 lib/user_interaction.py:722 lib/user_interaction.py:636 lib/user_interaction.py:721 lib/user_interaction/partitioning_conf.py:162 lib/user_interaction/partitioning_conf.py:255 lib/user_interaction/partitioning_conf.py:165 lib/user_interaction/partitioning_conf.py:260 msgid "Enter a desired filesystem type for the partition" msgstr "Entrer un type de système de fichiers souhaité pour la partition" -#: lib/user_interaction.py:626 lib/user_interaction.py:633 lib/user_interaction.py:636 lib/user_interaction.py:639 lib/user_interaction.py:638 lib/user_interaction/partitioning_conf.py:164 lib/user_interaction/partitioning_conf.py:167 msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "Entrer le secteur de début (pourcentage ou numéro de bloc, par défaut : {}) : " -#: lib/user_interaction.py:635 lib/user_interaction.py:642 lib/user_interaction.py:645 lib/user_interaction.py:648 lib/user_interaction.py:647 lib/user_interaction/partitioning_conf.py:174 lib/user_interaction/partitioning_conf.py:177 msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " msgstr "Entrer le secteur de fin de la partition (pourcentage ou numéro de bloc, ex : {}) : " -#: lib/user_interaction.py:661 lib/user_interaction.py:668 lib/user_interaction.py:671 lib/user_interaction.py:674 lib/user_interaction.py:673 lib/user_interaction/partitioning_conf.py:203 lib/user_interaction/partitioning_conf.py:208 msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} contient des partitions en file d'attente, cela les supprimera, êtes-vous sûr ?" +msgstr "{} contient des partitions en file d'attente, cela les supprimera, êtes-vous sûr ?" -#: lib/user_interaction.py:674 lib/user_interaction.py:681 lib/user_interaction.py:684 lib/user_interaction.py:687 lib/user_interaction.py:686 lib/user_interaction/partitioning_conf.py:216 lib/user_interaction/partitioning_conf.py:221 msgid "" "{}\n" "\n" @@ -145,7 +114,6 @@ msgstr "" "\n" "Sélectionner par index les partitions à supprimer" -#: lib/user_interaction.py:682 lib/user_interaction.py:689 lib/user_interaction.py:692 lib/user_interaction.py:695 lib/user_interaction.py:694 lib/user_interaction/partitioning_conf.py:226 lib/user_interaction/partitioning_conf.py:231 msgid "" "{}\n" "\n" @@ -155,15 +123,12 @@ msgstr "" "\n" "Sélectionner par index où et quelle partition montée" -#: lib/user_interaction.py:686 lib/user_interaction.py:693 lib/user_interaction.py:696 lib/user_interaction.py:699 lib/user_interaction.py:698 lib/user_interaction/partitioning_conf.py:231 lib/user_interaction/partitioning_conf.py:236 msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." msgstr " * Les points de montage de la partition sont relatifs à l'intérieur de l'installation, le démarrage serait /boot par exemple." -#: lib/user_interaction.py:687 lib/user_interaction.py:694 lib/user_interaction.py:697 lib/user_interaction.py:700 lib/user_interaction.py:699 lib/user_interaction/partitioning_conf.py:233 lib/user_interaction/partitioning_conf.py:238 msgid "Select where to mount partition (leave blank to remove mountpoint): " msgstr "Sélectionner où monter la partition (laisser vide pour supprimer le point de montage) : " -#: lib/user_interaction.py:698 lib/user_interaction.py:705 lib/user_interaction.py:708 lib/user_interaction.py:711 lib/user_interaction.py:710 lib/user_interaction/partitioning_conf.py:244 lib/user_interaction/partitioning_conf.py:249 msgid "" "{}\n" "\n" @@ -173,7 +138,6 @@ msgstr "" "\n" "Sélectionner la partition à masquer pour le formatage" -#: lib/user_interaction.py:717 lib/user_interaction.py:724 lib/user_interaction.py:727 lib/user_interaction.py:730 lib/user_interaction.py:729 lib/user_interaction/partitioning_conf.py:265 lib/user_interaction/partitioning_conf.py:270 msgid "" "{}\n" "\n" @@ -183,7 +147,6 @@ msgstr "" "\n" "Sélectionner la partition à marquer comme chiffrée" -#: lib/user_interaction.py:725 lib/user_interaction.py:732 lib/user_interaction.py:735 lib/user_interaction.py:738 lib/user_interaction.py:737 lib/user_interaction/partitioning_conf.py:274 lib/user_interaction/partitioning_conf.py:279 msgid "" "{}\n" "\n" @@ -193,7 +156,6 @@ msgstr "" "\n" "Sélectionner la partition à marquer comme amorçable" -#: lib/user_interaction.py:732 lib/user_interaction.py:739 lib/user_interaction.py:742 lib/user_interaction.py:745 lib/user_interaction.py:744 lib/user_interaction/partitioning_conf.py:282 lib/user_interaction/partitioning_conf.py:287 msgid "" "{}\n" "\n" @@ -203,55 +165,42 @@ msgstr "" "\n" "Sélectionner la partition sur laquelle définir un système de fichiers" -#: lib/user_interaction.py:739 lib/user_interaction.py:746 lib/user_interaction.py:749 lib/user_interaction.py:752 lib/user_interaction.py:751 lib/user_interaction/partitioning_conf.py:289 lib/user_interaction/partitioning_conf.py:294 msgid "Enter a desired filesystem type for the partition: " msgstr "Entrer un type de système de fichiers souhaité pour la partition : " -#: lib/user_interaction.py:760 lib/menu/selection_menu.py:141 lib/user_interaction.py:767 lib/menu/selection_menu.py:139 lib/menu/selection_menu.py:143 lib/user_interaction.py:770 lib/user_interaction.py:773 lib/user_interaction.py:772 lib/menu/selection_menu.py:407 lib/menu/selection_menu.py:415 lib/menu/selection_menu.py:17 lib/user_interaction/general_conf.py:105 lib/user_interaction/global_menu.py:43 lib/menu/selection_menu.py:53 lib/menu/selection_menu.py:463 lib/menu/global_menu.py:43 -msgid "Select Archinstall language" -msgstr "Sélectionner la langue d'Archinstall" +msgid "Archinstall language" +msgstr "Langue d'Archinstall" -#: lib/user_interaction.py:765 lib/user_interaction.py:772 lib/user_interaction.py:775 lib/user_interaction.py:778 lib/user_interaction.py:777 lib/user_interaction/disk_conf.py:40 msgid "Wipe all selected drives and use a best-effort default partition layout" msgstr "Effacer tous les lecteurs sélectionnés et utiliser une disposition de partition par défaut optimale" -#: lib/user_interaction.py:766 lib/user_interaction.py:773 lib/user_interaction.py:776 lib/user_interaction.py:779 lib/user_interaction.py:778 lib/user_interaction/disk_conf.py:41 msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Sélectionner ce qu'il faut faire avec chaque lecteur individuel (suivi de l'utilisation de la partition)" +msgstr "Sélectionner ce qu'il faut faire avec chaque lecteur individuel (suivi de l'utilisation de la partition)" -#: lib/user_interaction.py:769 lib/user_interaction.py:770 lib/user_interaction.py:777 lib/user_interaction.py:780 lib/user_interaction.py:783 lib/user_interaction.py:782 lib/user_interaction/disk_conf.py:45 msgid "Select what you wish to do with the selected block devices" msgstr "Sélectionner ce que vous souhaitez faire avec les périphériques de bloc sélectionnés" -#: lib/user_interaction.py:822 lib/user_interaction.py:823 lib/user_interaction.py:830 lib/user_interaction.py:833 lib/user_interaction.py:836 lib/user_interaction.py:835 lib/user_interaction/general_conf.py:126 msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "Ceci est une liste de profils préprogrammés, ils pourraient faciliter l'installation d'outils comme les environnements de bureau" +msgstr "Ceci est une liste de profils préprogrammés, ils pourraient faciliter l'installation d'outils comme les environnements de bureau" -#: lib/user_interaction.py:846 lib/user_interaction.py:847 lib/user_interaction.py:854 lib/user_interaction.py:857 lib/user_interaction.py:860 lib/user_interaction.py:859 lib/user_interaction/general_conf.py:71 -msgid "Select Keyboard layout" +msgid "Select keyboard layout" msgstr "Sélectionner la disposition du clavier" -#: lib/user_interaction.py:861 lib/user_interaction.py:862 lib/user_interaction.py:869 lib/user_interaction.py:872 lib/user_interaction.py:875 lib/user_interaction.py:874 lib/user_interaction/general_conf.py:92 msgid "Select one of the regions to download packages from" -msgstr "Sélectionner l'une des régions depuis lesquelles télécharger les packages" +msgstr "Sélectionner l'une des régions depuis lesquelles télécharger les packages" -#: lib/user_interaction.py:883 lib/user_interaction.py:884 lib/user_interaction.py:891 lib/user_interaction.py:894 lib/user_interaction.py:897 lib/user_interaction.py:896 lib/user_interaction/system_conf.py:52 msgid "Select one or more hard drives to use and configure" msgstr "Sélectionner un ou plusieurs disques durs à utiliser et à configurer" -#: lib/user_interaction.py:910 lib/user_interaction.py:911 lib/user_interaction.py:918 lib/user_interaction.py:921 lib/user_interaction.py:924 lib/user_interaction.py:923 lib/user_interaction/system_conf.py:80 msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." msgstr "Pour une meilleure compatibilité avec votre matériel AMD, vous pouvez utiliser les options entièrement open source ou AMD / ATI." -#: lib/user_interaction.py:912 lib/user_interaction.py:913 lib/user_interaction.py:920 lib/user_interaction.py:923 lib/user_interaction.py:926 lib/user_interaction.py:925 lib/user_interaction/system_conf.py:84 msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" msgstr "Pour une compatibilité optimale avec votre matériel Intel, vous pouvez utiliser les options entièrement open source ou Intel.\n" -#: lib/user_interaction.py:914 lib/user_interaction.py:915 lib/user_interaction.py:922 lib/user_interaction.py:925 lib/user_interaction.py:928 lib/user_interaction.py:927 lib/user_interaction/system_conf.py:88 msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" msgstr "Pour une meilleure compatibilité avec votre matériel Nvidia, vous pouvez utiliser le pilote propriétaire Nvidia.\n" -#: lib/user_interaction.py:917 lib/user_interaction.py:918 lib/user_interaction.py:925 lib/user_interaction.py:928 lib/user_interaction.py:931 lib/user_interaction.py:930 lib/user_interaction/system_conf.py:92 msgid "" "\n" "\n" @@ -261,123 +210,96 @@ msgstr "" "\n" "Sélectionner un pilote graphique ou laisser vide pour installer tous les pilotes open-source" -#: lib/user_interaction.py:921 lib/user_interaction.py:922 lib/user_interaction.py:929 lib/user_interaction.py:932 lib/user_interaction.py:935 lib/user_interaction.py:934 lib/user_interaction/system_conf.py:96 msgid "All open-source (default)" msgstr "Tout open-source (par défaut)" -#: lib/user_interaction.py:940 lib/user_interaction.py:941 lib/user_interaction.py:948 lib/user_interaction.py:951 lib/user_interaction.py:954 lib/user_interaction.py:953 lib/user_interaction/system_conf.py:28 msgid "Choose which kernels to use or leave blank for default \"{}\"" msgstr "Choisir les noyaux à utiliser ou laissez vide par défaut \"{}\"" -#: lib/user_interaction.py:954 lib/user_interaction.py:955 lib/user_interaction.py:962 lib/user_interaction.py:965 lib/user_interaction.py:968 lib/user_interaction.py:967 lib/user_interaction/locale_conf.py:16 msgid "Choose which locale language to use" msgstr "Choisir la langue locale à utiliser" -#: lib/user_interaction.py:968 lib/user_interaction.py:969 lib/user_interaction.py:976 lib/user_interaction.py:979 lib/user_interaction.py:982 lib/user_interaction.py:981 lib/user_interaction/locale_conf.py:29 msgid "Choose which locale encoding to use" msgstr "Choisir quel encodage de paramètres régionaux utiliser" -#: lib/user_interaction.py:1009 lib/user_interaction.py:1010 lib/user_interaction.py:1017 lib/user_interaction.py:1020 lib/user_interaction.py:1023 lib/user_interaction.py:1022 lib/user_interaction/backwards_compatible_conf.py:49 msgid "Select one of the values shown below: " -msgstr "Sélectionner l'une des valeurs ci-dessous : " +msgstr "Sélectionner l'une des valeurs ci-dessous : " -#: lib/user_interaction.py:1050 lib/user_interaction.py:1051 lib/user_interaction.py:1058 lib/user_interaction.py:1061 lib/user_interaction.py:1064 lib/user_interaction.py:1063 lib/user_interaction/backwards_compatible_conf.py:88 msgid "Select one or more of the options below: " msgstr "Sélectionner une ou plusieurs des options ci-dessous : " -#: lib/disk/filesystem.py:86 lib/disk/filesystem.py:87 msgid "Adding partition...." -msgstr "Ajout de partition...." +msgstr "Ajout de la partition...." -#: lib/disk/filesystem.py:139 lib/disk/filesystem.py:141 lib/disk/filesystem.py:142 msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." msgstr "Vous devez entrer un type de fs valide pour continuer. Voir `man parted` pour les types de fs valides." -#: lib/profiles.py:89 lib/profiles.py:90 msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Erreur : la liste des profils sur l'URL \"{}\" a entraîné :" +msgstr "Erreur : la liste des profils sur l'URL \"{}\" a entraîné :" -#: lib/profiles.py:92 lib/profiles.py:93 msgid "Error: Could not decode \"{}\" result as JSON:" msgstr "Erreur : Impossible de décoder le résultat \"{}\" en tant que JSON :" -#: lib/menu/selection_menu.py:146 lib/menu/selection_menu.py:144 lib/menu/selection_menu.py:148 lib/menu/selection_menu.py:412 lib/menu/selection_menu.py:420 lib/user_interaction/global_menu.py:48 lib/menu/selection_menu.py:468 lib/menu/global_menu.py:48 -msgid "Select keyboard layout" -msgstr "Sélectionner la disposition du clavier" +msgid "Keyboard layout" +msgstr "Disposition du clavier" -#: lib/menu/selection_menu.py:149 lib/menu/selection_menu.py:147 lib/menu/selection_menu.py:151 lib/menu/selection_menu.py:415 lib/menu/selection_menu.py:423 lib/user_interaction/global_menu.py:51 lib/menu/selection_menu.py:471 lib/menu/global_menu.py:51 -msgid "Select mirror region" -msgstr "Sélectionner la région miroir" +msgid "Mirror region" +msgstr "Région miroir" -#: lib/menu/selection_menu.py:154 lib/menu/selection_menu.py:152 lib/menu/selection_menu.py:156 lib/menu/selection_menu.py:420 lib/menu/selection_menu.py:428 lib/user_interaction/global_menu.py:56 lib/menu/selection_menu.py:476 lib/menu/global_menu.py:56 -msgid "Select locale language" -msgstr "Sélectionner la langue locale" +msgid "Locale language" +msgstr "Langue locale" -#: lib/menu/selection_menu.py:156 lib/menu/selection_menu.py:154 lib/menu/selection_menu.py:158 lib/menu/selection_menu.py:422 lib/menu/selection_menu.py:430 lib/user_interaction/global_menu.py:58 lib/menu/selection_menu.py:478 lib/menu/global_menu.py:58 -msgid "Select locale encoding" -msgstr "Sélectionner l'encodage des paramètres régionaux" +msgid "Locale encoding" +msgstr "Encodage des paramètres régionaux" -#: lib/menu/selection_menu.py:159 lib/menu/selection_menu.py:157 lib/menu/selection_menu.py:161 lib/menu/selection_menu.py:425 lib/menu/selection_menu.py:433 lib/user_interaction/global_menu.py:61 lib/menu/selection_menu.py:481 lib/menu/global_menu.py:61 -msgid "Select harddrives" -msgstr "Sélectionner les disques durs" +msgid "Drive(s)" +msgstr "Disques durs" -#: lib/menu/selection_menu.py:163 lib/menu/selection_menu.py:161 lib/menu/selection_menu.py:165 lib/menu/selection_menu.py:429 lib/menu/selection_menu.py:437 lib/user_interaction/global_menu.py:65 lib/menu/selection_menu.py:485 lib/menu/global_menu.py:65 -msgid "Select disk layout" -msgstr "Sélectionner la disposition du disque" +#, fuzzy +msgid "Disk layout" +msgstr "Enregistrer la disposition du disque" -#: lib/menu/selection_menu.py:171 lib/menu/selection_menu.py:169 lib/menu/selection_menu.py:173 lib/menu/selection_menu.py:437 lib/menu/selection_menu.py:445 lib/user_interaction/global_menu.py:73 lib/menu/selection_menu.py:493 lib/menu/global_menu.py:73 -msgid "Set encryption password" +#, fuzzy +msgid "Encryption password" msgstr "Définir le mot de passe de chiffrement" -#: lib/menu/selection_menu.py:177 lib/menu/selection_menu.py:175 lib/menu/selection_menu.py:179 lib/menu/selection_menu.py:443 lib/menu/selection_menu.py:451 lib/user_interaction/global_menu.py:79 lib/menu/selection_menu.py:499 lib/menu/global_menu.py:79 -msgid "Use swap" -msgstr "Utiliser swap" +msgid "Swap" +msgstr "Swap" -#: lib/menu/selection_menu.py:182 lib/menu/selection_menu.py:180 lib/menu/selection_menu.py:184 lib/menu/selection_menu.py:448 lib/menu/selection_menu.py:456 lib/user_interaction/global_menu.py:84 lib/menu/selection_menu.py:504 lib/menu/global_menu.py:84 -msgid "Select bootloader" -msgstr "Sélectionner le chargeur de démarrage" +msgid "Bootloader" +msgstr "Chargeur de démarrage" -#: lib/menu/selection_menu.py:188 lib/menu/selection_menu.py:186 lib/menu/selection_menu.py:190 lib/menu/selection_menu.py:454 lib/menu/selection_menu.py:462 lib/user_interaction/global_menu.py:95 lib/menu/selection_menu.py:515 lib/menu/global_menu.py:95 -msgid "Set root password" -msgstr "Définir le mot de passe root" +#, fuzzy +msgid "Root password" +msgstr "Mot de passe root" -#: lib/menu/selection_menu.py:193 lib/menu/selection_menu.py:191 lib/menu/selection_menu.py:195 lib/menu/selection_menu.py:459 lib/menu/selection_menu.py:467 lib/user_interaction/global_menu.py:100 lib/menu/selection_menu.py:520 lib/menu/global_menu.py:100 -msgid "Specify superuser account" -msgstr "Spécifier le compte superutilisateur" +msgid "Superuser account" +msgstr "Compte superutilisateur" -#: lib/menu/selection_menu.py:199 lib/menu/selection_menu.py:197 lib/menu/selection_menu.py:201 lib/menu/selection_menu.py:465 lib/menu/selection_menu.py:473 lib/user_interaction/global_menu.py:107 lib/menu/selection_menu.py:528 lib/menu/global_menu.py:107 -msgid "Specify user account" -msgstr "Spécifier le compte utilisateur" +msgid "User account" +msgstr "Compte utilisateur" -#: lib/menu/selection_menu.py:205 lib/menu/selection_menu.py:203 lib/menu/selection_menu.py:207 lib/menu/selection_menu.py:471 lib/menu/selection_menu.py:479 lib/user_interaction/global_menu.py:114 lib/menu/selection_menu.py:535 lib/menu/global_menu.py:114 -msgid "Specify profile" -msgstr "Spécifier le profil" +msgid "Profile" +msgstr "Profil" -#: lib/menu/selection_menu.py:210 lib/menu/selection_menu.py:208 lib/menu/selection_menu.py:212 lib/menu/selection_menu.py:476 lib/menu/selection_menu.py:484 lib/user_interaction/global_menu.py:119 lib/menu/selection_menu.py:540 lib/menu/global_menu.py:119 -msgid "Select audio" -msgstr "Sélectionner l'audio" +msgid "Audio" +msgstr "Audio" -#: lib/menu/selection_menu.py:214 lib/menu/selection_menu.py:212 lib/menu/selection_menu.py:216 lib/menu/selection_menu.py:480 lib/menu/selection_menu.py:488 lib/user_interaction/global_menu.py:123 lib/menu/selection_menu.py:544 lib/menu/global_menu.py:123 -msgid "Select kernels" -msgstr "Sélectionner les noyaux" +msgid "Kernels" +msgstr "Noyaux" -#: lib/menu/selection_menu.py:219 lib/menu/selection_menu.py:217 lib/menu/selection_menu.py:221 lib/menu/selection_menu.py:485 lib/menu/selection_menu.py:493 lib/user_interaction/global_menu.py:128 lib/menu/selection_menu.py:549 lib/menu/global_menu.py:128 -msgid "Additional packages to install" -msgstr "Packages supplémentaires à installer" +msgid "Additional packages" +msgstr "Packages supplémentaires" -#: lib/menu/selection_menu.py:224 lib/menu/selection_menu.py:222 lib/menu/selection_menu.py:226 lib/menu/selection_menu.py:490 lib/menu/selection_menu.py:498 lib/user_interaction/global_menu.py:139 lib/menu/selection_menu.py:560 lib/menu/global_menu.py:139 -msgid "Configure network" +msgid "Network configuration" msgstr "Configurer le réseau" -#: lib/menu/selection_menu.py:232 lib/menu/selection_menu.py:230 lib/menu/selection_menu.py:234 lib/menu/selection_menu.py:498 lib/menu/selection_menu.py:506 lib/user_interaction/global_menu.py:150 lib/menu/selection_menu.py:571 lib/menu/global_menu.py:150 -msgid "Set automatic time sync (NTP)" -msgstr "Définir la synchronisation automatique de l'heure (NTP)" +msgid "Automatic time sync (NTP)" +msgstr "Synchronisation automatique de l'heure (NTP)" -#: lib/menu/selection_menu.py:310 lib/menu/selection_menu.py:308 lib/menu/selection_menu.py:315 lib/menu/selection_menu.py:527 lib/menu/selection_menu.py:535 lib/user_interaction/global_menu.py:187 lib/menu/selection_menu.py:608 lib/menu/global_menu.py:187 msgid "Install ({} config(s) missing)" msgstr "Installer ({} configuration(s) manquante(s))" -#: lib/menu/selection_menu.py:373 lib/menu/selection_menu.py:371 lib/menu/selection_menu.py:378 lib/menu/selection_menu.py:591 lib/menu/selection_menu.py:599 lib/user_interaction/global_menu.py:249 lib/menu/selection_menu.py:669 lib/menu/global_menu.py:249 msgid "" "You decided to skip harddrive selection\n" "and will use whatever drive-setup is mounted at {} (experimental)\n" @@ -389,67 +311,51 @@ msgstr "" "ATTENTION : Archinstall ne vérifiera pas l'adéquation de cette configuration\n" "Souhaitez-vous continuer ?" -#: lib/disk/filesystem.py:97 lib/disk/filesystem.py:98 msgid "Re-using partition instance: {}" -msgstr "Réutilisation de l'instance de partition : {}" +msgstr "Réutilisation de l'instance de partition : {}" -#: lib/user_interaction.py:590 lib/user_interaction.py:593 lib/user_interaction.py:596 lib/user_interaction.py:595 lib/user_interaction/partitioning_conf.py:119 lib/user_interaction/partitioning_conf.py:120 msgid "Create a new partition" msgstr "Créer une nouvelle partition" -#: lib/user_interaction.py:592 lib/user_interaction.py:595 lib/user_interaction.py:598 lib/user_interaction.py:597 lib/user_interaction/partitioning_conf.py:121 lib/user_interaction/partitioning_conf.py:122 msgid "Delete a partition" msgstr "Supprimer une partition" -#: lib/user_interaction.py:593 lib/user_interaction.py:596 lib/user_interaction.py:599 lib/user_interaction.py:598 lib/user_interaction/partitioning_conf.py:122 lib/user_interaction/partitioning_conf.py:123 msgid "Clear/Delete all partitions" msgstr "Effacer/Supprimer toutes les partitions" -#: lib/user_interaction.py:594 lib/user_interaction.py:597 lib/user_interaction.py:600 lib/user_interaction.py:599 lib/user_interaction/partitioning_conf.py:123 lib/user_interaction/partitioning_conf.py:124 msgid "Assign mount-point for a partition" msgstr "Attribuer un point de montage pour une partition" -#: lib/user_interaction.py:595 lib/user_interaction.py:598 lib/user_interaction.py:601 lib/user_interaction.py:600 lib/user_interaction/partitioning_conf.py:124 lib/user_interaction/partitioning_conf.py:125 msgid "Mark/Unmark a partition to be formatted (wipes data)" msgstr "Marquer/Démarquer une partition à formater (efface les données)" -#: lib/user_interaction.py:596 lib/user_interaction.py:599 lib/user_interaction.py:602 lib/user_interaction.py:601 lib/user_interaction/partitioning_conf.py:125 lib/user_interaction/partitioning_conf.py:126 msgid "Mark/Unmark a partition as encrypted" msgstr "Marquer/Démarquer une partition comme chiffrée" -#: lib/user_interaction.py:597 lib/user_interaction.py:600 lib/user_interaction.py:603 lib/user_interaction.py:602 lib/user_interaction/partitioning_conf.py:126 lib/user_interaction/partitioning_conf.py:127 msgid "Mark/Unmark a partition as bootable (automatic for /boot)" msgstr "Marquer/Démarquer une partition comme amorçable (automatique pour /boot)" -#: lib/user_interaction.py:598 lib/user_interaction.py:601 lib/user_interaction.py:604 lib/user_interaction.py:603 lib/user_interaction/partitioning_conf.py:127 lib/user_interaction/partitioning_conf.py:128 msgid "Set desired filesystem for a partition" msgstr "Définir le système de fichiers souhaité pour une partition" -#: lib/menu/selection_menu.py:239 lib/menu/selection_menu.py:237 lib/menu/selection_menu.py:241 lib/menu/selection_menu.py:270 lib/menu/selection_menu.py:507 lib/menu/selection_menu.py:515 lib/user_interaction/global_menu.py:167 lib/menu/selection_menu.py:588 lib/menu/global_menu.py:167 msgid "Abort" msgstr "Abandonner" -#: lib/menu/selection_menu.py:183 lib/menu/selection_menu.py:187 lib/menu/selection_menu.py:451 lib/menu/selection_menu.py:459 lib/user_interaction/global_menu.py:89 lib/menu/selection_menu.py:509 lib/menu/global_menu.py:89 -msgid "Specify hostname" -msgstr "Spécifier le nom d'hôte" +msgid "Hostname" +msgstr "Nom d'hôte" -#: lib/menu/selection_menu.py:228 lib/menu/selection_menu.py:492 lib/menu/selection_menu.py:500 lib/user_interaction/global_menu.py:141 lib/menu/selection_menu.py:562 lib/menu/global_menu.py:141 msgid "Not configured, unavailable unless setup manually" msgstr "Non configuré, indisponible sauf configuration manuelle" -#: lib/menu/selection_menu.py:231 lib/menu/selection_menu.py:495 lib/menu/selection_menu.py:503 lib/user_interaction/global_menu.py:145 lib/menu/selection_menu.py:566 lib/menu/global_menu.py:145 -msgid "Select timezone" -msgstr "Sélectionner le fuseau horaire" +msgid "Timezone" +msgstr "Fuseau horaire" -#: lib/menu/selection_menu.py:266 lib/menu/selection_menu.py:276 lib/menu/selection_menu.py:312 msgid "Set/Modify the below options" msgstr "Définir/Modifier les options ci-dessous" -#: lib/menu/selection_menu.py:272 msgid "Install" msgstr "Installer" -#: lib/menu/menu.py:68 lib/menu/menu.py:75 lib/menu/menu.py:119 msgid "" "Use ESC to skip\n" "\n" @@ -457,43 +363,33 @@ msgstr "" "Utiliser ESC pour ignorer\n" "\n" -#: lib/user_interaction.py:591 lib/user_interaction.py:594 lib/user_interaction.py:597 lib/user_interaction.py:596 lib/user_interaction/partitioning_conf.py:120 lib/user_interaction/partitioning_conf.py:121 msgid "Suggest partition layout" msgstr "Suggérer la disposition des partitions" -#: lib/user_interaction.py:101 lib/user_interaction/utils.py:43 msgid "Enter a password: " msgstr "Entrer un mot de passe : " -#: lib/disk/filesystem.py:117 lib/disk/filesystem.py:118 msgid "Enter a encryption password for {}" msgstr "Entrer un mot de passe de cryptage pour {}" -#: lib/menu/selection_menu.py:174 lib/menu/selection_menu.py:567 lib/menu/selection_menu.py:575 lib/user_interaction/global_menu.py:225 lib/menu/selection_menu.py:646 lib/menu/global_menu.py:225 msgid "Enter disk encryption password (leave blank for no encryption): " msgstr "Entrer le mot de passe de chiffrement du disque (laisser vide pour aucun chiffrement) : " -#: lib/menu/selection_menu.py:407 lib/menu/selection_menu.py:617 lib/menu/selection_menu.py:625 msgid "Create a required super-user with sudo privileges: " msgstr "Créer un super-utilisateur requis avec les privilèges sudo : " -#: lib/menu/selection_menu.py:347 lib/menu/selection_menu.py:554 lib/menu/selection_menu.py:562 lib/user_interaction/global_menu.py:220 lib/menu/selection_menu.py:641 lib/menu/global_menu.py:220 msgid "Enter root password (leave blank to disable root): " msgstr "Entrer le mot de passe root (laisser vide pour désactiver root) : " -#: lib/user_interaction.py:307 lib/user_interaction.py:324 lib/user_interaction/manage_users_conf.py:86 lib/user_interaction/manage_users_conf.py:121 msgid "Password for user \"{}\": " -msgstr "Mot de passe pour l'utilisateur \"{}\" : " +msgstr "Mot de passe pour l'utilisateur \"{}\" : " -#: lib/user_interaction.py:405 lib/user_interaction.py:408 lib/user_interaction.py:407 lib/user_interaction/general_conf.py:152 msgid "Verifying that additional packages exist (this might take a few seconds)" msgstr "Vérifier que des packages supplémentaires existent (cela peut prendre quelques secondes)" -#: lib/user_interaction.py:281 lib/user_interaction/general_conf.py:22 msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" msgstr "Souhaitez-vous utiliser la synchronisation automatique de l'heure (NTP) avec les serveurs de temps par défaut ?\n" -#: lib/user_interaction.py:282 lib/user_interaction/general_conf.py:23 msgid "" "Hardware time and other post-configuration steps might be required in order for NTP to work.\n" "For more information, please check the Arch wiki" @@ -501,155 +397,96 @@ msgstr "" "Le temps matériel et d'autres étapes de post-configuration peuvent être nécessaires pour que NTP fonctionne.\n" "Pour plus d'informations, veuillez consulter le wiki Arch" -#: lib/menu/selection_menu.py:411 lib/menu/selection_menu.py:621 lib/menu/selection_menu.py:629 msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "Entrer un nom d'utilisateur pour créer un utilisateur supplémentaire (laisser vide pour ignorer) : " +msgstr "Entrer un nom d'utilisateur pour créer un utilisateur supplémentaire (laisser vide pour ignorer) : " -#: lib/menu/menu.py:116 -#, fuzzy msgid "Use ESC to skip\n" -msgstr "" -"Utiliser ESC pour ignorer\n" -"\n" +msgstr "Utiliser ESC pour ignorer\n" -#: lib/menu/list_manager.py:117 msgid "" "\n" " Choose an object from the list, and select one of the available actions for it to execute" msgstr "" +"\n" +"Choisir un objet dans la liste et sélectionner l'une des actions disponibles pour qu'il s'exécute" -#: lib/menu/list_manager.py:130 lib/user_interaction/subvolume_config.py:90 msgid "Cancel" -msgstr "" +msgstr "Annuler" -#: lib/menu/list_manager.py:131 -#, fuzzy msgid "Confirm and exit" -msgstr "Configurer le réseau" +msgstr "Confirmer et quitter" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:228 lib/menu/list_manager.py:251 lib/menu/list_manager.py:276 lib/user_interaction/subvolume_config.py:12 lib/user_interaction/subvolume_config.py:44 lib/user_interaction/subvolume_config.py:78 lib/user_interaction/subvolume_config.py:82 lib/user_interaction/subvolume_config.py:85 msgid "Add" -msgstr "" +msgstr "Ajouter" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:231 lib/menu/list_manager.py:255 lib/user_interaction/subvolume_config.py:78 msgid "Copy" -msgstr "" +msgstr "Copier" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:237 lib/menu/list_manager.py:261 lib/user_interaction/subvolume_config.py:82 lib/user_interaction/subvolume_config.py:85 msgid "Edit" -msgstr "" +msgstr "Modifier" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:242 lib/menu/list_manager.py:264 lib/user_interaction/subvolume_config.py:40 msgid "Delete" -msgstr "" +msgstr "Supprimer" -#: lib/menu/list_manager.py:185 -#, fuzzy msgid "Select an action for < {} >" -msgstr "" -"Sélectionner quoi faire avec\n" -"{}" - -#: lib/menu/list_manager.py:229 -msgid "Add :" -msgstr "" - -#: lib/menu/list_manager.py:233 -msgid "Copy to :" -msgstr "" - -#: lib/menu/list_manager.py:240 -msgid "Edite :" -msgstr "" - -#: lib/menu/list_manager.py:252 -msgid "Key :" -msgstr "" +msgstr "Sélectionner une action pour < {} >" -#: lib/menu/list_manager.py:253 -msgid "Value :" -msgstr "" - -#: lib/menu/list_manager.py:257 msgid "Copy to new key:" -msgstr "" +msgstr "Copier vers une nouvelle clé :" -#: lib/menu/list_manager.py:262 -#, python-brace-format -msgid "Edit {origkey} :" -msgstr "" - -#: lib/models/network_configuration.py:53 lib/models/network_configuration.py:74 msgid "Unknown nic type: {}. Possible values are {}" -msgstr "" +msgstr "Type de carte réseau inconnu : {}. Les valeurs possibles sont {}" -#: lib/configuration.py:75 msgid "" "\n" "This is your chosen configuration:" msgstr "" +"\n" +"Voici la configuration choisie :" -#: lib/pacman.py:18 msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "" +msgstr "Pacman est déjà en cours d'exécution, attendez au maximum 10 minutes pour qu'il se termine." -#: lib/pacman.py:25 msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "" +msgstr "Le verrou pacman préexistant n'a jamais été fermé. Veuillez nettoyer toutes les sessions pacman existantes avant d'utiliser archinstall." -#: lib/user_interaction/general_conf.py:174 msgid "Choose which optional additional repositories to enable" -msgstr "" +msgstr "Choisir les référentiels supplémentaires en option à activer" -#: lib/user_interaction/manage_users_conf.py:32 -msgid "Add an user" -msgstr "" +msgid "Add a user" +msgstr "Ajouter un utilisateur" -#: lib/user_interaction/manage_users_conf.py:33 -#, fuzzy msgid "Change password" -msgstr "Entrer un mot de passe : " +msgstr "Changer le mot de passe" -#: lib/user_interaction/manage_users_conf.py:34 msgid "Promote/Demote user" -msgstr "" +msgstr "Promouvoir/Rétrograder l'utilisateur" -#: lib/user_interaction/manage_users_conf.py:35 msgid "Delete User" -msgstr "" +msgstr "Supprimer l'utilisateur" -#: lib/user_interaction/manage_users_conf.py:99 msgid "" "\n" "Define a new user\n" msgstr "" +"\n" +"Définir un nouvel utilisateur\n" -#: lib/user_interaction/manage_users_conf.py:100 msgid "User Name : " -msgstr "" +msgstr "Nom d'utilisateur : " -#: lib/user_interaction/manage_users_conf.py:115 -#, fuzzy msgid "Should {} be a superuser (sudoer)?" -msgstr "Cet utilisateur doit-il être un superutilisateur (sudoer) ?" +msgstr "Cet utilisateur {} doit-il être un superutilisateur (sudoer) ?" -#: lib/user_interaction/manage_users_conf.py:161 -#, fuzzy msgid "Define users with sudo privilege: " -msgstr "Créer un super-utilisateur requis avec les privilèges sudo : " +msgstr "Définir les utilisateurs avec le privilège sudo : " -#: lib/user_interaction/network_conf.py:24 -#, fuzzy msgid "No network configuration" -msgstr "Copier la configuration réseau ISO dans l'installation" +msgstr "Aucune configuration réseau" -#: lib/user_interaction/partitioning_conf.py:128 lib/user_interaction/partitioning_conf.py:129 -#, fuzzy msgid "Set desired subvolumes on a btrfs partition" -msgstr "Définir le système de fichiers souhaité pour une partition" +msgstr "Définir les sous-volumes souhaités sur une partition btrfs" -#: lib/user_interaction/partitioning_conf.py:296 lib/user_interaction/partitioning_conf.py:303 -#, fuzzy msgid "" "{}\n" "\n" @@ -657,135 +494,254 @@ msgid "" msgstr "" "{}\n" "\n" -"Sélectionner la partition sur laquelle définir un système de fichiers" +"Sélectionner la partition sur laquelle définir les sous-volumes" -#: lib/user_interaction/partitioning_conf.py:305 lib/user_interaction/partitioning_conf.py:312 msgid "Manage btrfs subvolumes for current partition" -msgstr "" +msgstr "Gérer les sous-volumes btrfs pour la partition actuelle" -#: lib/user_interaction/save_conf.py:24 lib/user_interaction/save_conf.py:29 msgid "No configuration" -msgstr "" +msgstr "Aucune configuration" -#: lib/user_interaction/save_conf.py:42 msgid "Save user configuration" -msgstr "" +msgstr "Enregistrer la configuration utilisateur" -#: lib/user_interaction/save_conf.py:43 msgid "Save user credentials" -msgstr "" +msgstr "Enregistrer les informations d'identification de l'utilisateur" -#: lib/user_interaction/save_conf.py:44 -#, fuzzy msgid "Save disk layout" -msgstr "Sélectionner la disposition du disque" +msgstr "Enregistrer la disposition du disque" -#: lib/user_interaction/save_conf.py:45 msgid "Save all" -msgstr "" +msgstr "Tout enregistrer" -#: lib/user_interaction/save_conf.py:48 -#, fuzzy msgid "Choose which configuration to save" -msgstr "Choisir la langue locale à utiliser" +msgstr "Choisir la configuration à enregistrer" -#: lib/user_interaction/save_conf.py:59 msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "" +msgstr "Saisir un répertoire pour la ou les configuration(s) à enregistrer : " -#: lib/user_interaction/save_conf.py:63 msgid "Not a valid directory: {}" -msgstr "" +msgstr "Répertoire non valide : {}" -#: lib/user_interaction/utils.py:32 msgid "The password you are using seems to be weak," -msgstr "" +msgstr "Le mot de passe que vous utilisez semble faible," -#: lib/user_interaction/utils.py:33 -#, fuzzy msgid "are you sure you want to use it?" -msgstr "Voulez-vous vraiment abandonner ?" +msgstr "êtes-vous sûr de vouloir l'utiliser ?" -#: lib/user_interaction/global_menu.py:134 lib/menu/selection_menu.py:555 lib/menu/global_menu.py:134 -#, fuzzy -msgid "Additional repositories to enable" -msgstr "Packages supplémentaires à installer" +msgid "Optional repositories" +msgstr "Référentiels supplémentaires" -#: lib/user_interaction/global_menu.py:155 lib/menu/selection_menu.py:576 lib/menu/global_menu.py:155 msgid "Save configuration" -msgstr "" +msgstr "Enregistrer la configuration" -#: lib/user_interaction/global_menu.py:192 lib/menu/selection_menu.py:613 lib/menu/global_menu.py:192 msgid "Missing configurations:\n" -msgstr "" +msgstr "Configurations manquantes :\n" -#: lib/user_interaction/global_menu.py:210 lib/menu/selection_menu.py:631 lib/menu/global_menu.py:210 msgid "Either root-password or at least 1 superuser must be specified" -msgstr "" +msgstr "Le mot de passe root ou au moins 1 superutilisateur doit être spécifié" -#: lib/user_interaction/global_menu.py:275 lib/menu/selection_menu.py:695 lib/menu/global_menu.py:275 -#, fuzzy msgid "Manage superuser accounts: " -msgstr "Spécifier le compte superutilisateur" +msgstr "Gérer les comptes de superutilisateur : " -#: lib/user_interaction/global_menu.py:279 lib/menu/selection_menu.py:699 lib/menu/global_menu.py:279 -#, fuzzy msgid "Manage ordinary user accounts: " -msgstr "Spécifier le compte utilisateur" +msgstr "Gérer les comptes d'utilisateurs ordinaires : " -#: lib/user_interaction/subvolume_config.py:17 msgid " Subvolume :{:16}" -msgstr "" +msgstr " Sous-volume :{:16}" -#: lib/user_interaction/subvolume_config.py:19 lib/user_interaction/subvolume_config.py:22 msgid " mounted at {:16}" -msgstr "" +msgstr " monté à {:16}" -#: lib/user_interaction/subvolume_config.py:26 msgid " with option {}" -msgstr "" +msgstr " avec option {}" -#: lib/user_interaction/subvolume_config.py:46 msgid "" "\n" " Fill the desired values for a new subvolume \n" msgstr "" +"\n" +" Remplir les valeurs souhaitées pour un nouveau sous-volume \n" -#: lib/user_interaction/subvolume_config.py:77 msgid "Subvolume name " -msgstr "" +msgstr "Nom du sous-volume " -#: lib/user_interaction/subvolume_config.py:81 msgid "Subvolume mountpoint" -msgstr "" +msgstr "Point de montage du sous-volume" -#: lib/user_interaction/subvolume_config.py:84 msgid "Subvolume options" -msgstr "" +msgstr "Options de sous-volume" -#: lib/user_interaction/subvolume_config.py:87 msgid "Save" -msgstr "" +msgstr "Sauver" -#: lib/user_interaction/subvolume_config.py:121 msgid "Subvolume name :" -msgstr "" +msgstr "Nom du sous-volume :" -#: lib/user_interaction/subvolume_config.py:124 -#, fuzzy msgid "Select a mount point :" -msgstr "Sélectionner un fuseau horaire" +msgstr "Sélectionner un point de montage :" -#: lib/user_interaction/subvolume_config.py:128 msgid "Select the desired subvolume options " -msgstr "" +msgstr "Sélectionner les options de sous-volume souhaitées " -#: lib/user_interaction/manage_users_conf.py:161 -#, fuzzy msgid "Define users with sudo privilege, by username: " -msgstr "Créer un super-utilisateur requis avec les privilèges sudo : " +msgstr "Définir les utilisateurs avec le privilège sudo, par nom d'utilisateur : " -#: lib/installer.py:152 -#, fuzzy msgid "[!] A log file has been created here: {}" -msgstr "[!] Un fichier journal a été créé ici : {} {}" +msgstr "[!] Un fichier journal a été créé ici : {}" + +msgid "Would you like to use BTRFS subvolumes with a default structure?" +msgstr "Souhaitez-vous utiliser des sous-volumes BTRFS avec une structure par défaut ?" + +msgid "Would you like to use BTRFS compression?" +msgstr "Souhaitez-vous utiliser la compression BTRFS ?" + +msgid "Would you like to create a separate partition for /home?" +msgstr "Souhaitez-vous créer une partition séparée pour /home ?" + +msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" +msgstr "Les disques sélectionnés n'ont pas la capacité minimale requise pour une suggestion automatique\n" + +msgid "Minimum capacity for /home partition: {}GB\n" +msgstr "Capacité minimale pour la partition /home : {} Go\n" + +msgid "Minimum capacity for Arch Linux partition: {}GB" +msgstr "Capacité minimale pour la partition Arch Linux : {} Go" + +msgid "Continue" +msgstr "Poursuivre" + +msgid "yes" +msgstr "oui" + +msgid "no" +msgstr "non" + +msgid "set: {}" +msgstr "définir : {}" + +msgid "Manual configuration setting must be a list" +msgstr "Le paramètre de configuration manuelle doit être une liste" + +msgid "No iface specified for manual configuration" +msgstr "Aucun iface spécifié pour la configuration manuelle" + +msgid "Manual nic configuration with no auto DHCP requires an IP address" +msgstr "La configuration manuelle de la carte réseau sans DHCP automatique nécessite une adresse IP" + +msgid "Add interface" +msgstr "Ajouter une interface" + +msgid "Edit interface" +msgstr "Modifier l'interface" + +msgid "Delete interface" +msgstr "Supprimer l'interface" + +msgid "Select interface to add" +msgstr "Sélectionner l'interface à ajouter" + +msgid "Manual configuration" +msgstr "Configuration manuelle" + +msgid "Mark/Unmark a partition as compressed (btrfs only)" +msgstr "Marquer/Démarquer une partition comme compressée (btrfs uniquement)" + +msgid "The password you are using seems to be weak, are you sure you want to use it?" +msgstr "Le mot de passe que vous utilisez semble faible, êtes-vous sûr de vouloir l'utiliser ?" + +msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" +msgstr "Fournit une sélection d'environnements de bureau et de gestionnaires de fenêtres en mosaïque, par ex. gnome, kde, sway" + +msgid "Select your desired desktop environment" +msgstr "Sélectionner l'environnement de bureau souhaité" + +msgid "A very basic installation that allows you to customize Arch Linux as you see fit." +msgstr "Une installation très basique qui vous permet de personnaliser Arch Linux comme bon vous semble." + +msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" +msgstr "Fournit une sélection de divers paquets de serveur à installer et à activer, par ex. httpd, nginx, mariadb" + +msgid "Choose which servers to install, if none then a minimal installation wil be done" +msgstr "Choisir les serveurs à installer, s'il n'y en a pas, une installation minimale sera effectuée" + +msgid "Installs a minimal system as well as xorg and graphics drivers." +msgstr "Installe un système minimal ainsi que les pilotes graphiques et xorg." + +msgid "Press Enter to continue." +msgstr "Appuyer sur Entrée pour continuer." + +msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" +msgstr "Souhaitez-vous chrooter dans l'installation nouvellement créée et effectuer la configuration post-installation ?" + +msgid "Are you sure you want to reset this setting?" +msgstr "Voulez-vous vraiment réinitialiser ce paramètre ?" + +msgid "Select one or more hard drives to use and configure\n" +msgstr "Sélectionner un ou plusieurs disques durs à utiliser et à configurer\n" + +msgid "Any modifications to the existing setting will reset the disk layout!" +msgstr "Toute modification du paramètre existant réinitialisera la disposition du disque !" + +msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" +msgstr "Si vous réinitialisez la sélection du disque dur, cela réinitialisera également la disposition actuelle du disque. Êtes-vous sûr ?" + +msgid "Save and exit" +msgstr "Sauvegarder et quitter" + +msgid "" +"{}\n" +"contains queued partitions, this will remove those, are you sure?" +msgstr "" +"{}\n" +"contient des partitions en file d'attente, cela les supprimera, êtes-vous sûr ?" + +msgid "No audio server" +msgstr "Pas de serveur audio" + +msgid "(default)" +msgstr "(par défaut)" + +msgid "Use ESC to skip" +msgstr "Utiliser ESC pour ignorer" + +msgid "" +"Use CTRL+C to reset current selection\n" +"\n" +msgstr "" +"Utiliser CTRL+C pour réinitialiser la sélection actuelle\n" +"\n" + +msgid "Copy to: " +msgstr "Copier vers: " + +msgid "Edit: " +msgstr "Modifier: " + +msgid "Key: " +msgstr "Clé: " + +msgid "Edit {}: " +msgstr "Modifier {}: " + +msgid "Add: " +msgstr "Ajouter: " + +msgid "Value: " +msgstr "Valeur: " + +msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" +msgstr "" + +msgid "Select one of the disks or skip and use /mnt as default" +msgstr "" + +msgid "Select which partitions to mark for formatting:" +msgstr "Sélectionner la partition à masquer pour le formatage:" + +#~ msgid "Select disk layout" +#~ msgstr "Sélectionner la disposition du disque" + +#, python-brace-format +#~ msgid "Edit {origkey} :" +#~ msgstr "Modifier {origkey} :" diff --git a/archinstall/locales/it/LC_MESSAGES/base.mo b/archinstall/locales/it/LC_MESSAGES/base.mo Binary files differnew file mode 100644 index 00000000..34a6c898 --- /dev/null +++ b/archinstall/locales/it/LC_MESSAGES/base.mo diff --git a/archinstall/locales/it/LC_MESSAGES/base.po b/archinstall/locales/it/LC_MESSAGES/base.po new file mode 100644 index 00000000..36e8d5b4 --- /dev/null +++ b/archinstall/locales/it/LC_MESSAGES/base.po @@ -0,0 +1,752 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Giovanni Donisi <giovannidonisi0701@gmail.com>\n" +"Language-Team: \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.0.1\n" + +msgid "[!] A log file has been created here: {} {}" +msgstr "[!] Un file di log è stato creato qui: {} {}" + +msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" +msgstr " Invia questo problema (e il file) a https://github.com/archlinux/archinstall/issues" + +msgid "Do you really want to abort?" +msgstr "Vuoi davvero interrompere?" + +msgid "And one more time for verification: " +msgstr "E ancora una volta per verifica: " + +msgid "Would you like to use swap on zram?" +msgstr "Ti piacerebbe usare swap su zram?" + +msgid "Desired hostname for the installation: " +msgstr "Nome host desiderato per l'installazione: " + +msgid "Username for required superuser with sudo privileges: " +msgstr "Nome utente per il superuser richiesto con privilegi sudo: " + +msgid "Any additional users to install (leave blank for no users): " +msgstr "Eventuali utenti aggiuntivi da installare (lascia vuoto per nessun utente): " + +msgid "Should this user be a superuser (sudoer)?" +msgstr "Questo utente dovrebbe essere un superuser (sudoer)?" + +msgid "Select a timezone" +msgstr "Seleziona un fuso orario" + +msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" +msgstr "Vorresti usare GRUB come bootloader invece di systemd-boot?" + +msgid "Choose a bootloader" +msgstr "Scegli un bootloader" + +msgid "Choose an audio server" +msgstr "Scegli un server audio" + +msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." +msgstr "Solo pacchetti come base, base-devel, linux, linux-firmware, efibootmgr e pacchetti di profilo opzionali vengono installati." + +msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." +msgstr "Se desideri un browser web, come firefox o chromium, puoi specificarlo nel seguente prompt." + +msgid "Write additional packages to install (space separated, leave blank to skip): " +msgstr "Scrivi pacchetti aggiuntivi da installare (separati da spazi, lascia vuoto per saltare): " + +msgid "Copy ISO network configuration to installation" +msgstr "Copia la configurazione di rete ISO nell'installazione" + +msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" +msgstr "Usa NetworkManager (necessario per configurare graficamente Internet in GNOME e KDE)" + +msgid "Select one network interface to configure" +msgstr "Selezionare un'interfaccia di rete da configurare" + +msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" +msgstr "Seleziona la modalità da configurare per \"{}\" o salta per utilizzare la modalità predefinita \"{}\"" + +msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " +msgstr "Immettere l'IP e la sottorete per {} (esempio: 192.168.0.5/24): " + +msgid "Enter your gateway (router) IP address or leave blank for none: " +msgstr "Inserisci l'indirizzo IP del tuo gateway (router) o lascia vuoto per nessuno: " + +msgid "Enter your DNS servers (space separated, blank for none): " +msgstr "Inserisci i tuoi server DNS (separati da spazi, vuoto per nessuno): " + +msgid "Select which filesystem your main partition should use" +msgstr "Seleziona quale filesystem dovrebbe usare la tua partizione principale" + +msgid "Current partition layout" +msgstr "Layout della partizione corrente" + +msgid "" +"Select what to do with\n" +"{}" +msgstr "" +"Seleziona cosa fare con\n" +"{}" + +msgid "Enter a desired filesystem type for the partition" +msgstr "Immettere un tipo di filesystem desiderato per la partizione" + +msgid "Enter the start sector (percentage or block number, default: {}): " +msgstr "Inserisci il settore iniziale (percentuale o numero di blocco, predefinito: {}): " + +msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +msgstr "Inserisci il settore finale (percentuale o numero di blocco, predefinito: {}): " + +msgid "{} contains queued partitions, this will remove those, are you sure?" +msgstr "{} contiene partizioni in coda, questo le rimuoverà, sei sicuro?" + +msgid "" +"{}\n" +"\n" +"Select by index which partitions to delete" +msgstr "" +"{}\n" +"\n" +"Seleziona per indice quali partizioni eliminare" + +msgid "" +"{}\n" +"\n" +"Select by index which partition to mount where" +msgstr "" +"{}\n" +"\n" +"Seleziona per indice quale partizione montare da dove" + +msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." +msgstr " * I punti di montaggio della partizione sono relativi all'interno dell'installazione, l'avvio sarebbe per esempio /boot." + +msgid "Select where to mount partition (leave blank to remove mountpoint): " +msgstr "Seleziona dove montare la partizione (lascia vuoto per rimuovere il punto di montaggio): " + +msgid "" +"{}\n" +"\n" +"Select which partition to mask for formatting" +msgstr "" +"{}\n" +"\n" +"Seleziona quale partizione mascherare per la formattazione" + +msgid "" +"{}\n" +"\n" +"Select which partition to mark as encrypted" +msgstr "" +"{}\n" +"\n" +"Seleziona quale partizione contrassegnare come crittografata" + +msgid "" +"{}\n" +"\n" +"Select which partition to mark as bootable" +msgstr "" +"{}\n" +"\n" +"Seleziona quale partizione contrassegnare come avviabile" + +msgid "" +"{}\n" +"\n" +"Select which partition to set a filesystem on" +msgstr "" +"{}\n" +"\n" +"Seleziona su quale partizione impostare un filesystem" + +msgid "Enter a desired filesystem type for the partition: " +msgstr "Immettere un tipo di filesystem desiderato per la partizione: " + +msgid "Archinstall language" +msgstr "Lingua di Archinstall" + +msgid "Wipe all selected drives and use a best-effort default partition layout" +msgstr "Cancella tutte le unità selezionate e utilizza un layout di partizione predefinito ottimale" + +msgid "Select what to do with each individual drive (followed by partition usage)" +msgstr "Seleziona cosa fare con ogni singola unità (seguito dall'utilizzo della partizione)" + +msgid "Select what you wish to do with the selected block devices" +msgstr "Seleziona cosa desideri fare con i dispositivi a blocchi selezionati" + +msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" +msgstr "Questo è un elenco di profili preprogrammati, che potrebbero semplificare l'installazione di elementi come gli ambienti desktop" + +msgid "Select keyboard layout" +msgstr "Seleziona il layout della tastiera" + +msgid "Select one of the regions to download packages from" +msgstr "Seleziona una delle regioni da cui scaricare i pacchetti" + +msgid "Select one or more hard drives to use and configure" +msgstr "Selezionare uno o più dischi rigidi da utilizzare e configurare" + +msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." +msgstr "Per la migliore compatibilità con l'hardware AMD, potresti voler utilizzare tutte le opzioni open source o AMD / ATI." + +msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" +msgstr "Per la migliore compatibilità con l'hardware Intel, potresti voler utilizzare tutte le opzioni open source o Intel.\n" + +msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" +msgstr "Per la migliore compatibilità con l'hardware Nvidia, potresti voler utilizzare il driver proprietario Nvidia.\n" + +msgid "" +"\n" +"\n" +"Select a graphics driver or leave blank to install all open-source drivers" +msgstr "" +"\n" +"\n" +"Seleziona un driver grafico o lascia vuoto per installare tutti i driver open source" + +msgid "All open-source (default)" +msgstr "Tutti gli open source (predefinito)" + +msgid "Choose which kernels to use or leave blank for default \"{}\"" +msgstr "Scegli quali kernel usare o lascia vuoto per il predefinito \"{}\"" + +msgid "Choose which locale language to use" +msgstr "Scegli quale lingua locale utilizzare" + +msgid "Choose which locale encoding to use" +msgstr "Scegli quale codifica locale utilizzare" + +msgid "Select one of the values shown below: " +msgstr "Seleziona uno dei valori mostrati di seguito: " + +msgid "Select one or more of the options below: " +msgstr "Seleziona una o più delle seguenti opzioni " + +msgid "Adding partition...." +msgstr "Aggiungendo la partizione...." + +msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." +msgstr "Devi inserire un tipo di filesystem valido per continuare. Vedi `man parted` per tipi di filesystem validi." + +msgid "Error: Listing profiles on URL \"{}\" resulted in:" +msgstr "Errore: l'elenco dei profili sull'URL \"{}\" ha prodotto:" + +msgid "Error: Could not decode \"{}\" result as JSON:" +msgstr "Errore: impossibile decodificare il risultato \"{}\" come JSON:" + +msgid "Keyboard layout" +msgstr "Layout della tastiera" + +msgid "Mirror region" +msgstr "Regione dei mirror" + +msgid "Locale language" +msgstr "Lingua locale" + +msgid "Locale encoding" +msgstr "Codifica locale" + +msgid "Drive(s)" +msgstr "Dischi" + +msgid "Disk layout" +msgstr "Layout del disco" + +msgid "Encryption password" +msgstr "Password di crittografia" + +msgid "Swap" +msgstr "Swap" + +msgid "Bootloader" +msgstr "Bootloader" + +msgid "Root password" +msgstr "Password di root" + +msgid "Superuser account" +msgstr "Account superuser" + +msgid "User account" +msgstr "Account utente" + +msgid "Profile" +msgstr "Profilo" + +msgid "Audio" +msgstr "Audio" + +msgid "Kernels" +msgstr "Kernel" + +msgid "Additional packages" +msgstr "Pacchetti aggiuntivi" + +msgid "Network configuration" +msgstr "Configurazione di rete" + +msgid "Automatic time sync (NTP)" +msgstr "Sincronizzazione automatica dell'ora (NTP)" + +msgid "Install ({} config(s) missing)" +msgstr "Installa ({} configurazioni mancanti)" + +msgid "" +"You decided to skip harddrive selection\n" +"and will use whatever drive-setup is mounted at {} (experimental)\n" +"WARNING: Archinstall won't check the suitability of this setup\n" +"Do you wish to continue?" +msgstr "" +"Hai deciso di saltare la selezione del disco rigido\n" +"e utilizzerà qualsiasi configurazione dell'unità montata su {} (sperimentale)\n" +"ATTENZIONE: Archinstall non verificherà l'idoneità di questa configurazione\n" +"Vuoi continuare?" + +msgid "Re-using partition instance: {}" +msgstr "Riutilizzo dell'istanza di partizione: {}" + +msgid "Create a new partition" +msgstr "Crea una nuova partizione" + +msgid "Delete a partition" +msgstr "Elimina una partizione" + +msgid "Clear/Delete all partitions" +msgstr "Cancella/Elimina tutte le partizioni" + +msgid "Assign mount-point for a partition" +msgstr "Assegna punto di montaggio per una partizione" + +msgid "Mark/Unmark a partition to be formatted (wipes data)" +msgstr "Seleziona/Deseleziona una partizione da formattare (cancella i dati)" + +msgid "Mark/Unmark a partition as encrypted" +msgstr "Seleziona/Deseleziona una partizione come crittografata" + +msgid "Mark/Unmark a partition as bootable (automatic for /boot)" +msgstr "Seleziona/Deseleziona una partizione come avviabile (automatico per /boot)" + +msgid "Set desired filesystem for a partition" +msgstr "Imposta il filesystem desiderato per una partizione" + +msgid "Abort" +msgstr "Interrompi" + +msgid "Hostname" +msgstr "Nome host" + +msgid "Not configured, unavailable unless setup manually" +msgstr "Non configurato, non disponibile a meno che non venga configurato manualmente" + +msgid "Timezone" +msgstr "Fuso orario" + +msgid "Set/Modify the below options" +msgstr "Imposta/Modifica le seguenti opzioni" + +msgid "Install" +msgstr "Installa" + +msgid "" +"Use ESC to skip\n" +"\n" +msgstr "" +"Usa ESC per saltare\n" +"\n" + +msgid "Suggest partition layout" +msgstr "Suggerisci il layout della partizione" + +msgid "Enter a password: " +msgstr "Inserisci una password: " + +msgid "Enter a encryption password for {}" +msgstr "Inserisci una password di crittografia per {}" + +msgid "Enter disk encryption password (leave blank for no encryption): " +msgstr "Inserisci la password di crittografia del disco (lasciare vuoto per nessuna crittografia): " + +msgid "Create a required super-user with sudo privileges: " +msgstr "Crea un superuser richiesto con privilegi sudo: " + +msgid "Enter root password (leave blank to disable root): " +msgstr "Inserisci la password di root (lascia vuoto per disabilitare il root): " + +msgid "Password for user \"{}\": " +msgstr "Password per l'utente \"{}\": " + +msgid "Verifying that additional packages exist (this might take a few seconds)" +msgstr "Verificando l'esistenza dei pacchetti aggiuntivi (potrebbe richiedere alcuni secondi)" + +msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" +msgstr "Si desidera utilizzare la sincronizzazione automatica dell'ora (NTP) con i server orari predefiniti?\n" + +msgid "" +"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" +"For more information, please check the Arch wiki" +msgstr "" +"Per il funzionamento di NTP potrebbero essere necessari l'ora dell'hardware e altri passaggi successivi alla configurazione.\n" +"Per ulteriori informazioni, consultare Arch Wiki" + +msgid "Enter a username to create an additional user (leave blank to skip): " +msgstr "Inserisci un nome utente per creare un utente aggiuntivo (lascia vuoto per saltare): " + +msgid "Use ESC to skip\n" +msgstr "Usa ESC per saltare\n" + +msgid "" +"\n" +" Choose an object from the list, and select one of the available actions for it to execute" +msgstr "" +"\n" +" Scegli un oggetto dall'elenco e seleziona una delle azioni disponibili per l'esecuzione" + +msgid "Cancel" +msgstr "Annulla" + +msgid "Confirm and exit" +msgstr "Conferma ed esci" + +msgid "Add" +msgstr "Aggiungi" + +msgid "Copy" +msgstr "Copia" + +msgid "Edit" +msgstr "Modifica" + +msgid "Delete" +msgstr "Elimina" + +msgid "Select an action for < {} >" +msgstr "Seleziona un'azione per < {} >" + +msgid "Copy to new key:" +msgstr "Copia su nuova chiave:" + +msgid "Unknown nic type: {}. Possible values are {}" +msgstr "Tipo nic sconosciuto: {}. I valori possibili sono {}" + +msgid "" +"\n" +"This is your chosen configuration:" +msgstr "" +"\n" +"Questa è la configurazione scelta:" + +msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." +msgstr "Pacman è già in esecuzione, in attesa di un massimo di 10 minuti per la sua terminazione." + +msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." +msgstr "Il lock di pacman preesistente non è mai terminato. Please clean up any existing pacman sessions before using archinstall." + +msgid "Choose which optional additional repositories to enable" +msgstr "Scegli quali repository aggiuntivi facoltativi abilitare" + +msgid "Add a user" +msgstr "Aggiungi un utente" + +msgid "Change password" +msgstr "Cambia password" + +msgid "Promote/Demote user" +msgstr "Promuovi/Retrocedi un utente" + +msgid "Delete User" +msgstr "Elimina utente" + +msgid "" +"\n" +"Define a new user\n" +msgstr "" +"\n" +"Definisci un nuovo utente\n" + +msgid "User Name : " +msgstr "Nome utente : " + +msgid "Should {} be a superuser (sudoer)?" +msgstr "{} dovrebbe essere un superutente? (sudoer)" + +msgid "Define users with sudo privilege: " +msgstr "Definisci utenti con privilegi sudo: " + +msgid "No network configuration" +msgstr "Nessuna configurazione di rete" + +msgid "Set desired subvolumes on a btrfs partition" +msgstr "Imposta i sottovolumi desiderati su una partizione btrfs" + +msgid "" +"{}\n" +"\n" +"Select which partition to set subvolumes on" +msgstr "" +"{}\n" +"\n" +"Seleziona su quale partizione impostare i sottovolumi" + +msgid "Manage btrfs subvolumes for current partition" +msgstr "Gestisci i sottovolumi btrfs per la partizione corrente" + +msgid "No configuration" +msgstr "Nessuna configurazione" + +msgid "Save user configuration" +msgstr "Salva configurazione utente" + +msgid "Save user credentials" +msgstr "Salva le credenziali dell'utente" + +msgid "Save disk layout" +msgstr "Salva layout del disco" + +msgid "Save all" +msgstr "Salva tutto" + +msgid "Choose which configuration to save" +msgstr "Scegli quale configurazione salvare" + +msgid "Enter a directory for the configuration(s) to be saved: " +msgstr "Immettere una directory per le configurazioni da salvare: " + +msgid "Not a valid directory: {}" +msgstr "Directory non valida: {}" + +msgid "The password you are using seems to be weak," +msgstr "La password che stai utilizzando sembra essere debole," + +msgid "are you sure you want to use it?" +msgstr "sei sicuro di volerla usare?" + +msgid "Optional repositories" +msgstr "Repository opzionali" + +msgid "Save configuration" +msgstr "Salva configurazione" + +msgid "Missing configurations:\n" +msgstr "Configurazioni mancanti:\n" + +msgid "Either root-password or at least 1 superuser must be specified" +msgstr "È necessario specificare la password di root o almeno 1 superuser" + +msgid "Manage superuser accounts: " +msgstr "Gestisci account superusers: " + +msgid "Manage ordinary user accounts: " +msgstr "Gestisci gli account utente ordinari: " + +msgid " Subvolume :{:16}" +msgstr " Sottovolume :{:16}" + +msgid " mounted at {:16}" +msgstr " montato su {:16}" + +msgid " with option {}" +msgstr " con opzione {}" + +msgid "" +"\n" +" Fill the desired values for a new subvolume \n" +msgstr "" +"\n" +" Riempi i valori desiderati per un nuovo sottovolume \n" + +msgid "Subvolume name " +msgstr "Nome del sottovolume " + +msgid "Subvolume mountpoint" +msgstr "Punto di montaggio del sottovolume" + +msgid "Subvolume options" +msgstr "Opzioni del sottovolume" + +msgid "Save" +msgstr "Salva" + +msgid "Subvolume name :" +msgstr "Nome del sottovolume :" + +msgid "Select a mount point :" +msgstr "Seleziona un punto di montaggio :" + +msgid "Select the desired subvolume options " +msgstr "Selezionare le opzioni del sottovolume desiderate " + +msgid "Define users with sudo privilege, by username: " +msgstr "Definisci gli utenti con privilegi sudo, per nome utente: " + +msgid "[!] A log file has been created here: {}" +msgstr "[!] Un file di log è stato creato qui: {}" + +msgid "Would you like to use BTRFS subvolumes with a default structure?" +msgstr "Desideri utilizzare i sottovolumi BTRFS con una struttura predefinita?" + +msgid "Would you like to use BTRFS compression?" +msgstr "Vorresti usare la compressione BTRFS?" + +msgid "Would you like to create a separate partition for /home?" +msgstr "Vuoi creare una partizione separata per /home?" + +msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" +msgstr "Le unità selezionate non hanno la capacità minima richiesta per un suggerimento automatico\n" + +msgid "Minimum capacity for /home partition: {}GB\n" +msgstr "Capacità minima per la partizione /home: {}GB\n" + +msgid "Minimum capacity for Arch Linux partition: {}GB" +msgstr "Capacità minima per la partizione Arch Linux: {}GB" + +msgid "Continue" +msgstr "Continua" + +msgid "yes" +msgstr "sì" + +msgid "no" +msgstr "no" + +msgid "set: {}" +msgstr "imposta: {}" + +msgid "Manual configuration setting must be a list" +msgstr "L'impostazione della configurazione manuale deve essere un elenco" + +msgid "No iface specified for manual configuration" +msgstr "Nessuna iface specificata per la configurazione manuale" + +msgid "Manual nic configuration with no auto DHCP requires an IP address" +msgstr "La configurazione manuale del nic senza DHCP automatico richiede un indirizzo IP" + +msgid "Add interface" +msgstr "Aggiungi interfaccia" + +msgid "Edit interface" +msgstr "Modifica interfaccia" + +msgid "Delete interface" +msgstr "Elimina interfaccia" + +msgid "Select interface to add" +msgstr "Seleziona l'interfaccia da aggiungere" + +msgid "Manual configuration" +msgstr "Configurazione manuale" + +msgid "Mark/Unmark a partition as compressed (btrfs only)" +msgstr "Seleziona/Deseleziona una partizione come compressa (solo btrfs)" + +msgid "The password you are using seems to be weak, are you sure you want to use it?" +msgstr "La password che stai utilizzando sembra essere debole, sei sicuro di volerla usare?" + +msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" +msgstr "Fornisce una selezione di ambienti desktop e gestori di finestre tiling, per esempio gnome, kde, sway" + +msgid "Select your desired desktop environment" +msgstr "Seleziona l'ambiente desktop desiderato" + +msgid "A very basic installation that allows you to customize Arch Linux as you see fit." +msgstr "Un'installazione molto semplice che ti consente di personalizzare Arch Linux come meglio credi." + +msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" +msgstr "Fornisce una selezione di vari pacchetti server da installare e abilitare, per esempio httpd, nginx, mariadb" + +msgid "Choose which servers to install, if none then a minimal installation wil be done" +msgstr "Scegli quali server installare, se nessuno verrà eseguita un'installazione minima" + +msgid "Installs a minimal system as well as xorg and graphics drivers." +msgstr "Installa un sistema minimo oltre a xorg e driver grafici." + +msgid "Press Enter to continue." +msgstr "Premi Invio per continuare." + +msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" +msgstr "Vuoi eseguire il chroot nell'installazione appena creata ed fare la configurazione post-installazione?" + +msgid "Are you sure you want to reset this setting?" +msgstr "Sei sicuro di voler ripristinare questa impostazione?" + +msgid "Select one or more hard drives to use and configure\n" +msgstr "Seleziona uno o più dischi rigidi da utilizzare e configurare\n" + +msgid "Any modifications to the existing setting will reset the disk layout!" +msgstr "Qualsiasi modifica all'impostazione esistente ripristinerà il layout del disco!" + +msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" +msgstr "Se si ripristina la selezione del disco rigido, verrà ripristinato anche il layout del disco corrente. Sei sicuro?" + +msgid "Save and exit" +msgstr "Salva ed esci" + +msgid "" +"{}\n" +"contains queued partitions, this will remove those, are you sure?" +msgstr "" +"{}\n" +"contiene partizioni in coda, questo le rimuoverà, sei sicuro?" + +msgid "No audio server" +msgstr "Nessun server audio" + +msgid "(default)" +msgstr "(predefinito)" + +msgid "Use ESC to skip" +msgstr "Usa ESC per saltare" + +msgid "" +"Use CTRL+C to reset current selection\n" +"\n" +msgstr "" +"Usa CTRL+C per reimpostare la selezione corrente\n" +"\n" + +msgid "Copy to: " +msgstr "Copia su: " + +msgid "Edit: " +msgstr "Modifica: " + +msgid "Key: " +msgstr "Chiave: " + +msgid "Edit {}: " +msgstr "Modifica {}: " + +msgid "Add: " +msgstr "Aggiungi: " + +msgid "Value: " +msgstr "Valore: " + +msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" +msgstr "Puoi saltare la selezione e il partizionamento di un'unità e utilizzare qualsiasi configurazione di unità sia montata in /mnt (sperimentale)" + +msgid "Select one of the disks or skip and use /mnt as default" +msgstr "Seleziona uno dei dischi o salta e usa /mnt come predefinito" + +msgid "Select which partitions to mark for formatting:" +msgstr "Seleziona quali partizioni contrassegnare per la formattazione:" + +msgid "Use HSM to unlock encrypted drive" +msgstr "Utilizzare HSM per sbloccare l'unità crittografata" + +msgid "Device" +msgstr "Dispositivo" + +msgid "Size" +msgstr "Dimensione" + +msgid "Free space" +msgstr "Spazio libero" + +msgid "Bus-type" +msgstr "Tipo di bus" diff --git a/archinstall/locales/locales_generator.sh b/archinstall/locales/locales_generator.sh index 43e004d4..9432f83f 100755 --- a/archinstall/locales/locales_generator.sh +++ b/archinstall/locales/locales_generator.sh @@ -2,11 +2,11 @@ cd $(dirname "$0")/.. -find . -type f -iname "*.py" | xargs xgettext -j --omit-header -d base -o locales/base.pot +find . -type f -iname "*.py" | xargs xgettext --join-existing --no-location --omit-header -d base -o locales/base.pot for file in $(find locales/ -name "base.po"); do echo "Updating: $file" path=$(dirname $file) - msgmerge --quiet --width 512 --update $file locales/base.pot + msgmerge --quiet --no-location --width 512 --update $file locales/base.pot msgfmt -o $path/base.mo $file done diff --git a/archinstall/locales/nl/LC_MESSAGES/base.mo b/archinstall/locales/nl/LC_MESSAGES/base.mo Binary files differindex 454d4073..d7dcabc6 100644 --- a/archinstall/locales/nl/LC_MESSAGES/base.mo +++ b/archinstall/locales/nl/LC_MESSAGES/base.mo diff --git a/archinstall/locales/nl/LC_MESSAGES/base.po b/archinstall/locales/nl/LC_MESSAGES/base.po index b9b6b5a9..b712d8ca 100644 --- a/archinstall/locales/nl/LC_MESSAGES/base.po +++ b/archinstall/locales/nl/LC_MESSAGES/base.po @@ -12,107 +12,81 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 3.0.1\n" -#: lib/installer.py:144 lib/installer.py:152 msgid "[!] A log file has been created here: {} {}" -msgstr "" +msgstr "[!] Er is een logboek aangemaakt: {} {}" -#: lib/installer.py:145 lib/installer.py:153 msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "" +msgstr " Meld dit voorval (inclusief het logboek) op https://github.com/archlinux/archinstall/issues" -#: lib/user_interaction.py:83 lib/user_interaction/utils.py:86 msgid "Do you really want to abort?" msgstr "Weet u zeker dat u wilt afbreken?" -#: lib/user_interaction.py:101 lib/user_interaction.py:104 lib/user_interaction/utils.py:53 msgid "And one more time for verification: " msgstr "Nog eenmaal ter verificatie: " -#: lib/user_interaction.py:272 lib/user_interaction.py:275 lib/user_interaction/system_conf.py:142 msgid "Would you like to use swap on zram?" msgstr "Wilt u wisselgeheugen i.c.m. zram gebruiken?" -#: lib/user_interaction.py:285 lib/user_interaction.py:288 lib/user_interaction/general_conf.py:33 msgid "Desired hostname for the installation: " msgstr "Standaard hostnaam van installatie: " -#: lib/user_interaction.py:290 lib/user_interaction.py:293 msgid "Username for required superuser with sudo privileges: " -msgstr "Gebruikersnaam van administrator met sudo-rechten: " +msgstr "Gebruikersnaam van beheerder met sudo-rechten (vereist): " -#: lib/user_interaction.py:310 lib/user_interaction.py:313 lib/user_interaction/manage_users_conf.py:167 msgid "Any additional users to install (leave blank for no users): " msgstr "Andere toe te voegen gebruikers (laat leeg om niemand toe te voegen): " -#: lib/user_interaction.py:324 lib/user_interaction.py:327 msgid "Should this user be a superuser (sudoer)?" -msgstr "Moet deze gebruiker administrator (sudoer) worden?" +msgstr "Moet deze gebruiker beheerder (sudoer) worden?" -#: lib/user_interaction.py:340 lib/user_interaction.py:343 lib/user_interaction.py:346 lib/user_interaction/general_conf.py:41 msgid "Select a timezone" msgstr "Kies een tijdzone" -#: lib/user_interaction.py:354 lib/user_interaction.py:357 lib/user_interaction.py:360 lib/user_interaction.py:359 lib/user_interaction/system_conf.py:115 msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" msgstr "Wilt u GRUB gebruiken als opstartlader in plaats van systemd-boot?" -#: lib/user_interaction.py:364 lib/user_interaction.py:367 lib/user_interaction.py:370 lib/user_interaction.py:369 lib/user_interaction/system_conf.py:125 msgid "Choose a bootloader" msgstr "Kies een opstartlader" -#: lib/user_interaction.py:380 lib/user_interaction.py:383 lib/user_interaction.py:386 lib/user_interaction.py:385 lib/user_interaction/general_conf.py:53 msgid "Choose an audio server" msgstr "Kies een audioserver" -#: lib/user_interaction.py:391 lib/user_interaction.py:394 lib/user_interaction.py:397 lib/user_interaction.py:396 lib/user_interaction/general_conf.py:138 msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." msgstr "Er worden alleen basispakketten geïnstalleerd, zoals base, base-devel, linux, linux-firmware, efibootmgr en profielpakketten (optioneel)." -#: lib/user_interaction.py:392 lib/user_interaction.py:395 lib/user_interaction.py:398 lib/user_interaction.py:397 lib/user_interaction/general_conf.py:139 msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." msgstr "Als u een webbrowser wenst, zoals Firefox of Chromium, dan kunt u dit handmatig aangeven." -#: lib/user_interaction.py:396 lib/user_interaction.py:399 lib/user_interaction.py:402 lib/user_interaction.py:401 lib/user_interaction/general_conf.py:143 msgid "Write additional packages to install (space separated, leave blank to skip): " msgstr "Typ de namen van te installeren pakketten (spatiegescheiden - laat leeg om over te slaan): " -#: lib/user_interaction.py:419 lib/user_interaction.py:422 lib/user_interaction.py:425 lib/user_interaction.py:424 lib/user_interaction/network_conf.py:25 msgid "Copy ISO network configuration to installation" msgstr "ISO-netwerkinstellingen overzetten naar fysieke installatie" -#: lib/user_interaction.py:420 lib/user_interaction.py:423 lib/user_interaction.py:426 lib/user_interaction.py:425 lib/user_interaction/network_conf.py:26 msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" msgstr "NetworkManager gebruiken (benodigd om internetinstellingen grafisch in te stellen in GNOME en KDE)" -#: lib/user_interaction.py:428 lib/user_interaction.py:431 lib/user_interaction.py:434 lib/user_interaction.py:433 lib/user_interaction/network_conf.py:43 msgid "Select one network interface to configure" msgstr "Kies een in te stellen netwerkkaart" -#: lib/user_interaction.py:441 lib/user_interaction.py:444 lib/user_interaction.py:447 lib/user_interaction.py:446 lib/user_interaction/network_conf.py:70 msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" msgstr "Geef aan welke modus moet worden gebruikt bij ‘{}’ of sla over om de standaardmodus (‘{}’) te gebruiken" -#: lib/user_interaction.py:446 lib/user_interaction.py:449 lib/user_interaction.py:452 lib/user_interaction.py:451 lib/user_interaction/network_conf.py:75 msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " msgstr "Voer het ip-adres en subnet in van ‘{}’ (voorbeeld: 192.168.0.5/24): " -#: lib/user_interaction.py:461 lib/user_interaction.py:464 lib/user_interaction.py:467 lib/user_interaction.py:466 lib/user_interaction/network_conf.py:86 msgid "Enter your gateway (router) IP address or leave blank for none: " msgstr "Voer uw eigen gateway-adres (router-ip-adres) in of laag leeg om over te slaan: " -#: lib/user_interaction.py:476 lib/user_interaction.py:479 lib/user_interaction.py:482 lib/user_interaction.py:481 lib/user_interaction/network_conf.py:102 msgid "Enter your DNS servers (space separated, blank for none): " msgstr "Voer uw eigen dns-servers in (spatiegescheiden - laat leeg om over te slaan): " -#: lib/user_interaction.py:510 lib/user_interaction.py:513 lib/user_interaction.py:516 lib/user_interaction.py:515 lib/user_interaction/disk_conf.py:23 msgid "Select which filesystem your main partition should use" msgstr "Kies het te gebruiken bestandssysteem van de hoofdpartitie" -#: lib/user_interaction.py:556 lib/user_interaction.py:559 lib/user_interaction.py:562 lib/user_interaction.py:561 lib/user_interaction/partitioning_conf.py:64 lib/user_interaction/partitioning_conf.py:63 msgid "Current partition layout" msgstr "Huidige partitie-indeling" -#: lib/user_interaction.py:607 lib/user_interaction.py:614 lib/user_interaction.py:617 lib/user_interaction.py:620 lib/user_interaction.py:619 lib/user_interaction/partitioning_conf.py:145 lib/user_interaction/partitioning_conf.py:146 msgid "" "Select what to do with\n" "{}" @@ -120,24 +94,18 @@ msgstr "" "Geef aan wat er moet worden gedaan met\n" "{}" -#: lib/user_interaction.py:624 lib/user_interaction.py:709 lib/user_interaction.py:631 lib/user_interaction.py:716 lib/user_interaction.py:634 lib/user_interaction.py:719 lib/user_interaction.py:637 lib/user_interaction.py:722 lib/user_interaction.py:636 lib/user_interaction.py:721 lib/user_interaction/partitioning_conf.py:162 lib/user_interaction/partitioning_conf.py:255 lib/user_interaction/partitioning_conf.py:165 lib/user_interaction/partitioning_conf.py:260 msgid "Enter a desired filesystem type for the partition" msgstr "Kies het gewenste bestandssysteem voor de partitie" -#: lib/user_interaction.py:626 lib/user_interaction.py:633 lib/user_interaction.py:636 lib/user_interaction.py:639 lib/user_interaction.py:638 lib/user_interaction/partitioning_conf.py:164 lib/user_interaction/partitioning_conf.py:167 msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "Voer de beginsector in (percentage of bloknummer - standaard: {}): " -#: lib/user_interaction.py:635 lib/user_interaction.py:642 lib/user_interaction.py:645 lib/user_interaction.py:648 lib/user_interaction.py:647 lib/user_interaction/partitioning_conf.py:174 lib/user_interaction/partitioning_conf.py:177 -#, fuzzy msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " -msgstr "Voer de beginsector in (percentage of bloknummer - voorbeeld: {}): “" +msgstr "Voer de eindsector in (percentage of bloknummer - bijvoorbeeld: {}): " -#: lib/user_interaction.py:661 lib/user_interaction.py:668 lib/user_interaction.py:671 lib/user_interaction.py:674 lib/user_interaction.py:673 lib/user_interaction/partitioning_conf.py:203 lib/user_interaction/partitioning_conf.py:208 msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "‘{}’ bevat in behandeling zijnde partities, welke hierdoor worden verwijderd. Weet u zeker dat u wilt doorgaan?" -#: lib/user_interaction.py:674 lib/user_interaction.py:681 lib/user_interaction.py:684 lib/user_interaction.py:687 lib/user_interaction.py:686 lib/user_interaction/partitioning_conf.py:216 lib/user_interaction/partitioning_conf.py:221 msgid "" "{}\n" "\n" @@ -147,7 +115,6 @@ msgstr "" "\n" "Selecteer te verwijderen partities op indexnummer" -#: lib/user_interaction.py:682 lib/user_interaction.py:689 lib/user_interaction.py:692 lib/user_interaction.py:695 lib/user_interaction.py:694 lib/user_interaction/partitioning_conf.py:226 lib/user_interaction/partitioning_conf.py:231 msgid "" "{}\n" "\n" @@ -157,15 +124,12 @@ msgstr "" "\n" "Selecteer aan te koppelen partities op indexnummer" -#: lib/user_interaction.py:686 lib/user_interaction.py:693 lib/user_interaction.py:696 lib/user_interaction.py:699 lib/user_interaction.py:698 lib/user_interaction/partitioning_conf.py:231 lib/user_interaction/partitioning_conf.py:236 msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." msgstr " *Partitie-aankoppelpunten zijn gekoppeld aan de fysieke installatie. Voorbeeld: ‘boot’ wordt ‘/boot’." -#: lib/user_interaction.py:687 lib/user_interaction.py:694 lib/user_interaction.py:697 lib/user_interaction.py:700 lib/user_interaction.py:699 lib/user_interaction/partitioning_conf.py:233 lib/user_interaction/partitioning_conf.py:238 msgid "Select where to mount partition (leave blank to remove mountpoint): " msgstr "Geef aan waar de partitie moet worden aangekoppeld (laat leeg om te verwijderen): " -#: lib/user_interaction.py:698 lib/user_interaction.py:705 lib/user_interaction.py:708 lib/user_interaction.py:711 lib/user_interaction.py:710 lib/user_interaction/partitioning_conf.py:244 lib/user_interaction/partitioning_conf.py:249 msgid "" "{}\n" "\n" @@ -175,7 +139,6 @@ msgstr "" "\n" "Kies welke partitie moet worden gemaskeerd alvorens te formatteren" -#: lib/user_interaction.py:717 lib/user_interaction.py:724 lib/user_interaction.py:727 lib/user_interaction.py:730 lib/user_interaction.py:729 lib/user_interaction/partitioning_conf.py:265 lib/user_interaction/partitioning_conf.py:270 msgid "" "{}\n" "\n" @@ -185,7 +148,6 @@ msgstr "" "\n" "Kies welke partitie moet worden versleuteld" -#: lib/user_interaction.py:725 lib/user_interaction.py:732 lib/user_interaction.py:735 lib/user_interaction.py:738 lib/user_interaction.py:737 lib/user_interaction/partitioning_conf.py:274 lib/user_interaction/partitioning_conf.py:279 msgid "" "{}\n" "\n" @@ -195,7 +157,6 @@ msgstr "" "\n" "Kies welke partitie moet worden aangemerkt als opstartbaar" -#: lib/user_interaction.py:732 lib/user_interaction.py:739 lib/user_interaction.py:742 lib/user_interaction.py:745 lib/user_interaction.py:744 lib/user_interaction/partitioning_conf.py:282 lib/user_interaction/partitioning_conf.py:287 msgid "" "{}\n" "\n" @@ -205,55 +166,42 @@ msgstr "" "\n" "Kies op welke partitie een bestandssysteem moet worden ingesteld" -#: lib/user_interaction.py:739 lib/user_interaction.py:746 lib/user_interaction.py:749 lib/user_interaction.py:752 lib/user_interaction.py:751 lib/user_interaction/partitioning_conf.py:289 lib/user_interaction/partitioning_conf.py:294 msgid "Enter a desired filesystem type for the partition: " msgstr "Voer de naam in van het gewenste bestandssysteem: " -#: lib/user_interaction.py:760 lib/menu/selection_menu.py:141 lib/user_interaction.py:767 lib/menu/selection_menu.py:139 lib/menu/selection_menu.py:143 lib/user_interaction.py:770 lib/user_interaction.py:773 lib/user_interaction.py:772 lib/menu/selection_menu.py:407 lib/menu/selection_menu.py:415 lib/menu/selection_menu.py:17 lib/user_interaction/general_conf.py:105 lib/user_interaction/global_menu.py:43 lib/menu/selection_menu.py:53 lib/menu/selection_menu.py:463 lib/menu/global_menu.py:43 -msgid "Select Archinstall language" -msgstr "Kies een Archinstall-taal" +msgid "Archinstall language" +msgstr "Archinstall-taal" -#: lib/user_interaction.py:765 lib/user_interaction.py:772 lib/user_interaction.py:775 lib/user_interaction.py:778 lib/user_interaction.py:777 lib/user_interaction/disk_conf.py:40 msgid "Wipe all selected drives and use a best-effort default partition layout" msgstr "Alle geselecteerde schijven formatteren en best mogelijke partitie-indeling gebruiken" -#: lib/user_interaction.py:766 lib/user_interaction.py:773 lib/user_interaction.py:776 lib/user_interaction.py:779 lib/user_interaction.py:778 lib/user_interaction/disk_conf.py:41 msgid "Select what to do with each individual drive (followed by partition usage)" msgstr "Geef per schijf aan welke actie moet worden uitgevoerd (gevolgd door partitiegebruik)" -#: lib/user_interaction.py:769 lib/user_interaction.py:770 lib/user_interaction.py:777 lib/user_interaction.py:780 lib/user_interaction.py:783 lib/user_interaction.py:782 lib/user_interaction/disk_conf.py:45 msgid "Select what you wish to do with the selected block devices" msgstr "Geef aan wat er moet worden gedaan met de gekozen blokapparaten" -#: lib/user_interaction.py:822 lib/user_interaction.py:823 lib/user_interaction.py:830 lib/user_interaction.py:833 lib/user_interaction.py:836 lib/user_interaction.py:835 lib/user_interaction/general_conf.py:126 msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" msgstr "Dit is een vooraf opgestelde lijst met profielen, welke het installeren van zaken als werkomgevingen vereenvoudigt" -#: lib/user_interaction.py:846 lib/user_interaction.py:847 lib/user_interaction.py:854 lib/user_interaction.py:857 lib/user_interaction.py:860 lib/user_interaction.py:859 lib/user_interaction/general_conf.py:71 -msgid "Select Keyboard layout" +msgid "Select keyboard layout" msgstr "Kies een toetsenbordindeling" -#: lib/user_interaction.py:861 lib/user_interaction.py:862 lib/user_interaction.py:869 lib/user_interaction.py:872 lib/user_interaction.py:875 lib/user_interaction.py:874 lib/user_interaction/general_conf.py:92 msgid "Select one of the regions to download packages from" msgstr "Geef aan uit welke regio pakketten moeten worden opgehaald" -#: lib/user_interaction.py:883 lib/user_interaction.py:884 lib/user_interaction.py:891 lib/user_interaction.py:894 lib/user_interaction.py:897 lib/user_interaction.py:896 lib/user_interaction/system_conf.py:52 msgid "Select one or more hard drives to use and configure" msgstr "Selecteer één of meer in te stellen harde schijven" -#: lib/user_interaction.py:910 lib/user_interaction.py:911 lib/user_interaction.py:918 lib/user_interaction.py:921 lib/user_interaction.py:924 lib/user_interaction.py:923 lib/user_interaction/system_conf.py:80 msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "Voor AMD-hardware is het aanbevolen om alle opensource- of AMD-/ATI-opties te kiezen." +msgstr "Op AMD-hardware is het aanbevolen om alle opensource- of AMD-/ATI-opties te kiezen." -#: lib/user_interaction.py:912 lib/user_interaction.py:913 lib/user_interaction.py:920 lib/user_interaction.py:923 lib/user_interaction.py:926 lib/user_interaction.py:925 lib/user_interaction/system_conf.py:84 msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "Voor Intel-hardware is het aanbevolen om alle opensource- of Intel-opties te kiezen.\n" +msgstr "Op Intel-hardware is het aanbevolen om alle opensource- of Intel-opties te kiezen.\n" -#: lib/user_interaction.py:914 lib/user_interaction.py:915 lib/user_interaction.py:922 lib/user_interaction.py:925 lib/user_interaction.py:928 lib/user_interaction.py:927 lib/user_interaction/system_conf.py:88 msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Voor Nvidia-hardware is het aanbevolen om het gesloten Nvidia-stuurprogramma te kiezen.\n" +msgstr "Op Nvidia-hardware is het aanbevolen om het gesloten Nvidia-stuurprogramma te kiezen.\n" -#: lib/user_interaction.py:917 lib/user_interaction.py:918 lib/user_interaction.py:925 lib/user_interaction.py:928 lib/user_interaction.py:931 lib/user_interaction.py:930 lib/user_interaction/system_conf.py:92 msgid "" "\n" "\n" @@ -263,397 +211,281 @@ msgstr "" "\n" "Kies een grafisch stuurprogramma of laat leeg om alle opensource-stuurprogramma's te installeren" -#: lib/user_interaction.py:921 lib/user_interaction.py:922 lib/user_interaction.py:929 lib/user_interaction.py:932 lib/user_interaction.py:935 lib/user_interaction.py:934 lib/user_interaction/system_conf.py:96 msgid "All open-source (default)" msgstr "Alle opensource-stuurprogramma's (standaard)" -#: lib/user_interaction.py:940 lib/user_interaction.py:941 lib/user_interaction.py:948 lib/user_interaction.py:951 lib/user_interaction.py:954 lib/user_interaction.py:953 lib/user_interaction/system_conf.py:28 msgid "Choose which kernels to use or leave blank for default \"{}\"" msgstr "Kies de te installeren kernels of laat leeg om ‘{}’ te installeren" -#: lib/user_interaction.py:954 lib/user_interaction.py:955 lib/user_interaction.py:962 lib/user_interaction.py:965 lib/user_interaction.py:968 lib/user_interaction.py:967 lib/user_interaction/locale_conf.py:16 msgid "Choose which locale language to use" msgstr "Kies de te gebruiken taal" -#: lib/user_interaction.py:968 lib/user_interaction.py:969 lib/user_interaction.py:976 lib/user_interaction.py:979 lib/user_interaction.py:982 lib/user_interaction.py:981 lib/user_interaction/locale_conf.py:29 msgid "Choose which locale encoding to use" msgstr "Kies de te gebruiken taalvariant" -#: lib/user_interaction.py:1009 lib/user_interaction.py:1010 lib/user_interaction.py:1017 lib/user_interaction.py:1020 lib/user_interaction.py:1023 lib/user_interaction.py:1022 lib/user_interaction/backwards_compatible_conf.py:49 msgid "Select one of the values shown below: " msgstr "Kies één van onderstaande waarden: " -#: lib/user_interaction.py:1050 lib/user_interaction.py:1051 lib/user_interaction.py:1058 lib/user_interaction.py:1061 lib/user_interaction.py:1064 lib/user_interaction.py:1063 lib/user_interaction/backwards_compatible_conf.py:88 msgid "Select one or more of the options below: " msgstr "Kies één van onderstaande opties: " -#: lib/disk/filesystem.py:86 lib/disk/filesystem.py:87 msgid "Adding partition...." -msgstr "" +msgstr "Bezig met toevoegen van partitie…" -#: lib/disk/filesystem.py:139 lib/disk/filesystem.py:141 lib/disk/filesystem.py:142 msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "" +msgstr "Voer een geldig bestandssysteemtype in om door te gaan. Bekijk voor meer informatie `man parted`." -#: lib/profiles.py:89 lib/profiles.py:90 msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "" +msgstr "Foutmelding: het opsommen van de profielen op {} leidde tot" -#: lib/profiles.py:92 lib/profiles.py:93 msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "" +msgstr "Foutmelding: ‘{}’ kan niet gedecodeerd worden als json:" -#: lib/menu/selection_menu.py:146 lib/menu/selection_menu.py:144 lib/menu/selection_menu.py:148 lib/menu/selection_menu.py:412 lib/menu/selection_menu.py:420 lib/user_interaction/global_menu.py:48 lib/menu/selection_menu.py:468 lib/menu/global_menu.py:48 -msgid "Select keyboard layout" -msgstr "Kies een toetsenbordindeling" +msgid "Keyboard layout" +msgstr "Toetsenbordindeling" -#: lib/menu/selection_menu.py:149 lib/menu/selection_menu.py:147 lib/menu/selection_menu.py:151 lib/menu/selection_menu.py:415 lib/menu/selection_menu.py:423 lib/user_interaction/global_menu.py:51 lib/menu/selection_menu.py:471 lib/menu/global_menu.py:51 -msgid "Select mirror region" -msgstr "Kies een spiegelserverregio" +msgid "Mirror region" +msgstr "Spiegelserverregio" -#: lib/menu/selection_menu.py:154 lib/menu/selection_menu.py:152 lib/menu/selection_menu.py:156 lib/menu/selection_menu.py:420 lib/menu/selection_menu.py:428 lib/user_interaction/global_menu.py:56 lib/menu/selection_menu.py:476 lib/menu/global_menu.py:56 -msgid "Select locale language" -msgstr "Kies een taal" +msgid "Locale language" +msgstr "Taal" -#: lib/menu/selection_menu.py:156 lib/menu/selection_menu.py:154 lib/menu/selection_menu.py:158 lib/menu/selection_menu.py:422 lib/menu/selection_menu.py:430 lib/user_interaction/global_menu.py:58 lib/menu/selection_menu.py:478 lib/menu/global_menu.py:58 -msgid "Select locale encoding" -msgstr "Kies een taalvariant" +msgid "Locale encoding" +msgstr "Taalvariant" -#: lib/menu/selection_menu.py:159 lib/menu/selection_menu.py:157 lib/menu/selection_menu.py:161 lib/menu/selection_menu.py:425 lib/menu/selection_menu.py:433 lib/user_interaction/global_menu.py:61 lib/menu/selection_menu.py:481 lib/menu/global_menu.py:61 -msgid "Select harddrives" -msgstr "Selecteer de harde schijven" +msgid "Drive(s)" +msgstr "Harde schijven" -#: lib/menu/selection_menu.py:163 lib/menu/selection_menu.py:161 lib/menu/selection_menu.py:165 lib/menu/selection_menu.py:429 lib/menu/selection_menu.py:437 lib/user_interaction/global_menu.py:65 lib/menu/selection_menu.py:485 lib/menu/global_menu.py:65 msgid "Select disk layout" msgstr "Kies een schijfindeling" -#: lib/menu/selection_menu.py:171 lib/menu/selection_menu.py:169 lib/menu/selection_menu.py:173 lib/menu/selection_menu.py:437 lib/menu/selection_menu.py:445 lib/user_interaction/global_menu.py:73 lib/menu/selection_menu.py:493 lib/menu/global_menu.py:73 msgid "Set encryption password" msgstr "Versleutelwachtwoord instellen" -#: lib/menu/selection_menu.py:177 lib/menu/selection_menu.py:175 lib/menu/selection_menu.py:179 lib/menu/selection_menu.py:443 lib/menu/selection_menu.py:451 lib/user_interaction/global_menu.py:79 lib/menu/selection_menu.py:499 lib/menu/global_menu.py:79 -msgid "Use swap" -msgstr "Wisselgeheugen gebruiken" +msgid "Swap" +msgstr "Wisselgeheugen" -#: lib/menu/selection_menu.py:182 lib/menu/selection_menu.py:180 lib/menu/selection_menu.py:184 lib/menu/selection_menu.py:448 lib/menu/selection_menu.py:456 lib/user_interaction/global_menu.py:84 lib/menu/selection_menu.py:504 lib/menu/global_menu.py:84 -msgid "Select bootloader" -msgstr "Kies een opstartlader" +msgid "Bootloader" +msgstr "Opstartlader" -#: lib/menu/selection_menu.py:188 lib/menu/selection_menu.py:186 lib/menu/selection_menu.py:190 lib/menu/selection_menu.py:454 lib/menu/selection_menu.py:462 lib/user_interaction/global_menu.py:95 lib/menu/selection_menu.py:515 lib/menu/global_menu.py:95 -msgid "Set root password" -msgstr "Rootwachtwoord instellen" +msgid "root password" +msgstr "Rootwachtwoord" -#: lib/menu/selection_menu.py:193 lib/menu/selection_menu.py:191 lib/menu/selection_menu.py:195 lib/menu/selection_menu.py:459 lib/menu/selection_menu.py:467 lib/user_interaction/global_menu.py:100 lib/menu/selection_menu.py:520 lib/menu/global_menu.py:100 -msgid "Specify superuser account" -msgstr "Geef aan welk account superuserrechten dient te hebben" +msgid "Superuser account" +msgstr "Superuserrechten" -#: lib/menu/selection_menu.py:199 lib/menu/selection_menu.py:197 lib/menu/selection_menu.py:201 lib/menu/selection_menu.py:465 lib/menu/selection_menu.py:473 lib/user_interaction/global_menu.py:107 lib/menu/selection_menu.py:528 lib/menu/global_menu.py:107 -msgid "Specify user account" -msgstr "Kies een gebruikersaccount" +msgid "User account" +msgstr "Gebruikersaccount" -#: lib/menu/selection_menu.py:205 lib/menu/selection_menu.py:203 lib/menu/selection_menu.py:207 lib/menu/selection_menu.py:471 lib/menu/selection_menu.py:479 lib/user_interaction/global_menu.py:114 lib/menu/selection_menu.py:535 lib/menu/global_menu.py:114 -msgid "Specify profile" -msgstr "Kies een profiel" +msgid "Profile" +msgstr "Profiel" -#: lib/menu/selection_menu.py:210 lib/menu/selection_menu.py:208 lib/menu/selection_menu.py:212 lib/menu/selection_menu.py:476 lib/menu/selection_menu.py:484 lib/user_interaction/global_menu.py:119 lib/menu/selection_menu.py:540 lib/menu/global_menu.py:119 -msgid "Select audio" -msgstr "Kies audio" +msgid "Audio" +msgstr "Audio" -#: lib/menu/selection_menu.py:214 lib/menu/selection_menu.py:212 lib/menu/selection_menu.py:216 lib/menu/selection_menu.py:480 lib/menu/selection_menu.py:488 lib/user_interaction/global_menu.py:123 lib/menu/selection_menu.py:544 lib/menu/global_menu.py:123 -msgid "Select kernels" -msgstr "Selecteer kernels" +msgid "Kernels" +msgstr "Kernels" -#: lib/menu/selection_menu.py:219 lib/menu/selection_menu.py:217 lib/menu/selection_menu.py:221 lib/menu/selection_menu.py:485 lib/menu/selection_menu.py:493 lib/user_interaction/global_menu.py:128 lib/menu/selection_menu.py:549 lib/menu/global_menu.py:128 -msgid "Additional packages to install" -msgstr "Aanvullende te installeren pakketten" +msgid "Additional packages" +msgstr "Aanvullende pakketten" -#: lib/menu/selection_menu.py:224 lib/menu/selection_menu.py:222 lib/menu/selection_menu.py:226 lib/menu/selection_menu.py:490 lib/menu/selection_menu.py:498 lib/user_interaction/global_menu.py:139 lib/menu/selection_menu.py:560 lib/menu/global_menu.py:139 -msgid "Configure network" +msgid "Network configuration" msgstr "Netwerk instellen" -#: lib/menu/selection_menu.py:232 lib/menu/selection_menu.py:230 lib/menu/selection_menu.py:234 lib/menu/selection_menu.py:498 lib/menu/selection_menu.py:506 lib/user_interaction/global_menu.py:150 lib/menu/selection_menu.py:571 lib/menu/global_menu.py:150 -msgid "Set automatic time sync (NTP)" -msgstr "Automatische tijdsynchronisatie (NTP) gebruiken" +msgid "Automatic time sync (NTP)" +msgstr "Automatische tijdsynchronisatie (NTP)" -#: lib/menu/selection_menu.py:310 lib/menu/selection_menu.py:308 lib/menu/selection_menu.py:315 lib/menu/selection_menu.py:527 lib/menu/selection_menu.py:535 lib/user_interaction/global_menu.py:187 lib/menu/selection_menu.py:608 lib/menu/global_menu.py:187 msgid "Install ({} config(s) missing)" -msgstr "" +msgstr "Installeren ({} confirguratie(s) ontbreekt/ontbreken)" -#: lib/menu/selection_menu.py:373 lib/menu/selection_menu.py:371 lib/menu/selection_menu.py:378 lib/menu/selection_menu.py:591 lib/menu/selection_menu.py:599 lib/user_interaction/global_menu.py:249 lib/menu/selection_menu.py:669 lib/menu/global_menu.py:249 msgid "" "You decided to skip harddrive selection\n" "and will use whatever drive-setup is mounted at {} (experimental)\n" "WARNING: Archinstall won't check the suitability of this setup\n" "Do you wish to continue?" msgstr "" +"U heeft de schijfkeuze overgeslagen.\n" +"Hierdoor zal de op {} aangekoppelde schijf worden gebruikt (experimenteel).\n" +"WAARSCHUWING: Archinstall controleert niet of deze schijf geschikt is.\n" +"Weet u zeker dat u wilt doorgaan?" -#: lib/disk/filesystem.py:97 lib/disk/filesystem.py:98 msgid "Re-using partition instance: {}" -msgstr "" +msgstr "De partitie op {} wordt hergebruikt" -#: lib/user_interaction.py:590 lib/user_interaction.py:593 lib/user_interaction.py:596 lib/user_interaction.py:595 lib/user_interaction/partitioning_conf.py:119 lib/user_interaction/partitioning_conf.py:120 -#, fuzzy msgid "Create a new partition" -msgstr "Huidige partitie-indeling" +msgstr "Partitie aanmaken" -#: lib/user_interaction.py:592 lib/user_interaction.py:595 lib/user_interaction.py:598 lib/user_interaction.py:597 lib/user_interaction/partitioning_conf.py:121 lib/user_interaction/partitioning_conf.py:122 msgid "Delete a partition" -msgstr "" +msgstr "Partitie verwijderen" -#: lib/user_interaction.py:593 lib/user_interaction.py:596 lib/user_interaction.py:599 lib/user_interaction.py:598 lib/user_interaction/partitioning_conf.py:122 lib/user_interaction/partitioning_conf.py:123 msgid "Clear/Delete all partitions" -msgstr "" +msgstr "Alle partities verwijderen" -#: lib/user_interaction.py:594 lib/user_interaction.py:597 lib/user_interaction.py:600 lib/user_interaction.py:599 lib/user_interaction/partitioning_conf.py:123 lib/user_interaction/partitioning_conf.py:124 msgid "Assign mount-point for a partition" -msgstr "" +msgstr "Aankoppelpunt toekennen aan partitie" -#: lib/user_interaction.py:595 lib/user_interaction.py:598 lib/user_interaction.py:601 lib/user_interaction.py:600 lib/user_interaction/partitioning_conf.py:124 lib/user_interaction/partitioning_conf.py:125 msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "" +msgstr "Partitie (de)markeren voor formatteren (alle gegevens worden gewist)" -#: lib/user_interaction.py:596 lib/user_interaction.py:599 lib/user_interaction.py:602 lib/user_interaction.py:601 lib/user_interaction/partitioning_conf.py:125 lib/user_interaction/partitioning_conf.py:126 msgid "Mark/Unmark a partition as encrypted" -msgstr "" +msgstr "Partitie (de)markeren voor versleuteling" -#: lib/user_interaction.py:597 lib/user_interaction.py:600 lib/user_interaction.py:603 lib/user_interaction.py:602 lib/user_interaction/partitioning_conf.py:126 lib/user_interaction/partitioning_conf.py:127 msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "" +msgstr "Partitie (de)markeren als opstartbaar (automatisch voor /boot)" -#: lib/user_interaction.py:598 lib/user_interaction.py:601 lib/user_interaction.py:604 lib/user_interaction.py:603 lib/user_interaction/partitioning_conf.py:127 lib/user_interaction/partitioning_conf.py:128 -#, fuzzy msgid "Set desired filesystem for a partition" -msgstr "Kies het gewenste bestandssysteem voor de partitie" +msgstr "Gewenste bestandssysteem van partitie instellen" -#: lib/menu/selection_menu.py:239 lib/menu/selection_menu.py:237 lib/menu/selection_menu.py:241 lib/menu/selection_menu.py:270 lib/menu/selection_menu.py:507 lib/menu/selection_menu.py:515 lib/user_interaction/global_menu.py:167 lib/menu/selection_menu.py:588 lib/menu/global_menu.py:167 msgid "Abort" -msgstr "" +msgstr "Afbreken" -#: lib/menu/selection_menu.py:183 lib/menu/selection_menu.py:187 lib/menu/selection_menu.py:451 lib/menu/selection_menu.py:459 lib/user_interaction/global_menu.py:89 lib/menu/selection_menu.py:509 lib/menu/global_menu.py:89 -#, fuzzy -msgid "Specify hostname" -msgstr "Kies een profiel" +msgid "Hostname" +msgstr "Hostnaam" -#: lib/menu/selection_menu.py:228 lib/menu/selection_menu.py:492 lib/menu/selection_menu.py:500 lib/user_interaction/global_menu.py:141 lib/menu/selection_menu.py:562 lib/menu/global_menu.py:141 msgid "Not configured, unavailable unless setup manually" -msgstr "" +msgstr "Niet ingesteld en dus niet beschikbaar, tenzij handmatig ingesteld" -#: lib/menu/selection_menu.py:231 lib/menu/selection_menu.py:495 lib/menu/selection_menu.py:503 lib/user_interaction/global_menu.py:145 lib/menu/selection_menu.py:566 lib/menu/global_menu.py:145 -#, fuzzy -msgid "Select timezone" -msgstr "Kies een tijdzone" +msgid "Timezone" +msgstr "Tijdzone" -#: lib/menu/selection_menu.py:266 lib/menu/selection_menu.py:276 lib/menu/selection_menu.py:312 msgid "Set/Modify the below options" -msgstr "" +msgstr "Onderstaande opties instellen/aanpassen" -#: lib/menu/selection_menu.py:272 msgid "Install" -msgstr "" +msgstr "Installeren" -#: lib/menu/menu.py:68 lib/menu/menu.py:75 lib/menu/menu.py:119 msgid "" "Use ESC to skip\n" "\n" msgstr "" +"Druk op Esc om over te slaan\n" +"\n" -#: lib/user_interaction.py:591 lib/user_interaction.py:594 lib/user_interaction.py:597 lib/user_interaction.py:596 lib/user_interaction/partitioning_conf.py:120 lib/user_interaction/partitioning_conf.py:121 -#, fuzzy msgid "Suggest partition layout" -msgstr "Huidige partitie-indeling" +msgstr "Partitie-indeling voorstellen" -#: lib/user_interaction.py:101 lib/user_interaction/utils.py:43 -#, fuzzy msgid "Enter a password: " -msgstr "Rootwachtwoord instellen" +msgstr "Voer een wachtwoord in: " -#: lib/disk/filesystem.py:117 lib/disk/filesystem.py:118 -#, fuzzy msgid "Enter a encryption password for {}" -msgstr "Versleutelwachtwoord instellen" +msgstr "Voer een versleutelwachtwoord in voor {}" -#: lib/menu/selection_menu.py:174 lib/menu/selection_menu.py:567 lib/menu/selection_menu.py:575 lib/user_interaction/global_menu.py:225 lib/menu/selection_menu.py:646 lib/menu/global_menu.py:225 -#, fuzzy msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "Andere toe te voegen gebruikers (laat leeg om niemand toe te voegen): " +msgstr "Voer een versleutelwachtwoord in voor (laat leeg om niet te versleutelen): " -#: lib/menu/selection_menu.py:407 lib/menu/selection_menu.py:617 lib/menu/selection_menu.py:625 -#, fuzzy msgid "Create a required super-user with sudo privileges: " -msgstr "Gebruikersnaam van administrator met sudo-rechten: " +msgstr "Beheerder met sudo-rechten toevoegen (vereist): " -#: lib/menu/selection_menu.py:347 lib/menu/selection_menu.py:554 lib/menu/selection_menu.py:562 lib/user_interaction/global_menu.py:220 lib/menu/selection_menu.py:641 lib/menu/global_menu.py:220 -#, fuzzy msgid "Enter root password (leave blank to disable root): " -msgstr "Geef aan waar de partitie moet worden aangekoppeld (laat leeg om te verwijderen): " +msgstr "Voer een beheerderswachtwoord in (laat leeg om uit te schakelen): " -#: lib/user_interaction.py:307 lib/user_interaction.py:324 lib/user_interaction/manage_users_conf.py:86 lib/user_interaction/manage_users_conf.py:121 -#, fuzzy msgid "Password for user \"{}\": " -msgstr "Wachtwoord van ‘{}’" +msgstr "Wachtwoord van ‘{}’: " -#: lib/user_interaction.py:405 lib/user_interaction.py:408 lib/user_interaction.py:407 lib/user_interaction/general_conf.py:152 msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "" +msgstr "Bezig met verifiëren van aanvullende pakketten… (dit kan even duren)" -#: lib/user_interaction.py:281 lib/user_interaction/general_conf.py:22 -#, fuzzy msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "Wilt u automatische tijdsynchronisatie (NTP) met de standaard tijdservers gebruiken?" +msgstr "Wilt u automatische tijdsynchronisatie (NTP) met de standaard tijdservers gebruiken?\n" -#: lib/user_interaction.py:282 lib/user_interaction/general_conf.py:23 -#, fuzzy msgid "" "Hardware time and other post-configuration steps might be required in order for NTP to work.\n" "For more information, please check the Arch wiki" -msgstr "De hardwarematige tijd en andere gelijkaardige instelstappen kunnen vereist zijn om NTP te gebruiken. Lees voor meer informatie de Arch-wiki." +msgstr "" +"De hardwarematige tijd en andere gelijkaardige instelstappen kunnen vereist zijn om NTP te gebruiken.\n" +"Lees voor meer informatie de Arch-wiki." -#: lib/menu/selection_menu.py:411 lib/menu/selection_menu.py:621 lib/menu/selection_menu.py:629 msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "" +msgstr "Voer een gebruikersnaam in om een tweede account toe te voegen (laat leeg om over te slaan): " -#: lib/menu/menu.py:116 msgid "Use ESC to skip\n" -msgstr "" +msgstr "Druk op Esc om over te slaan\n" -#: lib/menu/list_manager.py:117 msgid "" "\n" " Choose an object from the list, and select one of the available actions for it to execute" msgstr "" +"\n" +" Kies een item van de lijst en kies vervolgens een van de beschikbare acties om uit te voeren" -#: lib/menu/list_manager.py:130 lib/user_interaction/subvolume_config.py:90 msgid "Cancel" -msgstr "" +msgstr "Annuleren" -#: lib/menu/list_manager.py:131 -#, fuzzy msgid "Confirm and exit" -msgstr "Netwerk instellen" +msgstr "Bevestigen en afsluiten" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:228 lib/menu/list_manager.py:251 lib/menu/list_manager.py:276 lib/user_interaction/subvolume_config.py:12 lib/user_interaction/subvolume_config.py:44 lib/user_interaction/subvolume_config.py:78 lib/user_interaction/subvolume_config.py:82 lib/user_interaction/subvolume_config.py:85 msgid "Add" -msgstr "" +msgstr "Toevoegen" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:231 lib/menu/list_manager.py:255 lib/user_interaction/subvolume_config.py:78 msgid "Copy" -msgstr "" +msgstr "Kopiëren" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:237 lib/menu/list_manager.py:261 lib/user_interaction/subvolume_config.py:82 lib/user_interaction/subvolume_config.py:85 msgid "Edit" -msgstr "" +msgstr "Bewerken" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:242 lib/menu/list_manager.py:264 lib/user_interaction/subvolume_config.py:40 msgid "Delete" -msgstr "" +msgstr "Verwijderen" -#: lib/menu/list_manager.py:185 -#, fuzzy msgid "Select an action for < {} >" -msgstr "" -"Geef aan wat er moet worden gedaan met\n" -"{}" +msgstr "Kies een actie voor < {} >" -#: lib/menu/list_manager.py:229 -msgid "Add :" -msgstr "" - -#: lib/menu/list_manager.py:233 -msgid "Copy to :" -msgstr "" - -#: lib/menu/list_manager.py:240 -msgid "Edite :" -msgstr "" - -#: lib/menu/list_manager.py:252 -msgid "Key :" -msgstr "" - -#: lib/menu/list_manager.py:253 -msgid "Value :" -msgstr "" - -#: lib/menu/list_manager.py:257 msgid "Copy to new key:" -msgstr "" +msgstr "Kopiëren naar nieuwe sleutel:" -#: lib/menu/list_manager.py:262 -#, python-brace-format -msgid "Edit {origkey} :" -msgstr "" - -#: lib/models/network_configuration.py:53 lib/models/network_configuration.py:74 msgid "Unknown nic type: {}. Possible values are {}" -msgstr "" +msgstr "Onbekend nic-type: {}. Mogelijke waarden zijn {}" -#: lib/configuration.py:75 msgid "" "\n" "This is your chosen configuration:" msgstr "" +"\n" +"Dit is de door u gekozen configuratie:" -#: lib/pacman.py:18 msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "" +msgstr "Pacman is al actief. Er wordt maximaal 10 minuten gewacht alvorens het opnieuw te proberen." -#: lib/pacman.py:25 msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "" +msgstr "De eerdere Pacman-vergrendeling is niet opgeheven. Sluit actieve Pacman-sessies af alvorens deze installatiewizard te gebruiken." -#: lib/user_interaction/general_conf.py:174 msgid "Choose which optional additional repositories to enable" -msgstr "" - -#: lib/user_interaction/manage_users_conf.py:32 -msgid "Add an user" -msgstr "" +msgstr "Geef aan welke aanvullende pakketbronnen dienen te worden gebruikt (optioneel)" -#: lib/user_interaction/manage_users_conf.py:33 #, fuzzy +msgid "Add a user" +msgstr "Gebruiker toevoegen" + msgid "Change password" -msgstr "Rootwachtwoord instellen" +msgstr "Wachtwoord wijzigen" -#: lib/user_interaction/manage_users_conf.py:34 msgid "Promote/Demote user" -msgstr "" +msgstr "Gebruiker op-/afwaarderen" -#: lib/user_interaction/manage_users_conf.py:35 msgid "Delete User" -msgstr "" +msgstr "Gebruiker verwijderen" -#: lib/user_interaction/manage_users_conf.py:99 msgid "" "\n" "Define a new user\n" msgstr "" +"\n" +"Stel een nieuwe gebruiker in\n" -#: lib/user_interaction/manage_users_conf.py:100 msgid "User Name : " -msgstr "" +msgstr "Gebruikersnaam: " -#: lib/user_interaction/manage_users_conf.py:115 -#, fuzzy msgid "Should {} be a superuser (sudoer)?" -msgstr "Moet deze gebruiker administrator (sudoer) worden?" +msgstr "Moet {} gebruiker een beheerder (sudoer) worden?" -#: lib/user_interaction/manage_users_conf.py:161 -#, fuzzy msgid "Define users with sudo privilege: " -msgstr "Gebruikersnaam van administrator met sudo-rechten: " +msgstr "Gebruikersnamen van gebruikers met sudo-rechten: " -#: lib/user_interaction/network_conf.py:24 -#, fuzzy msgid "No network configuration" -msgstr "ISO-netwerkinstellingen overzetten naar fysieke installatie" +msgstr "Geen netwerkconfiguratie" -#: lib/user_interaction/partitioning_conf.py:128 lib/user_interaction/partitioning_conf.py:129 -#, fuzzy msgid "Set desired subvolumes on a btrfs partition" -msgstr "Kies het gewenste bestandssysteem voor de partitie" +msgstr "Gewenste subvolumes op btrfs-partitie instellen" -#: lib/user_interaction/partitioning_conf.py:296 lib/user_interaction/partitioning_conf.py:303 -#, fuzzy msgid "" "{}\n" "\n" @@ -661,134 +493,285 @@ msgid "" msgstr "" "{}\n" "\n" -"Kies op welke partitie een bestandssysteem moet worden ingesteld" +"Kies op welke partitie de subvolumes dienen te worden ingesteld" -#: lib/user_interaction/partitioning_conf.py:305 lib/user_interaction/partitioning_conf.py:312 msgid "Manage btrfs subvolumes for current partition" -msgstr "" +msgstr "Btrfs-subvolumes van huidige partitie beheren" -#: lib/user_interaction/save_conf.py:24 lib/user_interaction/save_conf.py:29 msgid "No configuration" -msgstr "" +msgstr "Geen configuratie" -#: lib/user_interaction/save_conf.py:42 msgid "Save user configuration" -msgstr "" +msgstr "Gebruikersconfiguratie vastleggen" -#: lib/user_interaction/save_conf.py:43 msgid "Save user credentials" -msgstr "" +msgstr "Aanmeldgegevens vastleggen" -#: lib/user_interaction/save_conf.py:44 -#, fuzzy msgid "Save disk layout" -msgstr "Kies een schijfindeling" +msgstr "Schijfindeling vastleggen" -#: lib/user_interaction/save_conf.py:45 msgid "Save all" -msgstr "" +msgstr "Alles opslaan" -#: lib/user_interaction/save_conf.py:48 -#, fuzzy msgid "Choose which configuration to save" -msgstr "Kies de te gebruiken taal" +msgstr "Geef aan welke configuratie er moet worden vastgelegd" -#: lib/user_interaction/save_conf.py:59 msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "" +msgstr "Voer de naam in van de map waarin de configuratie(s) moet(en) worden vastgelegd: " -#: lib/user_interaction/save_conf.py:63 msgid "Not a valid directory: {}" -msgstr "" +msgstr "Ongeldige map: {}" -#: lib/user_interaction/utils.py:32 msgid "The password you are using seems to be weak," -msgstr "" +msgstr "Het gekozen wachtwoord is zwak." -#: lib/user_interaction/utils.py:33 -#, fuzzy msgid "are you sure you want to use it?" -msgstr "Weet u zeker dat u wilt afbreken?" +msgstr "Weet u zeker dat u het wilt gebruiken?" -#: lib/user_interaction/global_menu.py:134 lib/menu/selection_menu.py:555 lib/menu/global_menu.py:134 -#, fuzzy -msgid "Additional repositories to enable" -msgstr "Aanvullende te installeren pakketten" +msgid "Optional repositories" +msgstr "Aanvullende pakketbronnen" -#: lib/user_interaction/global_menu.py:155 lib/menu/selection_menu.py:576 lib/menu/global_menu.py:155 msgid "Save configuration" -msgstr "" +msgstr "Configuratie vastleggen" -#: lib/user_interaction/global_menu.py:192 lib/menu/selection_menu.py:613 lib/menu/global_menu.py:192 msgid "Missing configurations:\n" -msgstr "" +msgstr "Ontbrekende configuraties:\n" -#: lib/user_interaction/global_menu.py:210 lib/menu/selection_menu.py:631 lib/menu/global_menu.py:210 msgid "Either root-password or at least 1 superuser must be specified" -msgstr "" +msgstr "Stel een rootwachtwoord of minimaal één beheerder in" -#: lib/user_interaction/global_menu.py:275 lib/menu/selection_menu.py:695 lib/menu/global_menu.py:275 -#, fuzzy msgid "Manage superuser accounts: " -msgstr "Geef aan welk account superuserrechten dient te hebben" +msgstr "Beheerdersaccounts beheren: " -#: lib/user_interaction/global_menu.py:279 lib/menu/selection_menu.py:699 lib/menu/global_menu.py:279 -#, fuzzy msgid "Manage ordinary user accounts: " -msgstr "Kies een gebruikersaccount" +msgstr "Beheer reguliere gebruikersaccounts: " -#: lib/user_interaction/subvolume_config.py:17 msgid " Subvolume :{:16}" -msgstr "" +msgstr " Subvolume :{:16}" -#: lib/user_interaction/subvolume_config.py:19 lib/user_interaction/subvolume_config.py:22 msgid " mounted at {:16}" -msgstr "" +msgstr " aangekoppeld op {:16}" -#: lib/user_interaction/subvolume_config.py:26 msgid " with option {}" -msgstr "" +msgstr " met optie {}" -#: lib/user_interaction/subvolume_config.py:46 msgid "" "\n" " Fill the desired values for a new subvolume \n" msgstr "" +"\n" +" Voer de gewenste waarden van het nieuwe subvolume in\n" -#: lib/user_interaction/subvolume_config.py:77 msgid "Subvolume name " -msgstr "" +msgstr "Subvolumenaam " -#: lib/user_interaction/subvolume_config.py:81 msgid "Subvolume mountpoint" -msgstr "" +msgstr "Subvolume-aankoppelpunt" -#: lib/user_interaction/subvolume_config.py:84 msgid "Subvolume options" -msgstr "" +msgstr "Subvolume-opties" -#: lib/user_interaction/subvolume_config.py:87 msgid "Save" -msgstr "" +msgstr "Opslaan" -#: lib/user_interaction/subvolume_config.py:121 msgid "Subvolume name :" -msgstr "" +msgstr "Subvolumenaam:" -#: lib/user_interaction/subvolume_config.py:124 -#, fuzzy msgid "Select a mount point :" -msgstr "Kies een tijdzone" +msgstr "Kies een aankoppelpunt:" -#: lib/user_interaction/subvolume_config.py:128 msgid "Select the desired subvolume options " -msgstr "" +msgstr "Stel gewenste subvolume-opties in " -#: lib/user_interaction/manage_users_conf.py:161 -#, fuzzy msgid "Define users with sudo privilege, by username: " -msgstr "Gebruikersnaam van administrator met sudo-rechten: " +msgstr "Gebruikersnamen van gebruikers met sudo-rechten: " -#: lib/installer.py:152 msgid "[!] A log file has been created here: {}" +msgstr "[!] Er is een logboek aangemaakt: {} {}" + +#, fuzzy +msgid "Would you like to use BTRFS subvolumes with a default structure?" +msgstr "Wilt u GRUB gebruiken als opstartlader in plaats van systemd-boot?" + +#, fuzzy +msgid "Would you like to use BTRFS compression?" +msgstr "Wilt u wisselgeheugen i.c.m. zram gebruiken?" + +#, fuzzy +msgid "Would you like to create a separate partition for /home?" +msgstr "Wilt u wisselgeheugen i.c.m. zram gebruiken?" + +msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" +msgstr "" + +msgid "Minimum capacity for /home partition: {}GB\n" +msgstr "" + +msgid "Minimum capacity for Arch Linux partition: {}GB" +msgstr "" + +msgid "Continue" +msgstr "" + +msgid "yes" +msgstr "" + +msgid "no" +msgstr "" + +msgid "set: {}" +msgstr "" + +msgid "Manual configuration setting must be a list" +msgstr "" + +#, fuzzy +msgid "No iface specified for manual configuration" +msgstr "Gebruikersconfiguratie vastleggen" + +msgid "Manual nic configuration with no auto DHCP requires an IP address" +msgstr "" + +msgid "Add interface" +msgstr "" + +msgid "Edit interface" +msgstr "" + +#, fuzzy +msgid "Delete interface" +msgstr "Gebruiker verwijderen" + +#, fuzzy +msgid "Select interface to add" +msgstr "Kies een in te stellen netwerkkaart" + +#, fuzzy +msgid "Manual configuration" +msgstr "Configuratie vastleggen" + +#, fuzzy +msgid "Mark/Unmark a partition as compressed (btrfs only)" +msgstr "Partitie (de)markeren voor versleuteling" + +#, fuzzy +msgid "The password you are using seems to be weak, are you sure you want to use it?" +msgstr "Het gekozen wachtwoord is zwak." + +msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" +msgstr "" + +msgid "Select your desired desktop environment" +msgstr "" + +msgid "A very basic installation that allows you to customize Arch Linux as you see fit." +msgstr "" + +msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" +msgstr "" + +msgid "Choose which servers to install, if none then a minimal installation wil be done" +msgstr "" + +msgid "Installs a minimal system as well as xorg and graphics drivers." msgstr "" + +msgid "Press Enter to continue." +msgstr "" + +msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" +msgstr "" + +#, fuzzy +msgid "Are you sure you want to reset this setting?" +msgstr "Weet u zeker dat u het wilt gebruiken?" + +#, fuzzy +msgid "Select one or more hard drives to use and configure\n" +msgstr "Selecteer één of meer in te stellen harde schijven" + +msgid "Any modifications to the existing setting will reset the disk layout!" +msgstr "" + +msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" +msgstr "" + +#, fuzzy +msgid "Save and exit" +msgstr "Bevestigen en afsluiten" + +#, fuzzy +msgid "" +"{}\n" +"contains queued partitions, this will remove those, are you sure?" +msgstr "‘{}’ bevat in behandeling zijnde partities, welke hierdoor worden verwijderd. Weet u zeker dat u wilt doorgaan?" + +#, fuzzy +msgid "No audio server" +msgstr "Kies een audioserver" + +msgid "(default)" +msgstr "" + +#, fuzzy +msgid "Use ESC to skip" +msgstr "Druk op Esc om over te slaan\n" + +msgid "" +"Use CTRL+C to reset current selection\n" +"\n" +msgstr "" + +#, fuzzy +msgid "Copy to: " +msgstr "Kopiëren naar:" + +#, fuzzy +msgid "Edit: " +msgstr "Bewerken" + +msgid "Key: " +msgstr "" + +#, fuzzy +msgid "Edit {}: " +msgstr "Bewerken:" + +msgid "Add: " +msgstr "" + +#, fuzzy +msgid "Value: " +msgstr "Waarde:" + +msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" +msgstr "" + +msgid "Select one of the disks or skip and use /mnt as default" +msgstr "" + +#, fuzzy +msgid "Select which partitions to mark for formatting:" +msgstr "" +"{}\n" +"\n" +"Kies welke partitie moet worden gemaskeerd alvorens te formatteren" + +#~ msgid "Add :" +#~ msgstr "Toevoegen:" + +#~ msgid "Value :" +#~ msgstr "Waarde:" + +#, python-brace-format +#~ msgid "Edit {origkey} :" +#~ msgstr "{origkey} bewerken:" + +#~ msgid "Copy to :" +#~ msgstr "Kopiëren naar:" + +#~ msgid "Edite :" +#~ msgstr "Bewerken:" + +#~ msgid "Key :" +#~ msgstr "Sleutel:" diff --git a/archinstall/locales/pl/LC_MESSAGES/base.mo b/archinstall/locales/pl/LC_MESSAGES/base.mo Binary files differnew file mode 100644 index 00000000..dc26f1d7 --- /dev/null +++ b/archinstall/locales/pl/LC_MESSAGES/base.mo diff --git a/archinstall/locales/pl/LC_MESSAGES/base.po b/archinstall/locales/pl/LC_MESSAGES/base.po new file mode 100644 index 00000000..d92637ad --- /dev/null +++ b/archinstall/locales/pl/LC_MESSAGES/base.po @@ -0,0 +1,768 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Aleksandr Melman <Alexmelman88@gmail.com>\n" +"Language-Team: \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.0.1\n" + +msgid "[!] A log file has been created here: {} {}" +msgstr "Plik dziennika został stworzony tutaj: {} {}" + +msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" +msgstr " Proszę zgłosić ten błąd (i plik) pod adresem https://github.com/archlinux/archinstall/issues" + +msgid "Do you really want to abort?" +msgstr "Czy napewno chcesz przerwać proces?" + +msgid "And one more time for verification: " +msgstr "I jeszcze raz w celu weryfikacji: " + +msgid "Would you like to use swap on zram?" +msgstr "Czy chcesz używać swap w zramie?" + +msgid "Desired hostname for the installation: " +msgstr "Nazwa hosta użyta do instalacji: " + +msgid "Username for required superuser with sudo privileges: " +msgstr "Nazwa użytkownika dla wymaganego superużytkownika z uprawnieniami sudo: " + +msgid "Any additional users to install (leave blank for no users): " +msgstr "Ewentualni użytkownicy do instalacji (pozostaw puste jeśli nie chcesz tworzyć użytkowników): " + +msgid "Should this user be a superuser (sudoer)?" +msgstr "Czy użytkownik powinien superużytkownikiem (sudoer)?" + +msgid "Select a timezone" +msgstr "Wybierz strefę czasową" + +msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" +msgstr "Czy chcesz użyć GRUB-a jako programu rozruchowego zamiast systemd-boot?" + +msgid "Choose a bootloader" +msgstr "Wybierz program rozruchowy" + +msgid "Choose an audio server" +msgstr "Wybierz serwer dźwięku" + +msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." +msgstr "Instalowane są tylko pakiety takie jak base, base-devel, linux, linux-firmware, efibootmgr i opcjonalne pakiety profili." + +msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." +msgstr "Jeśli wymagana jest przeglądarka internetowa, taka jak firefox lub chromium, można ją określić w następującym oknie dialogowym." + +msgid "Write additional packages to install (space separated, leave blank to skip): " +msgstr "Wpisz dodatkowe pakiety do zainstalowania (oddzielone spacjami, pozostaw puste aby pominąć): " + +msgid "Copy ISO network configuration to installation" +msgstr "Skopiuj ustawienia sieciowe ISO do instalacji" + +msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" +msgstr "Użyj programu NetworkManager (niezbędne do graficznej konfiguracji Internetu w środowiskach GNOME i KDE)" + +msgid "Select one network interface to configure" +msgstr "Wybierz jeden interfejs sieciowy do skonfigurowania" + +msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" +msgstr "Wybierz tryb, który ma być skonfigurowany dla \"{}\" lub pomiń, aby użyć trybu domyślnego \"{}\"" + +msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " +msgstr "Wprowadź adres IP i podsieć dla {}. (przykład: 192.168.0.5/24): " + +msgid "Enter your gateway (router) IP address or leave blank for none: " +msgstr "Wprowadź adres IP bramy sieciowej (routera) (pozostaw puste pole w przypadku braku adresu): " + +msgid "Enter your DNS servers (space separated, blank for none): " +msgstr "Wpisz swoje serwery DNS (oddzielone spacjami, pozostaw puste w przypadku braku): " + +msgid "Select which filesystem your main partition should use" +msgstr "Wybierz, który system plików ma być używany na partycji głównej" + +msgid "Current partition layout" +msgstr "Aktualny układ partycji" + +msgid "" +"Select what to do with\n" +"{}" +msgstr "" +"Wybierz, co ma być zrobione z\n" +"{}" + +msgid "Enter a desired filesystem type for the partition" +msgstr "Wprowadź typ systemu plików dla partycji" + +msgid "Enter the start sector (percentage or block number, default: {}): " +msgstr "Wprowadź sektor początkowy (procent lub numer bloku, domyślnie: {}): " + +msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +msgstr "Wprowadź sektor końcowy (procent lub numer bloku, domyślnie: {}): " + +msgid "{} contains queued partitions, this will remove those, are you sure?" +msgstr "{} zawiera partycje oczekujące w kolejce, to spowoduje ich usunięcie, czy jesteś pewien?" + +msgid "" +"{}\n" +"\n" +"Select by index which partitions to delete" +msgstr "" +"{}\n" +"\n" +"Wybierz według indeksu, które partycje mają zostać usunięte" + +msgid "" +"{}\n" +"\n" +"Select by index which partition to mount where" +msgstr "" +"{}\n" +"\n" +"Wybierz według indeksu, które partycje mają zostać zamontowane" + +msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." +msgstr " * Punkty montowania partycji są względne w stosunku do wnętrza instalacji, np. partycja startowa to /boot." + +msgid "Select where to mount partition (leave blank to remove mountpoint): " +msgstr "Wybierz gdzie chcesz zamontować partycję (pozostaw puste, aby usunąć punkt montowania): " + +msgid "" +"{}\n" +"\n" +"Select which partition to mask for formatting" +msgstr "" +"{}\n" +"\n" +"Wybierz partycja która ma zostać sformatowana" + +msgid "" +"{}\n" +"\n" +"Select which partition to mark as encrypted" +msgstr "" +"{}\n" +"\n" +"Wybierz partycja która ma zostać zaszyfrowana" + +msgid "" +"{}\n" +"\n" +"Select which partition to mark as bootable" +msgstr "" +"{}\n" +"\n" +"Wybierz partycja która ma zostać oznaczona jako startowa (rozruchowa/bootowalna)" + +msgid "" +"{}\n" +"\n" +"Select which partition to set a filesystem on" +msgstr "" +"{}\n" +"\n" +"Wybierz partycję, na której ma zostać utworzony system plików" + +msgid "Enter a desired filesystem type for the partition: " +msgstr "Wprowadź typ systemu plików dla partycji: " + +msgid "Archinstall language" +msgstr "Język Archinstall" + +msgid "Wipe all selected drives and use a best-effort default partition layout" +msgstr "Wymaż wszystkie wybrane dyski i użyj najlepszego domyślnego układu partycji" + +msgid "Select what to do with each individual drive (followed by partition usage)" +msgstr "Wybierz, co ma być zrobione z każdym dyskiem z osobna (a następnie z wykorzystaniem partycji)" + +msgid "Select what you wish to do with the selected block devices" +msgstr "Wybierz, co chcesz zrobić z wybranymi urządzeniami blokowymi" + +msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" +msgstr "To jest lista wstępnie zaprogramowanych profili, które mogą ułatwić instalację takich rzeczy jak środowiska graficzne" + +msgid "Select keyboard layout" +msgstr "Wybierz układ klawiatury" + +msgid "Select one of the regions to download packages from" +msgstr "Wybierz jeden z regionów, z których chcesz pobrać pakiety" + +msgid "Select one or more hard drives to use and configure" +msgstr "Wybierz jeden lub więcej dysków twardych do użycia i skonfiguruj je" + +msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." +msgstr "Aby uzyskać najlepszą kompatybilność ze sprzętem AMD, warto skorzystać z opcji całkowicie otawrto źródłowe (open-source) lub 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 "Aby uzyskać najlepszą kompatybilność ze sprzętem Intel, warto skorzystać z opcji całkowicie otawrto źródłowe (open-source) lub Intel.\n" + +msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" +msgstr "Aby uzyskać najlepszą kompatybilność ze sprzętem firmy Nvidia, warto skorzystać z firmowego sterownika firmy Nvidia.\n" + +msgid "" +"\n" +"\n" +"Select a graphics driver or leave blank to install all open-source drivers" +msgstr "" +"\n" +"\n" +"Wybierz sterownik graficzny lub pozostaw puste pole, aby zainstalować wszystkie sterowniki typu open source" + +msgid "All open-source (default)" +msgstr "Wszystkie otwarto źródłowe (domyślnie)" + +msgid "Choose which kernels to use or leave blank for default \"{}\"" +msgstr "Wybierz które jądra mają być używane, lub pozostaw puste dla ustawień domyślnych \"{}\"" + +msgid "Choose which locale language to use" +msgstr "Wybierz które locale języka mają zostać użyte" + +msgid "Choose which locale encoding to use" +msgstr "Wybierz które locale kodowania mają zostać użyte" + +msgid "Select one of the values shown below: " +msgstr "Wybierz jedną z wartości przedstawionych poniżej: " + +msgid "Select one or more of the options below: " +msgstr "Wybierz jedną lub więcej z poniższych opcji: " + +msgid "Adding partition...." +msgstr "Dodawanie partycji..." + +msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." +msgstr "Aby kontynuować, musisz podać poprawny typ fs. Zobacz `man parted`, aby poznać prawidłowe typy fs." + +msgid "Error: Listing profiles on URL \"{}\" resulted in:" +msgstr "Błąd: Lista profili z URL \"{}\":" + +msgid "Error: Could not decode \"{}\" result as JSON:" +msgstr "Błąd: Nie można dekodować \"{}\" jako JSON:" + +msgid "Keyboard layout" +msgstr "Układ klawiatury" + +msgid "Mirror region" +msgstr "Region lustra" + +msgid "Locale language" +msgstr "Locale języka" + +msgid "Locale encoding" +msgstr "Locale kodowania" + +msgid "Drive(s)" +msgstr "Dyski twarde" + +#, fuzzy +msgid "Disk layout" +msgstr "Zapisz układ dysku" + +#, fuzzy +msgid "Encryption password" +msgstr "Ustaw hasło szyfrowania" + +msgid "Swap" +msgstr "Swap" + +msgid "Bootloader" +msgstr "Program rozruchowy" + +#, fuzzy +msgid "Root password" +msgstr "Hasło root" + +msgid "Superuser account" +msgstr "Konto superużytkownika" + +msgid "User account" +msgstr "Konto użytkownika" + +msgid "Profile" +msgstr "Profil" + +msgid "Audio" +msgstr "Audio" + +msgid "Kernels" +msgstr "Jądra" + +msgid "Additional packages" +msgstr "Dodatkowe pakiety" + +msgid "Network configuration" +msgstr "Konfiguracja sieci" + +msgid "Automatic time sync (NTP)" +msgstr "Automatycznej synchronizacji czasu (NTP)" + +msgid "Install ({} config(s) missing)" +msgstr "Zainstaluj ({} brakuje konfiguracji)" + +msgid "" +"You decided to skip harddrive selection\n" +"and will use whatever drive-setup is mounted at {} (experimental)\n" +"WARNING: Archinstall won't check the suitability of this setup\n" +"Do you wish to continue?" +msgstr "" +"Zdecydowałeś się pominąć wybór dysku twardego\n" +"i użyje konfiguracji dysku zamontowanego w {} (eksperymentalne)\n" +"OSTRZEŻENIE: Archinstall nie sprawdzi przydatności tej konfiguracji\n" +"Czy chcesz kontynuować?" + +msgid "Re-using partition instance: {}" +msgstr "Ponowne wykorzystanie instancji partycji" + +msgid "Create a new partition" +msgstr "Utwórz nową partycję" + +msgid "Delete a partition" +msgstr "Usuń partycje" + +msgid "Clear/Delete all partitions" +msgstr "Wyczyść/Usuń wszystkie partycje" + +msgid "Assign mount-point for a partition" +msgstr "Przydzielanie punktu montowania dla partycji" + +msgid "Mark/Unmark a partition to be formatted (wipes data)" +msgstr "Zaznacz/odznacz partycję, która ma zostać sformatowana (wymazuje dane)" + +msgid "Mark/Unmark a partition as encrypted" +msgstr "Oznaczanie/odznaczanie partycji jako zaszyfrowanej" + +msgid "Mark/Unmark a partition as bootable (automatic for /boot)" +msgstr "Oznaczanie/odznaczanie partycji jako startowe (rozruchowe/bootowalne) (automatyczne dla /boot)" + +msgid "Set desired filesystem for a partition" +msgstr "Ustaw system plików dla partycji" + +msgid "Abort" +msgstr "Anuluj" + +msgid "Hostname" +msgstr "Nazwę hosta" + +msgid "Not configured, unavailable unless setup manually" +msgstr "Nie skonfigurowana, niedostępna, chyba że zostanie skonfigurowana ręcznie" + +msgid "Timezone" +msgstr "Strefe czasową" + +msgid "Set/Modify the below options" +msgstr "Ustaw/zmodyfikuj poniższe opcje" + +msgid "Install" +msgstr "Zainstaluj" + +msgid "" +"Use ESC to skip\n" +"\n" +msgstr "" +"Użyj ESC aby pominąć\n" +"\n" + +msgid "Suggest partition layout" +msgstr "Sugerowany układ partycji" + +msgid "Enter a password: " +msgstr "Wprowadź hasło: " + +msgid "Enter a encryption password for {}" +msgstr "Wprowadź hasło szyfrowania dla {}" + +msgid "Enter disk encryption password (leave blank for no encryption): " +msgstr "Wprowadź hasło do szyfrowania dysku (pozostaw puste aby nie ustawiać szyfrowania): " + +msgid "Create a required super-user with sudo privileges: " +msgstr "Utwórz wymaganego superużytkownika z uprawnieniami sudo: " + +msgid "Enter root password (leave blank to disable root): " +msgstr "Wprowadź hasło roota (pozostaw puste, aby wyłączyć roota): " + +msgid "Password for user \"{}\": " +msgstr "Hasło dla użytkownika \"{}\": " + +msgid "Verifying that additional packages exist (this might take a few seconds)" +msgstr "Sprawdzenie, czy istnieją dodatkowe pakiety (może to potrwać kilka sekund)" + +msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" +msgstr "Czy chcesz korzystać z automatycznej synchronizacji czasu (NTP) z domyślnymi serwerami czasu?\n" + +msgid "" +"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" +"For more information, please check the Arch wiki" +msgstr "" +"Aby NTP działał, może być wymagany czas sprzętowy i inne kroki po konfiguracji.\n" +"Aby uzyskać więcej informacji, proszę sprawdzić Arch wiki" + +msgid "Enter a username to create an additional user (leave blank to skip): " +msgstr "Wprowadź nazwę użytkownika, aby utworzyć dodatkowego użytkownika (pozostaw puste, aby pominąć): " + +msgid "Use ESC to skip\n" +msgstr "Kliknij ESC aby pominąć\n" + +msgid "" +"\n" +" Choose an object from the list, and select one of the available actions for it to execute" +msgstr "" +"\n" +" Wybierz obiekt z listy, a następnie wybierz jedną z dostępnych akcji do wykonania" + +msgid "Cancel" +msgstr "Anuluj" + +msgid "Confirm and exit" +msgstr "Potwierdź i wyjdź" + +msgid "Add" +msgstr "Dodaj" + +msgid "Copy" +msgstr "Kopiuj" + +msgid "Edit" +msgstr "Edytuj" + +msgid "Delete" +msgstr "Usuń" + +msgid "Select an action for < {} >" +msgstr "Wybierz akcję dla < {} >" + +msgid "Copy to new key:" +msgstr "Skopiuj do nowego klucza:" + +msgid "Unknown nic type: {}. Possible values are {}" +msgstr "Nieznany typ niszy: {}. Możliwe wartości to {}" + +msgid "" +"\n" +"This is your chosen configuration:" +msgstr "" +"\n" +"To jest wybrana konfiguracja:" + +msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." +msgstr "Pacman jest już uruchomiony i czeka maksymalnie 10 minut na zakończenie pracy." + +msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." +msgstr "Istniejąca wcześniej blokada programu pacman nie została zakończona. Proszę wyczyścić wszystkie istniejące sesje pacmana przed użyciem archinstall." + +msgid "Choose which optional additional repositories to enable" +msgstr "Wybierz, które z opcjonalnych dodatkowych repozytoriów mają być włączone" + +#, fuzzy +msgid "Add a user" +msgstr "Dodaj użytkownika" + +msgid "Change password" +msgstr "Zmień hasło" + +msgid "Promote/Demote user" +msgstr "Promuj/usuń użytkownika" + +msgid "Delete User" +msgstr "Usuń użytkownika" + +msgid "" +"\n" +"Define a new user\n" +msgstr "" +"\n" +"Zdefiniuj nowego użytkownika\n" + +msgid "User Name : " +msgstr "Nazwa użytkownika : " + +msgid "Should {} be a superuser (sudoer)?" +msgstr "Czy {} powinien być superuserem (sudoer)?" + +msgid "Define users with sudo privilege: " +msgstr "Zdefiniuj użytkowników z przywilejem sudo: " + +msgid "No network configuration" +msgstr "Brak konfiguracji sieciowej" + +msgid "Set desired subvolumes on a btrfs partition" +msgstr "Ustawianie żądanych subwoluminów na partycji btrfs" + +msgid "" +"{}\n" +"\n" +"Select which partition to set subvolumes on" +msgstr "Wybierz partycję, na której mają być ustawione subwoluminów" + +msgid "Manage btrfs subvolumes for current partition" +msgstr "Zarządzaj subwoluminami btrfs dla bieżącej partycji" + +msgid "No configuration" +msgstr "Brak konfiguracji" + +msgid "Save user configuration" +msgstr "Zapisz konfiguracje użytkownika" + +msgid "Save user credentials" +msgstr "Zapisz dane uwierzytelniające użytkownika" + +msgid "Save disk layout" +msgstr "Zapisz układ dysku" + +msgid "Save all" +msgstr "Zapisz wszystko" + +msgid "Choose which configuration to save" +msgstr "Wybierz, która konfiguracja ma zostać zapisana" + +msgid "Enter a directory for the configuration(s) to be saved: " +msgstr "Wprowadź katalog, w którym ma zostać zapisana konfiguracja: " + +msgid "Not a valid directory: {}" +msgstr "Nie jest to prawidłowy katalog: {}" + +msgid "The password you are using seems to be weak," +msgstr "Używane przez Ciebie hasło wydaje się być słabe," + +msgid "are you sure you want to use it?" +msgstr "czy na pewno chcesz go używać?" + +msgid "Optional repositories" +msgstr "Dodatkowe repozytoria" + +msgid "Save configuration" +msgstr "Zapisz konfiguracje" + +msgid "Missing configurations:\n" +msgstr "Brak konfiguracji:\n" + +msgid "Either root-password or at least 1 superuser must be specified" +msgstr "Musi być podane albo hasło root, albo co najmniej jednego superużytkownika" + +msgid "Manage superuser accounts: " +msgstr "Zarządzaj kontami superużytkowników: " + +msgid "Manage ordinary user accounts: " +msgstr "Zarządzaj kontami zwykłych użytkowników: " + +msgid " Subvolume :{:16}" +msgstr " Subwolumin :{:16}" + +msgid " mounted at {:16}" +msgstr " zamontowany w {:16}" + +msgid " with option {}" +msgstr " z opcjami {}" + +msgid "" +"\n" +" Fill the desired values for a new subvolume \n" +msgstr "" +"\n" +" Wypełnij żądane wartości dla nowego subwolumenu \n" + +msgid "Subvolume name " +msgstr "Nazwa subwolumenu " + +msgid "Subvolume mountpoint" +msgstr "Punkt montowania subwolumenu" + +msgid "Subvolume options" +msgstr "Opcje subwolumenu" + +msgid "Save" +msgstr "Zapisz" + +msgid "Subvolume name :" +msgstr "Nazwa subwolumenu :" + +msgid "Select a mount point :" +msgstr "Wybierz punkt montowania :" + +msgid "Select the desired subvolume options " +msgstr "Wybierz opcje subwolumenu " + +msgid "Define users with sudo privilege, by username: " +msgstr "Określanie użytkowników z uprawnieniami sudo według nazwy użytkownika: " + +msgid "[!] A log file has been created here: {}" +msgstr "[!] Plik dziennika został zapisany tutaj: {}" + +msgid "Would you like to use BTRFS subvolumes with a default structure?" +msgstr "Czy chcesz użyć subwolumenów BTRFS z domyślną strukturą?" + +msgid "Would you like to use BTRFS compression?" +msgstr "Czy chcesz użyć kompresji BTRFS?" + +msgid "Would you like to create a separate partition for /home?" +msgstr "Czy chcesz stworzyć oddzielną partycje dla /home?" + +msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" +msgstr "Wybrane dyski nie mają wymaganej objętości dla automatycznej sugestii\n" + +msgid "Minimum capacity for /home partition: {}GB\n" +msgstr "Maksymalna objętość dla partycji /home: {}GB\n" + +msgid "Minimum capacity for Arch Linux partition: {}GB" +msgstr "Minimalna objętośc dla partycji Arch Linux: {}GB" + +msgid "Continue" +msgstr "Kontynuuj" + +msgid "yes" +msgstr "tak" + +msgid "no" +msgstr "nie" + +msgid "set: {}" +msgstr "ustawienie: {}" + +msgid "Manual configuration setting must be a list" +msgstr "Konfiguracja ustawiona manualnie musi być listą" + +msgid "No iface specified for manual configuration" +msgstr "Iface nie zostało ustawione w manualnej konfiguracji" + +msgid "Manual nic configuration with no auto DHCP requires an IP address" +msgstr "" + +msgid "Add interface" +msgstr "Dodaj interfejs" + +msgid "Edit interface" +msgstr "Edytuj interfejs" + +#, fuzzy +msgid "Delete interface" +msgstr "Usuń interfejs" + +#, fuzzy +msgid "Select interface to add" +msgstr "Wybierz jeden interfejs sieciowy do skonfigurowania" + +#, fuzzy +msgid "Manual configuration" +msgstr "Zapisz konfiguracje" + +msgid "Mark/Unmark a partition as compressed (btrfs only)" +msgstr "Oznacz/odznacz partycje jako skompresowaną (tylko w btrfs)" + +msgid "The password you are using seems to be weak, are you sure you want to use it?" +msgstr "Używane przez Ciebie hasło wydaje się być słabe, czy na pewno chcesz go użyć?" + +msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" +msgstr "Dostarcza wybór środowisk desktopowych oraz tiling window managerów, np. gnome, kde, sway" + +msgid "Select your desired desktop environment" +msgstr "Wybierz pożądane środowisko desktopowe" + +msgid "A very basic installation that allows you to customize Arch Linux as you see fit." +msgstr "Bardzo podstawowa instalacja pozwalająca ci dostosowanie Arch Linuxa do twoich upodobań." + +msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" +msgstr "Dostarcza wybór różnych pakietów serwerowych do zainstalowania i uruchomienia, np. httpd, nginx, mariadb" + +msgid "Choose which servers to install, if none then a minimal installation wil be done" +msgstr "Wybierz jakie serwery zainstalować, jeżeli żadne, wtedy minimalna instalacja będzie użyta" + +msgid "Installs a minimal system as well as xorg and graphics drivers." +msgstr "Instaluje minimalną wersje systemu z xorg i sterownikami graficznymi." + +msgid "Press Enter to continue." +msgstr "Naciśnij Enter aby kontynuować." + +msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" +msgstr "Czy chciałbyś zchrootować do nowostworzonej instalacji i przeprowadzić po-instalacyjną konfiguracje?" + +msgid "Are you sure you want to reset this setting?" +msgstr "Czy napewno chcesz zresetować to ustawienie?" + +msgid "Select one or more hard drives to use and configure\n" +msgstr "Wybierz jeden lub więcej dysków twardych do użycia i skonfiguruj je\n" + +msgid "Any modifications to the existing setting will reset the disk layout!" +msgstr "Jakiekolwiek modyfikacje do istniejących ustawień zresetują układ dysków!" + +msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" +msgstr "Jeżeli zresetujesz wybór dysków, zresetujesz także obecny układ dysków. Jesteś pewny że chcesz to zrobić?" + +#, fuzzy +msgid "Save and exit" +msgstr "Zapisz i wyjdź" + +#, fuzzy +msgid "" +"{}\n" +"contains queued partitions, this will remove those, are you sure?" +msgstr "" +"{}\n" +"zawiera partycje oczekujące w kolejce, to spowoduje ich usunięcie, czy jesteś pewien?" + +msgid "No audio server" +msgstr "" + +msgid "(default)" +msgstr "(domyslne)" + +#, fuzzy +msgid "Use ESC to skip" +msgstr "Kliknij ESC aby pominąć" + +msgid "" +"Use CTRL+C to reset current selection\n" +"\n" +msgstr "" +"Użyj CTRL+C aby zresetować obecny wybór\n" +"\n" + +msgid "Copy to: " +msgstr "Kopiuj do: " + +#, fuzzy +msgid "Edit: " +msgstr "Edytuj: " + +msgid "Key: " +msgstr "" + +msgid "Edit {}: " +msgstr "Edytuj {}: " + +msgid "Add: " +msgstr "Dodaj: " + +#, fuzzy +msgid "Value: " +msgstr "Wartość: " + +msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" +msgstr "" + +msgid "Select one of the disks or skip and use /mnt as default" +msgstr "" + +msgid "Select which partitions to mark for formatting:" +msgstr "Wybierz partycja która ma zostać sformatowana:" + +#~ msgid "Select disk layout" +#~ msgstr "Wybierz układ dysku" + +#~ msgid "Add :" +#~ msgstr "Dodaj :" + +#~ msgid "Value :" +#~ msgstr "Wartość :" + +#, python-brace-format +#~ msgid "Edit {origkey} :" +#~ msgstr "Edytuj {origkey} :" + +#~ msgid "Copy to :" +#~ msgstr "Kopiuj do :" + +#~ msgid "Edite :" +#~ msgstr "Edytuj :" + +#~ msgid "Key :" +#~ msgstr "Klucz :" diff --git a/archinstall/locales/pt/LC_MESSAGES/base.mo b/archinstall/locales/pt/LC_MESSAGES/base.mo Binary files differnew file mode 100644 index 00000000..3b9f7c26 --- /dev/null +++ b/archinstall/locales/pt/LC_MESSAGES/base.mo diff --git a/archinstall/locales/pt/LC_MESSAGES/base.po b/archinstall/locales/pt/LC_MESSAGES/base.po new file mode 100644 index 00000000..4352cf34 --- /dev/null +++ b/archinstall/locales/pt/LC_MESSAGES/base.po @@ -0,0 +1,791 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.0.1\n" + +msgid "[!] A log file has been created here: {} {}" +msgstr "[!] Um arquivo de log foi criado aqui: {} {}" + +msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" +msgstr " Por favor envie este problema (e arquivo) para https://github.com/archlinux/archinstall/issues" + +msgid "Do you really want to abort?" +msgstr "Queres mesmo abortar?" + +msgid "And one more time for verification: " +msgstr "Uma última vez para verificação: " + +msgid "Would you like to use swap on zram?" +msgstr "Gostarias de usar swap em zram?" + +msgid "Desired hostname for the installation: " +msgstr "Hostname desejado para a instalação: " + +msgid "Username for required superuser with sudo privileges: " +msgstr "Nome de utilizador para o super-utilizador com privilégios sudo: " + +msgid "Any additional users to install (leave blank for no users): " +msgstr "Algum utilizador adicional para instalar (deixa em branco para nenhum utilizador): " + +msgid "Should this user be a superuser (sudoer)?" +msgstr "Deve este utilizador ser um super-utilizador (sudoer)?" + +msgid "Select a timezone" +msgstr "Seleciona um fuso horário" + +msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" +msgstr "Preferias usar o GRUB como bootloader ao invés de systemd-boot?" + +msgid "Choose a bootloader" +msgstr "Escolhe um bootloader" + +msgid "Choose an audio server" +msgstr "Escolhe um servidor de áudio" + +msgid "Only packages such as base, base-devel, 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." + +msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." +msgstr "Se queres um navegador web, como firefox ou chromium, deves especificá-lo na próxima pergunta." + +msgid "Write additional packages to install (space separated, leave blank to skip): " +msgstr "Escreve pacotes adicionais para instalar (separados por espaço, deixa em branco para não instalar nada): " + +msgid "Copy ISO network configuration to installation" +msgstr "Copiar a configuração de rede do ISO para a instalação" + +msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" +msgstr "Usar NetworkManager (necessário para configurar internet graficamente em GNOME e KDE)" + +msgid "Select one network interface to configure" +msgstr "Selecione uma interface de rede para configurar" + +msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" +msgstr "Selecciona qual modo configurar para \"{}\" ou pula para usar o modo padrão \"{}\"" + +msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " +msgstr "Escreve a IP e subrede para {} (exemplo: 192.168.0.5/24): " + +msgid "Enter your gateway (router) IP address or leave blank for none: " +msgstr "Escreve a tua IP de gateway (router) ou deixa em branco para nenhuma: " + +msgid "Enter your DNS servers (space separated, blank for none): " +msgstr "Escreve os servidores DNS (separados por espaço, deixa em branco para nenhum): " + +msgid "Select which filesystem your main partition should use" +msgstr "Seleciona qual sistema de ficheiros a partição principal deverá usar" + +msgid "Current partition layout" +msgstr "Esquema actual da partições" + +msgid "" +"Select what to do with\n" +"{}" +msgstr "" +"Seleciona o que fazer com\n" +"{}" + +msgid "Enter a desired filesystem type for the partition" +msgstr "Escreve o tipo de sistema de ficheiros desejado para a partição" + +msgid "Enter the start sector (percentage or block number, default: {}): " +msgstr "Escreve o sector de início (percentagem ou número de bloco, padrão: {}): " + +msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +msgstr "Escreve o sector final da partição (percentagem ou número de bloco, ex: {}): " + +msgid "{} contains queued partitions, this will remove those, are you sure?" +msgstr "{} contem partições em fila, isto irá remover essas, tens a certeza?" + +msgid "" +"{}\n" +"\n" +"Select by index which partitions to delete" +msgstr "" +"{}\n" +"\n" +"Seleciona por índice quais partições remover" + +msgid "" +"{}\n" +"\n" +"Select by index which partition to mount where" +msgstr "" +"{}\n" +"\n" +"Seleciona por índice quais partições montar em" + +msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." +msgstr " * Os pontos de montagem das partições são relativos à dentro da instalação, o boot seria /boot por exemplo." + +msgid "Select where to mount partition (leave blank to remove mountpoint): " +msgstr "Seleciona onde montar a partição (deixa em branco para remover o ponto de montagem): " + +msgid "" +"{}\n" +"\n" +"Select which partition to mask for formatting" +msgstr "" +"{}\n" +"\n" +"Seleciona a partição a mascar para formatar" + +msgid "" +"{}\n" +"\n" +"Select which partition to mark as encrypted" +msgstr "" +"{}\n" +"\n" +"Seleciona a partição a marcar como encriptada" + +msgid "" +"{}\n" +"\n" +"Select which partition to mark as bootable" +msgstr "" +"{}\n" +"\n" +"Seleciona a partição a marcar como bootável" + +msgid "" +"{}\n" +"\n" +"Select which partition to set a filesystem on" +msgstr "" +"{}\n" +"\n" +"Seleciona a partição a definir um sistema de ficheiros" + +msgid "Enter a desired filesystem type for the partition: " +msgstr "Escreve o tipo de sistema de ficheiros desejado para a partição: " + +msgid "Archinstall language" +msgstr "Idioma do Archinstall" + +msgid "Wipe all selected drives and use a best-effort default partition layout" +msgstr "Limpar todos os discos selecionados e usar um esquema de partições padrão de melhor desempenho" + +msgid "Select what to do with each individual drive (followed by partition usage)" +msgstr "Seleciona o que fazer com cada disco individual (seguido de uso de partição)" + +msgid "Select what you wish to do with the selected block devices" +msgstr "Seleciona o que desejas 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, podem facilitar a instalação de ambientes de trabalho" + +msgid "Select keyboard layout" +msgstr "Seleciona o esquema de teclado" + +msgid "Select one of the regions to download packages from" +msgstr "Seleciona uma das regiões para descarregar pacotes" + +msgid "Select one or more hard drives to use and configure" +msgstr "Seleciona 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 uma melhor compatibilidade com o teu hardware AMD, poderás querer usar a opção de todos os drivers open-source ou com proprietários da 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 uma melhor compatibilidade com o teu hardware Intel, poderás querer usar a opção de todos os drivers open-source ou com proprietários da Intel.\n" + +msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" +msgstr "Para uma melhor compatibilidade com o teu hardware Nvidia, poderás querer usar o driver proprietário da Nvidia.\n" + +msgid "" +"\n" +"\n" +"Select a graphics driver or leave blank to install all open-source drivers" +msgstr "" +"\n" +"\n" +"Seleciona um driver de gráficos ou deixa em branco para instalar todos os drivers open-source" + +msgid "All open-source (default)" +msgstr "Todos os drivers open-source (padrão)" + +msgid "Choose which kernels to use or leave blank for default \"{}\"" +msgstr "Escolhe quais kernels usar ou deixa em branco para o padrão \"{}\"" + +msgid "Choose which locale language to use" +msgstr "Escolhe qual idioma de localização usar" + +msgid "Choose which locale encoding to use" +msgstr "Escolhe qual codificação de localização usar" + +msgid "Select one of the values shown below: " +msgstr "Seleciona uma das opções mostradas abaixo: " + +msgid "Select one or more of the options below: " +msgstr "Seleciona uma ou mais opções abaixo: " + +msgid "Adding partition...." +msgstr "Adicionando partição...." + +msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." +msgstr "Precisas de colocar um tipo de sistema de ficheiros valido. Consulta o `man parted` para ver as opções validas." + +msgid "Error: Listing profiles on URL \"{}\" resulted in:" +msgstr "Erro: Listando os perfis em URL \"{}\" resulta em:" + +msgid "Error: Could not decode \"{}\" result as JSON:" +msgstr "Erro: Não foi possível decodificar \"{}\" como JSON:" + +msgid "Keyboard layout" +msgstr "Esquema do teclado" + +msgid "Mirror region" +msgstr "Região do mirror" + +msgid "Locale language" +msgstr "Idioma de localização" + +msgid "Locale encoding" +msgstr "Codificação de localização" + +msgid "Drive(s)" +msgstr "Discos rígidos" + +msgid "Select disk layout" +msgstr "Seleciona o esquema de disco" + +msgid "Set encryption password" +msgstr "Define a palavra-passe de encriptação" + +msgid "Swap" +msgstr "Swap" + +msgid "Bootloader" +msgstr "Carregador de arranque" + +msgid "root password" +msgstr "Palavra-passe de root" + +msgid "Superuser account" +msgstr "Conta de superusuário" + +msgid "User account" +msgstr "Conta de usuário" + +msgid "Profile" +msgstr "Perfil" + +msgid "Audio" +msgstr "Áudio" + +msgid "Kernels" +msgstr "Kernels" + +msgid "Additional packages" +msgstr "Pacotes adicionais" + +msgid "Network configuration" +msgstr "Configuração de rede" + +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)" + +msgid "" +"You decided to skip harddrive selection\n" +"and will use whatever drive-setup is mounted at {} (experimental)\n" +"WARNING: Archinstall won't check the suitability of this setup\n" +"Do you wish to continue?" +msgstr "" +"Decidiste ignorar a seleção de disco rígido\n" +"e usar qualquer configuração de disco rígido montada em {} (experimental)\n" +"ATENÇÃO: Archinstall não verificar a viabilidade desta configuração\n" +"Deseja continuar?" + +msgid "Re-using partition instance: {}" +msgstr "Reutilizando a instância da partição: {}" + +msgid "Create a new partition" +msgstr "Criar uma nova partição" + +msgid "Delete a partition" +msgstr "Eliminar uma partição" + +msgid "Clear/Delete all partitions" +msgstr "Limpar/Eliminar todas as partições" + +msgid "Assign mount-point for a partition" +msgstr "Atribuir um ponto de montagem para uma partição" + +msgid "Mark/Unmark a partition to be formatted (wipes data)" +msgstr "Marcar/Desmarcar uma partição para ser formatada (apaga os dados)" + +msgid "Mark/Unmark a partition as encrypted" +msgstr "Marcar/Desmarcar uma partição como encriptada" + +msgid "Mark/Unmark a partition as bootable (automatic for /boot)" +msgstr "Marcar/Desmarcar uma partição como bootável (automática para /boot)" + +msgid "Set desired filesystem for a partition" +msgstr "Definir o sistema de ficheiros desejado para uma partição" + +msgid "Abort" +msgstr "Cancelar" + +msgid "Hostname" +msgstr "Nome do computador" + +msgid "Not configured, unavailable unless setup manually" +msgstr "Não configurado, indisponível a não ser que seja configurado manualmente" + +msgid "Timezone" +msgstr "Fuso horário" + +msgid "Set/Modify the below options" +msgstr "Definir/Modificar as opções abaixo" + +msgid "Install" +msgstr "Instalar" + +msgid "" +"Use ESC to skip\n" +"\n" +msgstr "" +"Usa ESC para saltar\n" +"\n" + +msgid "Suggest partition layout" +msgstr "Sugerir esquema de partições" + +msgid "Enter a password: " +msgstr "Introduz uma palavra-passe: " + +msgid "Enter a encryption password for {}" +msgstr "Introduzir uma palavra-passe de encriptação para {}" + +msgid "Enter disk encryption password (leave blank for no encryption): " +msgstr "Introduzir palavra-passe de encriptação do disco (deixar em branco para nenhuma encriptação): " + +msgid "Create a required super-user with sudo privileges: " +msgstr "Criar um super-utilizador com privilégios de sudo: " + +msgid "Enter root password (leave blank to disable root): " +msgstr "Introduzir palavra-passe de root (deixar em branco para desactivar root): " + +msgid "Password for user \"{}\": " +msgstr "Palavra-passe para o utilizador \"{}\": " + +msgid "Verifying that additional packages exist (this might take a few seconds)" +msgstr "Verificando se existem pacotes adicionais (isto pode demorar alguns segundos)" + +msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" +msgstr "Pretende usar sincronização de tempo automática (NTP) com os servidores de tempo predefinidos?\n" + +msgid "" +"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" +"For more information, please check the Arch wiki" +msgstr "" +"O tempo de hardware e outros passos após a configuração podem ser necessários para que o NTP funcione.\n" +"Para mais informações, consulte a wiki do Arch" + +msgid "Enter a username to create an additional user (leave blank to skip): " +msgstr "Introduzir um nome de utilizador para criar um utilizador adicional (deixar em branco para saltar): " + +#, fuzzy +msgid "Use ESC to skip\n" +msgstr "" +"Usa ESC para saltar\n" +"\n" + +msgid "" +"\n" +" Choose an object from the list, and select one of the available actions for it to execute" +msgstr "" +"\n" +" Escolha um objeto da lista, e selecione uma das ações disponíveis para executar" + +msgid "Cancel" +msgstr "Cancelar" + +#, fuzzy +msgid "Confirm and exit" +msgstr "Configurar e sair" + +msgid "Add" +msgstr "Adicionar" + +msgid "Copy" +msgstr "Copiar" + +msgid "Edit" +msgstr "Editar" + +msgid "Delete" +msgstr "Eliminar" + +#, fuzzy +msgid "Select an action for < {} >" +msgstr "Selecione uma ação para < {} >" + +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 {}" + +msgid "" +"\n" +"This is your chosen configuration:" +msgstr "" +"\n" +"Esta é a sua configuração escolhida:" + +msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." +msgstr "Pacman já está a funcionar, a aguardar até 10 minutos para terminar." + +msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." +msgstr "Pacman lock não terminou. Por favor, limpe as sessões de pacman existentes antes de usar o archinstall." + +msgid "Choose which optional additional repositories to enable" +msgstr "Escolha quais repositórios adicionais opcionais a ativar" + +#, fuzzy +msgid "Add a user" +msgstr "Adicionar um utilizador" + +#, fuzzy +msgid "Change password" +msgstr "Introduzir nova palavra-passe" + +msgid "Promote/Demote user" +msgstr "Promover/Demover utilizador" + +msgid "Delete User" +msgstr "Eliminar Utilizador" + +msgid "" +"\n" +"Define a new user\n" +msgstr "" +"\n" +"Definir um novo utilizador\n" + +msgid "User Name : " +msgstr "Nome de Utilizador : " + +#, fuzzy +msgid "Should {} be a superuser (sudoer)?" +msgstr "Deve {} ser um superutilizador (sudoer)?" + +#, fuzzy +msgid "Define users with sudo privilege: " +msgstr "Definir utilizadores com privilégio sudo: " + +#, fuzzy +msgid "No network configuration" +msgstr "Nenhuma configuração de rede" + +#, fuzzy +msgid "Set desired subvolumes on a btrfs partition" +msgstr "Definir subvolumes desejados numa partição btrfs" + +#, fuzzy +msgid "" +"{}\n" +"\n" +"Select which partition to set subvolumes on" +msgstr "" +"{}\n" +"\n" +"Selecte qual partição definir subvolumes" + +msgid "Manage btrfs subvolumes for current partition" +msgstr "Gerir subvolumes btrfs para a partição atual" + +msgid "No configuration" +msgstr "Nenhuma configuração" + +msgid "Save user configuration" +msgstr "Guardar configuração de utilizador" + +msgid "Save user credentials" +msgstr "Guardar credenciais de utilizador" + +#, fuzzy +msgid "Save disk layout" +msgstr "Selecionar esquema de disco" + +msgid "Save all" +msgstr "Guardar tudo" + +#, fuzzy +msgid "Choose which configuration to save" +msgstr "Escolhe quais configurações guardar" + +msgid "Enter a directory for the configuration(s) to be saved: " +msgstr "Introduz um diretório para as configurações a serem guardadas: " + +msgid "Not a valid directory: {}" +msgstr "Não é uma diretoria válida: {}" + +msgid "The password you are using seems to be weak," +msgstr "A palavra-passe que estás a usar parece ser fraca," + +#, fuzzy +msgid "are you sure you want to use it?" +msgstr "tens a certeza que quer usar?" + +#, fuzzy +msgid "Optional repositories" +msgstr "Repositórios adicionais" + +msgid "Save configuration" +msgstr "Guardar configuração" + +msgid "Missing configurations:\n" +msgstr "Configurações em falta:\n" + +msgid "Either root-password or at least 1 superuser must be specified" +msgstr "É necessário especificar uma senha de root ou pelo menos 1 super-utilizador" + +#, fuzzy +msgid "Manage superuser accounts: " +msgstr "Gerir contas superutilizador: " + +#, fuzzy +msgid "Manage ordinary user accounts: " +msgstr "Gerir contas de utilizador: " + +msgid " Subvolume :{:16}" +msgstr " Subvolume :{:16}" + +msgid " mounted at {:16}" +msgstr " montado em {:16}" + +msgid " with option {}" +msgstr " com opção {}" + +msgid "" +"\n" +" Fill the desired values for a new subvolume \n" +msgstr "" +"\n" +" Preencha os valores desejados para um novo subvolume \n" + +msgid "Subvolume name " +msgstr "Nome do subvolume " + +msgid "Subvolume mountpoint" +msgstr "Ponto de montagem do subvolume" + +msgid "Subvolume options" +msgstr "Opções do subvolume" + +msgid "Save" +msgstr "Guardar" + +msgid "Subvolume name :" +msgstr "Nome do subvolume :" + +#, fuzzy +msgid "Select a mount point :" +msgstr "Selecione um ponto de montagem :" + +msgid "Select the desired subvolume options " +msgstr "Selecione as opções desejadas do subvolume " + +#, fuzzy +msgid "Define users with sudo privilege, by username: " +msgstr "Define utilizadores com privilégio sudo, por nome de utilizador: " + +#, fuzzy +msgid "[!] A log file has been created here: {}" +msgstr "[!] Um ficheiro de registo foi criado aqui: {}" + +#, fuzzy +msgid "Would you like to use BTRFS subvolumes with a default structure?" +msgstr "Preferias usar o GRUB como bootloader ao invés de systemd-boot?" + +#, fuzzy +msgid "Would you like to use BTRFS compression?" +msgstr "Gostarias de usar swap em zram?" + +#, fuzzy +msgid "Would you like to create a separate partition for /home?" +msgstr "Gostarias de usar swap em zram?" + +msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" +msgstr "" + +msgid "Minimum capacity for /home partition: {}GB\n" +msgstr "" + +msgid "Minimum capacity for Arch Linux partition: {}GB" +msgstr "" + +msgid "Continue" +msgstr "" + +msgid "yes" +msgstr "" + +msgid "no" +msgstr "" + +msgid "set: {}" +msgstr "" + +msgid "Manual configuration setting must be a list" +msgstr "" + +#, fuzzy +msgid "No iface specified for manual configuration" +msgstr "Guardar configuração de utilizador" + +msgid "Manual nic configuration with no auto DHCP requires an IP address" +msgstr "" + +msgid "Add interface" +msgstr "" + +msgid "Edit interface" +msgstr "" + +#, fuzzy +msgid "Delete interface" +msgstr "Eliminar Utilizador" + +#, fuzzy +msgid "Select interface to add" +msgstr "Selecione uma interface de rede para configurar" + +#, fuzzy +msgid "Manual configuration" +msgstr "Guardar configuração" + +#, fuzzy +msgid "Mark/Unmark a partition as compressed (btrfs only)" +msgstr "Marcar/Desmarcar uma partição como encriptada" + +#, fuzzy +msgid "The password you are using seems to be weak, are you sure you want to use it?" +msgstr "A palavra-passe que estás a usar parece ser fraca," + +msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" +msgstr "" + +msgid "Select your desired desktop environment" +msgstr "" + +msgid "A very basic installation that allows you to customize Arch Linux as you see fit." +msgstr "" + +msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" +msgstr "" + +msgid "Choose which servers to install, if none then a minimal installation wil be done" +msgstr "" + +msgid "Installs a minimal system as well as xorg and graphics drivers." +msgstr "" + +msgid "Press Enter to continue." +msgstr "" + +msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" +msgstr "" + +#, fuzzy +msgid "Are you sure you want to reset this setting?" +msgstr "tens a certeza que quer usar?" + +#, fuzzy +msgid "Select one or more hard drives to use and configure\n" +msgstr "Seleciona um ou mais discos rígidos para usar e configurar" + +msgid "Any modifications to the existing setting will reset the disk layout!" +msgstr "" + +msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" +msgstr "" + +#, fuzzy +msgid "Save and exit" +msgstr "Configurar e sair" + +#, fuzzy +msgid "" +"{}\n" +"contains queued partitions, this will remove those, are you sure?" +msgstr "{} contem partições em fila, isto irá remover essas, tens a certeza?" + +#, fuzzy +msgid "No audio server" +msgstr "Escolhe um servidor de áudio" + +msgid "(default)" +msgstr "" + +#, fuzzy +msgid "Use ESC to skip" +msgstr "" +"Usa ESC para saltar\n" +"\n" + +msgid "" +"Use CTRL+C to reset current selection\n" +"\n" +msgstr "" + +#, fuzzy +msgid "Copy to: " +msgstr "Copiar para :" + +#, fuzzy +msgid "Edit: " +msgstr "Editar :" + +msgid "Key: " +msgstr "" + +#, fuzzy +msgid "Edit {}: " +msgstr "Editar :" + +msgid "Add: " +msgstr "" + +#, fuzzy +msgid "Value: " +msgstr "Valor :" + +msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" +msgstr "" + +msgid "Select one of the disks or skip and use /mnt as default" +msgstr "" + +#, fuzzy +msgid "Select which partitions to mark for formatting:" +msgstr "" +"{}\n" +"\n" +"Seleciona a partição a mascar para formatar" + +#~ msgid "Add :" +#~ msgstr "Adicionar :" + +#~ msgid "Value :" +#~ msgstr "Valor :" + +#~ msgid "Key :" +#~ msgstr "Chave :" + +#, python-brace-format +#~ msgid "Edit {origkey} :" +#~ msgstr "Editar {origkey} :" diff --git a/archinstall/locales/pt_BR/LC_MESSAGES/base.mo b/archinstall/locales/pt_BR/LC_MESSAGES/base.mo Binary files differnew file mode 100644 index 00000000..9c71d906 --- /dev/null +++ b/archinstall/locales/pt_BR/LC_MESSAGES/base.mo diff --git a/archinstall/locales/pt_BR/LC_MESSAGES/base.po b/archinstall/locales/pt_BR/LC_MESSAGES/base.po new file mode 100644 index 00000000..35db5f95 --- /dev/null +++ b/archinstall/locales/pt_BR/LC_MESSAGES/base.po @@ -0,0 +1,831 @@ +msgid "" +msgstr "" +"Last-Translator: @Cain-dev (cain-dev.github.io)\n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +msgid "[!] A log file has been created here: {} {}" +msgstr "[!] Um arquivo de log foi criado aqui: {} {}" + +msgid "" +" Please submit this issue (and file) to https://github.com/archlinux/" +"archinstall/issues" +msgstr "" +" Por favor, envie este problema (e o arquivo) para: " +"https://github.com/archlinux/archinstall/issues" + +msgid "Do you really want to abort?" +msgstr "Deseja realmente abortar?" + +msgid "And one more time for verification: " +msgstr "E mais uma vez para verificação: " + +msgid "Would you like to use swap on zram?" +msgstr "Deseja usar swap em zram?" + +msgid "Desired hostname for the installation: " +msgstr "Nome do computador (hostname) desejado para a instalação: " + +msgid "Username for required superuser with sudo privileges: " +msgstr "Nome de usuário requerido para superusuário com privilégios sudo: " + +msgid "Any additional users to install (leave blank for no users): " +msgstr "Algum outro usuário para adicionar (deixe em branco para ignorar): " + +msgid "Should this user be a superuser (sudoer)?" +msgstr "Este usuário deve ser um superusuário? (sudoer)?" + +msgid "Select a timezone" +msgstr "Selecione um fuso horário" + +msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" +msgstr "Prefere usar o GRUB como bootloader ao invés do systemd-boot?" + +msgid "Choose a bootloader" +msgstr "Escolha um bootloader" + +msgid "Choose an audio server" +msgstr "Escolha um servidor de áudio" + +msgid "" +"Only packages such as base, base-devel, 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." + +msgid "" +"If you desire a web browser, such as firefox or chromium, you may specify it " +"in the following prompt." +msgstr "" +"Se deseja um navegador web, como firefox ou chromium, pode especificá-lo " +"no próximo prompt." + +msgid "" +"Write additional packages to install (space separated, leave blank to skip): " +msgstr "" +"Digite pacotes adicionais para instalar (separados por espaço, deixe em branco para pular): " + +msgid "Copy ISO network configuration to installation" +msgstr "Copiar a configuração de rede da ISO para a instalação" + +msgid "" +"Use NetworkManager (necessary to configure internet graphically in GNOME and " +"KDE)" +msgstr "" +"Usar NetworkManager (necessário para configurar internet graficamente no GNOME e " +"KDE)" + +msgid "Select one network interface to configure" +msgstr "Selecione uma interface de rede para configurar" + +msgid "" +"Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" +msgstr "" +"Selecione qual modo configurar para \"{}\" ou ignore para usar o modo padrão \"{}\"" + +msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " +msgstr "Digite o IP e a subrede para {} (exemplo: 192.168.0.5/24): " + +msgid "Enter your gateway (router) IP address or leave blank for none: " +msgstr "Digite o seu IP de gateway (router) ou deixe em branco para nenhum: " + +msgid "Enter your DNS servers (space separated, blank for none): " +msgstr "Digite os servidores DNS (separados por espaço, deixe em branco para nenhum): " + +msgid "Select which filesystem your main partition should use" +msgstr "Selecione qual sistema de arquivos a partição principal deverá usar" + +msgid "Current partition layout" +msgstr "Layout de partições atual" + +msgid "" +"Select what to do with\n" +"{}" +msgstr "" +"Selecione o que fazer com \n" +"{}" + +msgid "Enter a desired filesystem type for the partition" +msgstr "Digite o tipo de sistema de arquivos desejado para a partição" + +msgid "Enter the start sector (percentage or block number, default: {}): " +msgstr "Digite o setor de início (porcentagem ou número do bloco, padrão: {}): " + +msgid "" +"Enter the end sector of the partition (percentage or block number, ex: {}): " +msgstr "" +"Digite o setor final da partição (porcentagem ou número de bloco, ex: {}): " + +msgid "{} contains queued partitions, this will remove those, are you sure?" +msgstr "{} contém partições em fila, isto irá removê-las, tem certeza?" + +msgid "" +"{}\n" +"\n" +"Select by index which partitions to delete" +msgstr "" +"{}\n" +"\n" +"Selecione por índice quais partições deletar" + +msgid "" +"{}\n" +"\n" +"Select by index which partition to mount where" +msgstr "" +"{}\n" +"\n" +"Selecione por índice quais partições montar em" + +msgid "" +" * Partition mount-points are relative to inside the installation, the boot " +"would be /boot as an example." +msgstr "" +" * Os pontos de montagem das partições são relativos aos de dentro da instalação, boot " +"por exemplo seria /boot." + + +msgid "Select where to mount partition (leave blank to remove mountpoint): " +msgstr "Selecione onde montar a partição (deixe em branco para remover o ponto de montagem): " + +msgid "" +"{}\n" +"\n" +"Select which partition to mask for formatting" +msgstr "" +"{}\n" +"\n" +"Selecione qual partição mascarar para formatar" + +msgid "" +"{}\n" +"\n" +"Select which partition to mark as encrypted" +msgstr "" +"{}\n" +"\n" +"Selecione qual partição marcar como encriptada" + +msgid "" +"{}\n" +"\n" +"Select which partition to mark as bootable" +msgstr "" +"{}\n" +"\n" +"Selecione qual partição marcar como bootável" + +msgid "" +"{}\n" +"\n" +"Select which partition to set a filesystem on" +msgstr "" +"{}\n" +"\n" +"Selecione qual partição definir um sistema de arquivos" + +msgid "Enter a desired filesystem type for the partition: " +msgstr "Insira o tipo de sistema de arquivos desejado para a partição: " + +msgid "Archinstall language" +msgstr "Idioma do Archinstall" + +msgid "Wipe all selected drives and use a best-effort default partition layout" +msgstr "Apagar todos os discos selecionados e usar um esquema de partições padrão de melhor desempenho" + +msgid "" +"Select what to do with each individual drive (followed by partition usage)" +msgstr "" +"Selecione o que fazer com cada disco individual (seguido de uso da partição)" + +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" + +msgid "Select keyboard layout" +msgstr "Selecione o layout de teclado" + +msgid "Select one of the regions to download packages from" +msgstr "Selecione uma das regiões de onde baixar os pacotes" + +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 o seu hardware AMD, talvez queira usar " +"a opção de drivers completamente open-source ou as opções da 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 o seu hardware Intel, talvez queira usar " +"a opção de drivers completamente open-source ou as opções da 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 o seu hardware Nvidia, talvez queira usar " +"o driver proprietário da Nvidia.\n" + +msgid "" +"\n" +"\n" +"Select a graphics driver or leave blank to install all open-source drivers" +msgstr "" +"\n" +"\n" +"Selecione um driver de vídeo ou deixe em branco para instalar os drivers completamente 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 \"{}\"" + +msgid "Choose which locale language to use" +msgstr "Escolha qual idioma de localização usar" + +msgid "Choose which locale encoding to use" +msgstr "Escolha qual codificação de localização usar" + +msgid "Select one of the values shown below: " +msgstr "Selecione uma dos valores mostrados abaixo: " + +msgid "Select one or more of the options below: " +msgstr "Selecione uma ou mais das opções abaixo: " + +msgid "Adding partition...." +msgstr "Adicionando partição...." + +msgid "" +"You need to enter a valid fs-type in order to continue. See `man parted` for " +"valid fs-type's." +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:" + +msgid "Error: Could not decode \"{}\" result as JSON:" +msgstr "Erro: Não foi possível decodificar \"{}\" como JSON:" + +msgid "Keyboard layout" +msgstr "Layout do teclado" + +msgid "Mirror region" +msgstr "Região do mirror" + +msgid "Locale language" +msgstr "Idioma de localização" + +msgid "Locale encoding" +msgstr "Codificação de localização" + +msgid "Drive(s)" +msgstr "Unidades de armazenamento" + +msgid "Disk layout" +msgstr "Layout da unidade" + +msgid "Encryption password" +msgstr "Senha de encriptação" + +msgid "Swap" +msgstr "Swap" + +msgid "Bootloader" +msgstr "Inicializador" + +msgid "Root password" +msgstr "Senha de root" + +msgid "Superuser account" +msgstr "Conta de superusuário" + +msgid "User account" +msgstr "Conta de usuário" + +msgid "Profile" +msgstr "Perfil" + +msgid "Audio" +msgstr "Áudio" + +msgid "Kernels" +msgstr "Kernels" + +msgid "Additional packages" +msgstr "Pacotes adicionais" + +msgid "Network configuration" +msgstr "Configuração de rede" + +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)" + +msgid "" +"You decided to skip harddrive selection\n" +"and will use whatever drive-setup is mounted at {} (experimental)\n" +"WARNING: Archinstall won't check the suitability of this setup\n" +"Do you wish to continue?" +msgstr "" +"Você decidiu ignorar a seleção de disco rídigo\n" +"e usar qualquer configuração de disco rígido montada em {} (experimental)\n" +"ATENÇÃO: O Archinstall não verifica a viabilidade desta configuração\n" +"Deseja continuar?" + +msgid "Re-using partition instance: {}" +msgstr "Reutilizando a instância da partição: {}" + +msgid "Create a new partition" +msgstr "Criar uma nova partição" + +msgid "Delete a partition" +msgstr "Deletar uma partição" + +msgid "Clear/Delete all partitions" +msgstr "Limpar/Deletar todas as partições" + +msgid "Assign mount-point for a partition" +msgstr "Atribuir um ponto de montagem para uma partição" + +msgid "Mark/Unmark a partition to be formatted (wipes data)" +msgstr "Marcar/Desmarcar uma partição para ser formatada (apaga os dados)" + +msgid "Mark/Unmark a partition as encrypted" +msgstr "Marcar/Desmarcar uma partição como encriptada" + +msgid "Mark/Unmark a partition as bootable (automatic for /boot)" +msgstr "Marcar/Desmarcar uma partição como bootável (automática para /boot)" + +msgid "Set desired filesystem for a partition" +msgstr "Definir o sistema de arquivos desejado para uma partição" + +msgid "Abort" +msgstr "Cancelar" + +msgid "Hostname" +msgstr "Nome do computador (hostname)" + +msgid "Not configured, unavailable unless setup manually" +msgstr "Não configurado, indisponível a não ser que seja configurado manualmente" + +msgid "Timezone" +msgstr "Fuso horário" + +msgid "Set/Modify the below options" +msgstr "Definir/Modificar as opções abaixo" + +msgid "Install" +msgstr "Instalar" + +msgid "" +"Use ESC to skip\n" +"\n" +msgstr "" +"Use ESC para pular\n" +"\n" + +msgid "Suggest partition layout" +msgstr "Sugerir esquema de partição" + +msgid "Enter a password: " +msgstr "Digite uma senha: " + +msgid "Enter a encryption password for {}" +msgstr "Digite uma senha de encriptação para {}" + +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: " + +msgid "Enter root password (leave blank to disable root): " +msgstr "Digite uma senha de root (deixe em branco para desativar root): " + +msgid "Password for user \"{}\": " +msgstr "Senha para o usuário \"{}\": " + +msgid "" +"Verifying that additional packages exist (this might take a few seconds)" +msgstr "" +"Verificando se existem pacotes adicionais (isto pode demorar alguns segundos)" + +msgid "" +"Would you like to use automatic time synchronization (NTP) with the default " +"time servers?\n" +msgstr "" +"Deseja usar sincronização de tempo automática (NTP) " +"com os servidores de tempo padrão?\n" + +msgid "" +"Hardware time and other post-configuration steps might be required in order " +"for NTP to work.\n" +"For more information, please check the Arch wiki" +msgstr "" +"A hora de hardware e outros passos de pós-configuração podem ser necessários " +"para que o NTP funcione.\n" +"Para mais informações, por favor visite a Arch wiki" + +msgid "Enter a username to create an additional user (leave blank to skip): " +msgstr "Digite um nome de usuário para criar um usuário adicional (deixe em branco para pular): " + +msgid "Use ESC to skip\n" +msgstr "Use ESC para pular\n" + +msgid "" +"\n" +" Choose an object from the list, and select one of the available actions for " +"it to execute" +msgstr "" +"\n" +" Escolha um objeto da lista, e selecione uma das ações disponíveis " +"para executar" + +msgid "Cancel" +msgstr "Cancelar" + +msgid "Confirm and exit" +msgstr "Confirmar e sair" + +msgid "Add" +msgstr "Adicionar" + +msgid "Copy" +msgstr "Copiar" + +msgid "Edit" +msgstr "Editar" + +msgid "Delete" +msgstr "Deletar" + +msgid "Select an action for < {} >" +msgstr "Selecione uma ação para < {} >" + +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 {}" + +msgid "" +"\n" +"This is your chosen configuration:" +msgstr "" +"\n" +"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á a rodando, aguarde no máximo até 10 minutos para terminar." + +msgid "" +"Pre-existing pacman lock never exited. Please clean up any existing pacman " +"sessions before using archinstall." +msgstr "" +"Pacman lock não terminou. Por favor, limpe as sessões " +"de pacman existentes antes de usar o archinstall." + +msgid "Choose which optional additional repositories to enable" +msgstr "Escolha quais repositórios adicionais opcionais ativar" + +msgid "Add a user" +msgstr "Adicionar usuário" + +msgid "Change password" +msgstr "Mudar senha" + +msgid "Promote/Demote user" +msgstr "Promover/Demover usuário" + +msgid "Delete User" +msgstr "Deletar usuário" + +msgid "" +"\n" +"Define a new user\n" +msgstr "" +"\n" +"Definir um novo usuário\n" + +msgid "User Name : " +msgstr "Nome de Usuário : " + +msgid "Should {} be a superuser (sudoer)?" +msgstr "{} deve ser um superusuário (sudoer)?" + +msgid "Define users with sudo privilege: " +msgstr "Defina usuários com privilégio sudo: " + +msgid "No network configuration" +msgstr "Nenhuma configuração de rede" + +msgid "Set desired subvolumes on a btrfs partition" +msgstr "Definir subvolumes desejados numa partição btrfs" + +msgid "" +"{}\n" +"\n" +"Select which partition to set subvolumes on" +msgstr "" +"{}\n" +"\n" +"Selecione em qual partição definir subvolumes" + +msgid "Manage btrfs subvolumes for current partition" +msgstr "Administrar subvolumes btrfs para a partição atual" + +msgid "No configuration" +msgstr "Nenhuma configuração" + +msgid "Save user configuration" +msgstr "Salvar configuração de usuário" + +msgid "Save user credentials" +msgstr "Salvar credenciais de usuário" + +msgid "Save disk layout" +msgstr "Salvar layout de disco" + +msgid "Save all" +msgstr "Salvar tudo" + +msgid "Choose which configuration to save" +msgstr "Escolha qual configuração salvar" + +msgid "Enter a directory for the configuration(s) to be saved: " +msgstr "Digite um diretório para as configurações serem salvas: " + +msgid "Not a valid directory: {}" +msgstr "Não é um diretorio válido: {}" + +msgid "The password you are using seems to be weak," +msgstr "A senha que está usando parece ser fraca," + +msgid "are you sure you want to use it?" +msgstr "tem certeza que deseja usá-la?" + +msgid "Optional repositories" +msgstr "Repositórios opcionais" + +msgid "Save configuration" +msgstr "Salvar configuração" + +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" + +msgid "Manage superuser accounts: " +msgstr "Administrar contas de superusuário: " + +msgid "Manage ordinary user accounts: " +msgstr "Administrar contas de usuário padrão: " + +msgid " Subvolume :{:16}" +msgstr " Subvolume :{:16}" + +msgid " mounted at {:16}" +msgstr " montado em {:16}" + +msgid " with option {}" +msgstr " com opção {}" + +msgid "" +"\n" +" Fill the desired values for a new subvolume \n" +msgstr "" +"\n" +" Preencha os valores desejados para um novo subvolume \n" + +msgid "Subvolume name " +msgstr "Nome do subvolume " + +msgid "Subvolume mountpoint" +msgstr "Ponto de montagem do subvolume" + +msgid "Subvolume options" +msgstr "Opções do subvolume" + +msgid "Save" +msgstr "Salvar" + +msgid "Subvolume name :" +msgstr "Nome do subvolume :" + +msgid "Select a mount point :" +msgstr "Selecione um ponto de montagem :" + +msgid "Select the desired subvolume options " +msgstr "Selecione as opções desejadas do subvolume " + +msgid "Define users with sudo privilege, by username: " +msgstr "Defina usuários com privilégio sudo, por nome de usuário: " + +msgid "[!] A log file has been created here: {}" +msgstr "[!] Um arquivo de log foi criado aqui: {}" + +msgid "Would you like to use BTRFS subvolumes with a default structure?" +msgstr "Deseja usar subvolumes BTRFS com a estrutura padrão?" + +msgid "Would you like to use BTRFS compression?" +msgstr "Deseja usar a compressão BTRFS?" + +msgid "Would you like to create a separate partition for /home?" +msgstr "Deseja criar uma partição separada para /home?" + +msgid "" +"The selected drives do not have the minimum capacity required for an " +"automatic suggestion\n" +msgstr "" +"As unidades selecionadas não tem a capacidade mínima para " +"sugestão automática\n" + +msgid "Minimum capacity for /home partition: {}GB\n" +msgstr "Capacidade mínima para partição /home : {}GB\n" + +msgid "Minimum capacity for Arch Linux partition: {}GB" +msgstr "Capacidade mínima para a partição do Arch Linux: {}GB" + +msgid "Continue" +msgstr "Continuar" + +msgid "yes" +msgstr "sim" + +msgid "no" +msgstr "não" + +msgid "set: {}" +msgstr "definir: {}" + +msgid "Manual configuration setting must be a list" +msgstr "O ajuste de configuração manual deve ser em lista" + +msgid "No iface specified for manual configuration" +msgstr "iface não especificado para configuração manual" + +msgid "Manual nic configuration with no auto DHCP requires an IP address" +msgstr "A configuração manual de NIC sem DHCP automático requer um endereço IP" + +msgid "Add interface" +msgstr "Adicionar interface" + +msgid "Edit interface" +msgstr "Editar interface" + +msgid "Delete interface" +msgstr "Deletar interface" + +msgid "Select interface to add" +msgstr "Selecione interface para adicionar" + +msgid "Manual configuration" +msgstr "Configuração manual" + +msgid "Mark/Unmark a partition as compressed (btrfs only)" +msgstr "Marcar/desmarcar a partição como comprimida (apenas btrfs)" + +msgid "" +"The password you are using seems to be weak, are you sure you want to use it?" +msgstr "" +"A senha que você está usando parece ser fraca, tem certeza que deseja utilizá-la?" + +msgid "" +"Provides a selection of desktop environments and tiling window managers, e." +"g. gnome, kde, sway" +msgstr "" +"Proporciona uma seleção de ambientes gráficos e gerenciadores de janela como por exemplo " +"gnome, kde, sway" + +msgid "Select your desired desktop environment" +msgstr "Selecione o ambiente gráfico desejado" + +msgid "" +"A very basic installation that allows you to customize Arch Linux as you see " +"fit." +msgstr "" +"Uma instalação bem básica que permite a você customizar o Arch Linux " +"como desejar." + +msgid "" +"Provides a selection of various server packages to install and enable, e.g. " +"httpd, nginx, mariadb" +msgstr "" +"Proporciona uma seleção de diversos pacotes de servidor para instalar e habilitar " +"como por exemplo httpd, nginx, mariadb" + +msgid "" +"Choose which servers to install, if none then a minimal installation wil be " +"done" +msgstr "" +"Selecione quais servidores instalar, se há nenhum uma instalação mínima será " +"feita" + +msgid "Installs a minimal system as well as xorg and graphics drivers." +msgstr "Instala um sistema mínimo assim como xorg e drivers de vídeo." + +msgid "Press Enter to continue." +msgstr "Tecle Enter para continuar." + +msgid "" +"Would you like to chroot into the newly created installation and perform " +"post-installation configuration?" +msgstr "" +"Deseja fazer chroot para a nova instalação e realizar " +"configurações pós-instalação?" + +msgid "Are you sure you want to reset this setting?" +msgstr "Tem certeza que desejar resetar essa configuração?" + +msgid "Select one or more hard drives to use and configure\n" +msgstr "Selecione uma ou mais unidades para usar e configurar\n" + +msgid "Any modifications to the existing setting will reset the disk layout!" +msgstr "Quaisquer modificações para configurações existentes vão resetar o layout de disco!" + +msgid "" +"If you reset the harddrive selection this will also reset the current disk " +"layout. Are you sure?" +msgstr "" +"Se você resetar a seleção de unidades isso também resetará o layout " +"da unidade atual. Tem certeza?" + +msgid "Save and exit" +msgstr "Salvar e sair" + +msgid "" +"{}\n" +"contains queued partitions, this will remove those, are you sure?" +msgstr "" +"{}\n" +"contém partições enfileiradas partitions, isso irá removê-las, tem certeza?" + +msgid "No audio server" +msgstr "Sem servidor de áudio" + +msgid "(default)" +msgstr "(padrão)" + +msgid "Use ESC to skip" +msgstr "Use ESC para pular" + +msgid "" +"Use CTRL+C to reset current selection\n" +"\n" +msgstr "" +"Use CTRL+C para resetar a seleção atual\n" +"\n" + +msgid "Copy to: " +msgstr "Copiar para: " + +msgid "Edit: " +msgstr "Editar: " + +msgid "Key: " +msgstr "Chave: " + +msgid "Edit {}: " +msgstr "Editar {}: " + +msgid "Add: " +msgstr "Adicionar: " + +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)" + +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" + +msgid "Select which partitions to mark for formatting:" +msgstr "Selecione quais partições marcar para formatar:" diff --git a/archinstall/locales/ru/LC_MESSAGES/base.mo b/archinstall/locales/ru/LC_MESSAGES/base.mo Binary files differnew file mode 100644 index 00000000..be3405fe --- /dev/null +++ b/archinstall/locales/ru/LC_MESSAGES/base.mo diff --git a/archinstall/locales/ru/LC_MESSAGES/base.po b/archinstall/locales/ru/LC_MESSAGES/base.po new file mode 100644 index 00000000..27f86e23 --- /dev/null +++ b/archinstall/locales/ru/LC_MESSAGES/base.po @@ -0,0 +1,910 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Aleksandr Melman <Alexmelman88@gmail.com>\n" +"Language-Team: \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" +"X-Generator: Poedit 3.0.1\n" + +msgid "[!] A log file has been created here: {} {}" +msgstr "[!] Здесь был создан файл журнала: {} {}" + +msgid "" +" Please submit this issue (and file) to https://github.com/archlinux/" +"archinstall/issues" +msgstr "" +" Пожалуйста, отправьте эту проблему (и файл) по адресу https://github.com/" +"archlinux/archinstall/issues" + +msgid "Do you really want to abort?" +msgstr "Вы действительно хотите прекратить?" + +msgid "And one more time for verification: " +msgstr "И еще раз для проверки: " + +msgid "Would you like to use swap on zram?" +msgstr "Вы хотите использовать подкачку на zram?" + +msgid "Desired hostname for the installation: " +msgstr "Желаемое имя хоста для установки: " + +msgid "Username for required superuser with sudo privileges: " +msgstr "" +"Имя пользователя для требуемого суперпользователя с привилегиями sudo: " + +msgid "Any additional users to install (leave blank for no users): " +msgstr "" +"Любые дополнительные пользователи для установки (оставьте пустым, если " +"пользователей нет): " + +msgid "Should this user be a superuser (sudoer)?" +msgstr "Должен ли этот пользователь быть суперпользователем (sudoer)?" + +msgid "Select a timezone" +msgstr "Выберите часовой пояс" + +msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" +msgstr "Вы хотите использовать GRUB в качестве загрузчика вместо systemd-boot?" + +msgid "Choose a bootloader" +msgstr "Выберите загрузчик" + +msgid "Choose an audio server" +msgstr "Выберите звуковой сервер" + +msgid "" +"Only packages such as base, base-devel, linux, linux-firmware, efibootmgr " +"and optional profile packages are installed." +msgstr "" +"Устанавливаются только такие пакеты, как base, base-devel, linux, linux-" +"firmware, efibootmgr и дополнительные пакеты профиля." + +msgid "" +"If you desire a web browser, such as firefox or chromium, you may specify it " +"in the following prompt." +msgstr "" +"Если вы хотите использовать веб-браузер, например, firefox или chromium, вы " +"можете указать его в следующем запросе." + +msgid "" +"Write additional packages to install (space separated, leave blank to skip): " +msgstr "" +"Напишите дополнительные пакеты для установки (разделите пробелами, оставьте " +"пустым, чтобы пропустить): " + +msgid "Copy ISO network configuration to installation" +msgstr "Копировать сетевую конфигурацию ISO в установку" + +msgid "" +"Use NetworkManager (necessary to configure internet graphically in GNOME and " +"KDE)" +msgstr "" +"Использовать NetworkManager (необходим для графической настройки интернета в " +"GNOME и KDE)" + +msgid "Select one network interface to configure" +msgstr "Выберите один сетевой интерфейс для настройки" + +msgid "" +"Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" +msgstr "" +"Выберите режим для конфигурации \"{}\" или пропустите, чтобы использовать " +"режим по умолчанию \"{}\"." + +msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " +msgstr "Введите IP-адрес и подсеть для {} (пример: 192.168.0.5/24): " + +msgid "Enter your gateway (router) IP address or leave blank for none: " +msgstr "" +"Введите IP-адрес вашего шлюза (маршрутизатора) или оставьте пустым, если его " +"нет: " + +msgid "Enter your DNS servers (space separated, blank for none): " +msgstr "Введите ваши DNS-серверы (через пробел, пустой - нет): " + +msgid "Select which filesystem your main partition should use" +msgstr "" +"Выберите, какую файловую систему должен использовать ваш основной раздел" + +msgid "Current partition layout" +msgstr "Текущая разметка разделов" + +msgid "" +"Select what to do with\n" +"{}" +msgstr "" +"Выберите, что делать с\n" +"{}" + +msgid "Enter a desired filesystem type for the partition" +msgstr "Введите желаемый тип файловой системы для раздела" + +msgid "Enter the start sector (percentage or block number, default: {}): " +msgstr "Введите начальный сектор (процент или номер блока, по умолчанию: {}): " + +msgid "" +"Enter the end sector of the partition (percentage or block number, ex: {}): " +msgstr "" +"Введите конечный сектор раздела (процент или номер блока, например: {}): " + +msgid "{} contains queued partitions, this will remove those, are you sure?" +msgstr "{} содержит разделы в очереди, это удалит их, вы уверены?" + +msgid "" +"{}\n" +"\n" +"Select by index which partitions to delete" +msgstr "" +"{}\n" +"\n" +"Выберите по индексу, какие разделы следует удалить" + +msgid "" +"{}\n" +"\n" +"Select by index which partition to mount where" +msgstr "" +"{}\n" +"\n" +"Выберите по индексу, какой раздел куда монтировать" + +msgid "" +" * Partition mount-points are relative to inside the installation, the boot " +"would be /boot as an example." +msgstr "" +" * Точки монтирования разделов являются относительными внутри установки, " +"например, загрузочный будет /boot." + +msgid "Select where to mount partition (leave blank to remove mountpoint): " +msgstr "" +"Выберите куда монтировать раздел (оставьте пустым, чтобы удалить точку " +"монтирования): " + +msgid "" +"{}\n" +"\n" +"Select which partition to mask for formatting" +msgstr "" +"{}\n" +"\n" +"Выберите, какой раздел следует отметить для форматирования" + +msgid "" +"{}\n" +"\n" +"Select which partition to mark as encrypted" +msgstr "" +"{}\n" +"\n" +"Выберите раздел, который следует пометить как зашифрованный" + +msgid "" +"{}\n" +"\n" +"Select which partition to mark as bootable" +msgstr "" +"{}\n" +"\n" +"Выберите раздел, который следует отметить как загрузочный" + +msgid "" +"{}\n" +"\n" +"Select which partition to set a filesystem on" +msgstr "" +"{}\n" +"\n" +"Выберите раздел, на котором будет установлена файловая система" + +msgid "Enter a desired filesystem type for the partition: " +msgstr "Введите желаемый тип файловой системы для раздела: " + +msgid "Archinstall language" +msgstr "Язык Archinstall" + +msgid "Wipe all selected drives and use a best-effort default partition layout" +msgstr "" +"Стереть все выбранные диски и использовать оптимальную схему разделов по " +"умолчанию" + +msgid "" +"Select what to do with each individual drive (followed by partition usage)" +msgstr "" +"Выберите, что делать с каждым отдельным диском (с последующим использованием " +"разделов)" + +msgid "Select what you wish to do with the selected block devices" +msgstr "Выберите, что вы хотите сделать с выбранными блочными устройствами" + +msgid "" +"This is a list of pre-programmed profiles, they might make it easier to " +"install things like desktop environments" +msgstr "" +"Это список предварительно запрограммированных профилей, они могут облегчить " +"установку таких вещей, как окружения рабочего стола" + +msgid "Select keyboard layout" +msgstr "Выберите раскладку клавиатуры" + +msgid "Select one of the regions to download packages from" +msgstr "Выберите один из регионов для загрузки пакетов" + +msgid "Select one or more hard drives to use and configure" +msgstr "" +"Выберите один или несколько жестких дисков для использования и настройте их" + +msgid "" +"For the best compatibility with your AMD hardware, you may want to use " +"either the all open-source or AMD / ATI options." +msgstr "" +"Для наилучшей совместимости с оборудованием AMD вы можете использовать либо " +"все варианты с открытым исходным кодом, либо 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 "" +"Для лучшей совместимости с оборудованием Intel вы можете использовать либо " +"все варианты с открытым исходным кодом, либо Intel.\n" + +msgid "" +"For the best compatibility with your Nvidia hardware, you may want to use " +"the Nvidia proprietary driver.\n" +msgstr "" +"Для наилучшей совместимости с оборудованием Nvidia вы можете использовать " +"проприетарный драйвер Nvidia.\n" + +msgid "" +"\n" +"\n" +"Select a graphics driver or leave blank to install all open-source drivers" +msgstr "" +"\n" +"\n" +"Выберите графический драйвер или оставьте пустым, чтобы установить все " +"драйверы с открытым исходным кодом" + +msgid "All open-source (default)" +msgstr "Все с открытым исходным кодом (по умолчанию)" + +msgid "Choose which kernels to use or leave blank for default \"{}\"" +msgstr "" +"Выберите, какие ядра использовать, или оставьте пустым по умолчанию \"{}\"." + +msgid "Choose which locale language to use" +msgstr "Выберите, какой язык локали использовать" + +msgid "Choose which locale encoding to use" +msgstr "Выберите, какую кодировку локали использовать" + +msgid "Select one of the values shown below: " +msgstr "Выберите одно из значений, показанных ниже: " + +msgid "Select one or more of the options below: " +msgstr "Выберите один или несколько из приведенных ниже вариантов: " + +msgid "Adding partition...." +msgstr "Добавление раздела...." + +msgid "" +"You need to enter a valid fs-type in order to continue. See `man parted` for " +"valid fs-type's." +msgstr "" +"Чтобы продолжить, вам нужно ввести действительный fs-тип. Смотрите `man " +"parted` для правильных fs-типов." + +msgid "Error: Listing profiles on URL \"{}\" resulted in:" +msgstr "Ошибка: Перечисление профилей по URL \"{}\" привело к:" + +msgid "Error: Could not decode \"{}\" result as JSON:" +msgstr "Ошибка: Не удалось декодировать результат \"{}\" как JSON:" + +msgid "Keyboard layout" +msgstr "Раскладка клавиатуры" + +msgid "Mirror region" +msgstr "Регион зеркала" + +msgid "Locale language" +msgstr "Язык локали" + +msgid "Locale encoding" +msgstr "Кодировка локали" + +msgid "Drive(s)" +msgstr "Диск(и)" + +msgid "Disk layout" +msgstr "Разметка диска" + +msgid "Encryption password" +msgstr "Пароль шифрования" + +msgid "Swap" +msgstr "Подкачка" + +msgid "Bootloader" +msgstr "Загрузчик" + +msgid "Root password" +msgstr "Пароль root" + +msgid "Superuser account" +msgstr "Учетная запись суперпользователя" + +msgid "User account" +msgstr "Учетная запись пользователя" + +msgid "Profile" +msgstr "Профиль" + +msgid "Audio" +msgstr "Звуковой сервер" + +msgid "Kernels" +msgstr "Ядра" + +msgid "Additional packages" +msgstr "Дополнительные пакеты" + +msgid "Network configuration" +msgstr "Настройка сети" + +msgid "Automatic time sync (NTP)" +msgstr "Автоматическая синхронизация времени (NTP)" + +msgid "Install ({} config(s) missing)" +msgstr "Установить ({} конфигурация(и) отсутствует)" + +msgid "" +"You decided to skip harddrive selection\n" +"and will use whatever drive-setup is mounted at {} (experimental)\n" +"WARNING: Archinstall won't check the suitability of this setup\n" +"Do you wish to continue?" +msgstr "" +"Вы решили пропустить выбор жесткого диска\n" +"и будете использовать любой диск, смонтированный по адресу {} " +"(экспериментально)\n" +"ПРЕДУПРЕЖДЕНИЕ: Archinstall не будет проверять пригодность этой установки.\n" +"Вы хотите продолжить?" + +msgid "Re-using partition instance: {}" +msgstr "Повторное использование экземпляра раздела: {}" + +msgid "Create a new partition" +msgstr "Создать новый раздел" + +msgid "Delete a partition" +msgstr "Удалить раздел" + +msgid "Clear/Delete all partitions" +msgstr "Очистить/удалить все разделы" + +msgid "Assign mount-point for a partition" +msgstr "Назначить точку монтирования для раздела" + +msgid "Mark/Unmark a partition to be formatted (wipes data)" +msgstr "" +"Пометить/снять отметку с раздела, который будет отформатирован (стирание " +"данных)" + +msgid "Mark/Unmark a partition as encrypted" +msgstr "Пометить/снять отметку с раздела как зашифрованный" + +msgid "Mark/Unmark a partition as bootable (automatic for /boot)" +msgstr "" +"Пометить/снять отметку с раздела как загрузочный (автоматически для /boot)" + +msgid "Set desired filesystem for a partition" +msgstr "Установите желаемую файловую систему для раздела" + +msgid "Abort" +msgstr "Прервать" + +msgid "Hostname" +msgstr "Имя хоста" + +msgid "Not configured, unavailable unless setup manually" +msgstr "Не настроен, недоступен, если не настроен вручную" + +msgid "Timezone" +msgstr "Часовой пояс" + +msgid "Set/Modify the below options" +msgstr "Установить/изменить следующие параметры" + +msgid "Install" +msgstr "Установить" + +msgid "" +"Use ESC to skip\n" +"\n" +msgstr "" +"Используйте ESC, чтобы пропустить\n" +"\n" + +msgid "Suggest partition layout" +msgstr "Предложить разметку разделов" + +msgid "Enter a password: " +msgstr "Введите пароль: " + +msgid "Enter a encryption password for {}" +msgstr "Введите пароль шифрования для {}" + +msgid "Enter disk encryption password (leave blank for no encryption): " +msgstr "" +"Введите пароль шифрования диска (оставьте пустым для отсутствия шифрования): " + +msgid "Create a required super-user with sudo privileges: " +msgstr "Создайте необходимого суперпользователя с привилегиями sudo: " + +msgid "Enter root password (leave blank to disable root): " +msgstr "Введите пароль root (оставьте пустым, чтобы отключить root): " + +msgid "Password for user \"{}\": " +msgstr "Пароль для пользователя \"{}\": " + +msgid "" +"Verifying that additional packages exist (this might take a few seconds)" +msgstr "" +"Проверка наличия дополнительных пакетов (это может занять несколько секунд)" + +msgid "" +"Would you like to use automatic time synchronization (NTP) with the default " +"time servers?\n" +msgstr "" +"Вы хотите использовать автоматическую синхронизацию времени (NTP) с " +"серверами времени по умолчанию?\n" + +msgid "" +"Hardware time and other post-configuration steps might be required in order " +"for NTP to work.\n" +"For more information, please check the Arch wiki" +msgstr "" +"Для работы NTP может потребоваться аппаратное время и другие шаги после " +"конфигурации.\n" +"Для получения дополнительной информации, пожалуйста, ознакомьтесь с ArchWiki" + +msgid "Enter a username to create an additional user (leave blank to skip): " +msgstr "" +"Введите имя пользователя для создания дополнительного пользователя (оставьте " +"пустым, чтобы пропустить): " + +msgid "Use ESC to skip\n" +msgstr "Используйте ESC, чтобы пропустить\n" + +msgid "" +"\n" +" Choose an object from the list, and select one of the available actions for " +"it to execute" +msgstr "" +"\n" +" Выберите объект из списка и выберите одно из доступных действий для его " +"выполнения" + +msgid "Cancel" +msgstr "Отменить" + +msgid "Confirm and exit" +msgstr "Подтвердить и выйти" + +msgid "Add" +msgstr "Добавить" + +msgid "Copy" +msgstr "Копировать" + +msgid "Edit" +msgstr "Редактировать" + +msgid "Delete" +msgstr "Удалить" + +msgid "Select an action for < {} >" +msgstr "Выберите действие для < {} >" + +msgid "Copy to new key:" +msgstr "Копировать в новый ключ:" + +msgid "Unknown nic type: {}. Possible values are {}" +msgstr "Неизвестный тип сетевого адаптера: {}. Возможные значения: {}" + +msgid "" +"\n" +"This is your chosen configuration:" +msgstr "" +"\n" +"Это выбранная вами конфигурация:" + +msgid "" +"Pacman is already running, waiting maximum 10 minutes for it to terminate." +msgstr "" +"Pacman уже запущен, ожидание его завершения составляет максимум 10 минут." + +msgid "" +"Pre-existing pacman lock never exited. Please clean up any existing pacman " +"sessions before using archinstall." +msgstr "" +"Существовавшая ранее блокировка pacman не завершилась. Пожалуйста, очистите " +"все существующие сессии pacman перед использованием archinstall." + +msgid "Choose which optional additional repositories to enable" +msgstr "Выберите, какие дополнительные репозитории следует включить" + +msgid "Add a user" +msgstr "Добавить пользователя" + +msgid "Change password" +msgstr "Изменить пароль" + +msgid "Promote/Demote user" +msgstr "Повысить/понизить пользователя" + +msgid "Delete User" +msgstr "Удалить пользователя" + +msgid "" +"\n" +"Define a new user\n" +msgstr "" +"\n" +"Укажите нового пользователя\n" + +msgid "User Name : " +msgstr "Имя пользователя: " + +msgid "Should {} be a superuser (sudoer)?" +msgstr "Должен ли {} быть суперпользователем (sudoer)?" + +msgid "Define users with sudo privilege: " +msgstr "Определите пользователей с привилегиями sudo: " + +msgid "No network configuration" +msgstr "Нет сетевой конфигурации" + +msgid "Set desired subvolumes on a btrfs partition" +msgstr "Установите желаемые подтома на раздел btrfs" + +msgid "" +"{}\n" +"\n" +"Select which partition to set subvolumes on" +msgstr "" +"{}\n" +"\n" +"Выберите раздел, на котором будут установлены подтома" + +msgid "Manage btrfs subvolumes for current partition" +msgstr "Управление подтомами btrfs для текущего раздела" + +msgid "No configuration" +msgstr "Отсутствует конфигурация" + +msgid "Save user configuration" +msgstr "Сохранить конфигурацию пользователя" + +msgid "Save user credentials" +msgstr "Сохранить учетные данные пользователя" + +msgid "Save disk layout" +msgstr "Сохранить разметку диска" + +msgid "Save all" +msgstr "Сохранить все" + +msgid "Choose which configuration to save" +msgstr "Выберите, какую конфигурацию сохранить" + +msgid "Enter a directory for the configuration(s) to be saved: " +msgstr "Введите каталог для сохранения конфигурации (-ций): " + +msgid "Not a valid directory: {}" +msgstr "Недействительный каталог: {}" + +msgid "The password you are using seems to be weak," +msgstr "Пароль, который вы используете, кажется слабым," + +msgid "are you sure you want to use it?" +msgstr "вы уверены, что хотите его использовать?" + +msgid "Optional repositories" +msgstr "Дополнительные репозитории" + +msgid "Save configuration" +msgstr "Сохранить конфигурацию" + +msgid "Missing configurations:\n" +msgstr "Отсутствующие конфигурации:\n" + +msgid "Either root-password or at least 1 superuser must be specified" +msgstr "" +"Должен быть указан либо пароль root, либо как минимум 1 суперпользователь" + +msgid "Manage superuser accounts: " +msgstr "Управление учетными записями суперпользователей: " + +msgid "Manage ordinary user accounts: " +msgstr "Управление учетными записями обычных пользователей: " + +msgid " Subvolume :{:16}" +msgstr " Подтом :{:16}" + +msgid " mounted at {:16}" +msgstr " смонтировано в {:16}" + +msgid " with option {}" +msgstr " с параметром {}" + +msgid "" +"\n" +" Fill the desired values for a new subvolume \n" +msgstr "" +"\n" +" Заполните нужные значения для нового подтома\n" + +msgid "Subvolume name " +msgstr "Имя подтома " + +msgid "Subvolume mountpoint" +msgstr "Точка монтирования подтома" + +msgid "Subvolume options" +msgstr "Параметры подтома" + +msgid "Save" +msgstr "Сохранить" + +msgid "Subvolume name :" +msgstr "Имя подтома :" + +msgid "Select a mount point :" +msgstr "Выберите точку монтирования:" + +msgid "Select the desired subvolume options " +msgstr "Выберите нужные параметры подтома " + +msgid "Define users with sudo privilege, by username: " +msgstr "Определите пользователей с привилегией sudo по имени пользователя: " + +msgid "[!] A log file has been created here: {}" +msgstr "[!] Здесь был создан файл журнала: {}" + +msgid "Would you like to use BTRFS subvolumes with a default structure?" +msgstr "Вы хотите использовать подтома BTRFS со структурой по умолчанию?" + +msgid "Would you like to use BTRFS compression?" +msgstr "Хотите ли вы использовать сжатие BTRFS?" + +msgid "Would you like to create a separate partition for /home?" +msgstr "Хотите ли вы создать отдельный раздел для /home?" + +msgid "" +"The selected drives do not have the minimum capacity required for an " +"automatic suggestion\n" +msgstr "" +"Выбранные диски не имеют минимальной емкости, необходимой для " +"автоматического предложения\n" + +msgid "Minimum capacity for /home partition: {}GB\n" +msgstr "Минимальный размер раздела /home: {}GB\n" + +msgid "Minimum capacity for Arch Linux partition: {}GB" +msgstr "Минимальный размер раздела Arch Linux: {}GB" + +msgid "Continue" +msgstr "Продолжить" + +msgid "yes" +msgstr "да" + +msgid "no" +msgstr "нет" + +msgid "set: {}" +msgstr "выбор: {}" + +msgid "Manual configuration setting must be a list" +msgstr "Ручная настройка конфигурации должна представлять собой список" + +msgid "No iface specified for manual configuration" +msgstr "Не указан iface для ручной настройки" + +msgid "Manual nic configuration with no auto DHCP requires an IP address" +msgstr "" +"Ручная конфигурация сетевого адаптера без автоматического DHCP требует IP-" +"адреса" + +msgid "Add interface" +msgstr "Добавить интерфейс" + +msgid "Edit interface" +msgstr "Редактировать интерфейс" + +msgid "Delete interface" +msgstr "Удалить интерфейс" + +msgid "Select interface to add" +msgstr "Выберите интерфейс для добавления" + +msgid "Manual configuration" +msgstr "Ручная конфигурация" + +msgid "Mark/Unmark a partition as compressed (btrfs only)" +msgstr "Пометить/снять отметку с раздела как сжатый (только для btrfs)" + +msgid "" +"The password you are using seems to be weak, are you sure you want to use it?" +msgstr "" +"Пароль, который вы используете, кажется слабым, вы уверены, что хотите его " +"использовать?" + +msgid "" +"Provides a selection of desktop environments and tiling window managers, e." +"g. gnome, kde, sway" +msgstr "" +"Предоставляет выбор окружений рабочего стола и тайловых оконных менеджеров, " +"например, gnome, kde, sway" + +msgid "Select your desired desktop environment" +msgstr "Выберите желаемое окружение рабочего стола" + +msgid "" +"A very basic installation that allows you to customize Arch Linux as you see " +"fit." +msgstr "" +"Очень базовая установка, позволяющая настроить Arch Linux по своему " +"усмотрению." + +msgid "" +"Provides a selection of various server packages to install and enable, e.g. " +"httpd, nginx, mariadb" +msgstr "" +"Предоставляет выбор различных пакетов сервера для установки и включения, " +"например, httpd, nginx, mariadb" + +msgid "" +"Choose which servers to install, if none then a minimal installation wil be " +"done" +msgstr "" +"Выберите серверы для установки, если их нет, то будет выполнена минимальная " +"установка" + +msgid "Installs a minimal system as well as xorg and graphics drivers." +msgstr "" +"Устанавливает минимальную систему, а также xorg и графические драйверы." + +msgid "Press Enter to continue." +msgstr "Нажмите Enter, чтобы продолжить." + +msgid "" +"Would you like to chroot into the newly created installation and perform " +"post-installation configuration?" +msgstr "" +"Хотите ли вы использовать chroot в новой созданной установке и выполнить " +"настройку после установки?" + +msgid "Are you sure you want to reset this setting?" +msgstr "Вы уверены, что хотите сбросить эту настройку?" + +msgid "Select one or more hard drives to use and configure\n" +msgstr "" +"Выберите один или несколько жестких дисков для использования и настройки\n" + +msgid "Any modifications to the existing setting will reset the disk layout!" +msgstr "" +"Любые изменения существующей настройки приведут к сбросу разметки диска!" + +msgid "" +"If you reset the harddrive selection this will also reset the current disk " +"layout. Are you sure?" +msgstr "" +"Если вы сбросите выбор жесткого диска, это также сбросит текущую разметку " +"диска. Вы уверены?" + +msgid "Save and exit" +msgstr "Сохранить и выйти" + +msgid "" +"{}\n" +"contains queued partitions, this will remove those, are you sure?" +msgstr "" +"{}\n" +"содержит разделы в очереди, это удалит их, вы уверены?" + +msgid "No audio server" +msgstr "Отсутствует звуковой сервер" + +msgid "(default)" +msgstr "(по умолчанию)" + +msgid "Use ESC to skip" +msgstr "Используйте ESC, чтобы пропустить" + +msgid "" +"Use CTRL+C to reset current selection\n" +"\n" +msgstr "" +"Используйте CTRL+C для сброса текущего выбора\n" +"\n" + +msgid "Copy to: " +msgstr "Копировать в: " + +msgid "Edit: " +msgstr "Редактировать: " + +msgid "Key: " +msgstr "Ключ: " + +msgid "Edit {}: " +msgstr "Редактировать {}: " + +msgid "Add: " +msgstr "Добавить: " + +msgid "Value: " +msgstr "Значение: " + +msgid "" +"You can skip selecting a drive and partitioning and use whatever drive-setup " +"is mounted at /mnt (experimental)" +msgstr "" +"Вы можете не выбирать диск и разметку и использовать любой диск, " +"смонтированный в /mnt (экспериментально)" + +msgid "Select one of the disks or skip and use /mnt as default" +msgstr "Выберите один из дисков или пропустите и используйте /mnt по умолчанию" + +msgid "Select which partitions to mark for formatting:" +msgstr "Выберите, какие разделы следует отметить для форматирования:" + +msgid "Use HSM to unlock encrypted drive" +msgstr "Использовать HSM для разблокировки зашифрованного диска" + +msgid "Device" +msgstr "Устройство" + +msgid "Size" +msgstr "Размер" + +msgid "Free space" +msgstr "Свободное место" + +msgid "Bus-type" +msgstr "Тип шины" + +msgid "" +"Either root-password or at least 1 user with sudo privileges must be " +"specified" +msgstr "" +"Должен быть указан либо пароль root, либо хотя бы 1 пользователь с " +"привилегиями sudo" + +msgid "Enter username (leave blank to skip): " +msgstr "Введите имя пользователя (оставьте пустым, чтобы пропустить): " + +msgid "The username you entered is invalid. Try again" +msgstr "Введенное вами имя пользователя недействительно. Попробуйте еще раз" + +msgid "Should \"{}\" be a superuser (sudo)?" +msgstr "Должен ли \"{}\" быть суперпользователем (sudo)?" + +#, python-brace-format +#~ msgid "Edit {origkey} :" +#~ msgstr "Редактировать {origkey}:" + +#~ msgid "Archinstall requires root privileges to run. See --help for more." +#~ msgstr "" +#~ "Для запуска Archinstall требуются привилегии root. Для получения " +#~ "дополнительной информации смотрите --help." + +#~ msgid " ! Formatting {archinstall.arguments['harddrives']} in " +#~ msgstr " ! Форматирование {archinstall.arguments['harddrives']} в " diff --git a/archinstall/locales/sv/LC_MESSAGES/base.mo b/archinstall/locales/sv/LC_MESSAGES/base.mo Binary files differindex ffe51655..b7999fbb 100644 --- a/archinstall/locales/sv/LC_MESSAGES/base.mo +++ b/archinstall/locales/sv/LC_MESSAGES/base.mo diff --git a/archinstall/locales/sv/LC_MESSAGES/base.po b/archinstall/locales/sv/LC_MESSAGES/base.po index eb5eb52d..2c587af5 100644 --- a/archinstall/locales/sv/LC_MESSAGES/base.po +++ b/archinstall/locales/sv/LC_MESSAGES/base.po @@ -12,107 +12,81 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 3.0.1\n" -#: lib/installer.py:144 lib/installer.py:152 msgid "[!] A log file has been created here: {} {}" msgstr "[!] En logg-fil har skapats här: {} {}" -#: lib/installer.py:145 lib/installer.py:153 msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "Vänligen rapportera detta fel (och logg-filen) till https://github.com/archlinux/archinstall/issues" +msgstr " Vänligen rapportera detta fel (och logg-filen) till https://github.com/archlinux/archinstall/issues" -#: lib/user_interaction.py:83 lib/user_interaction/utils.py:86 msgid "Do you really want to abort?" msgstr "Vill du verkligen avbryta?" -#: lib/user_interaction.py:101 lib/user_interaction.py:104 lib/user_interaction/utils.py:53 msgid "And one more time for verification: " msgstr "Och en gång till för verifikation: " -#: lib/user_interaction.py:272 lib/user_interaction.py:275 lib/user_interaction/system_conf.py:142 msgid "Would you like to use swap on zram?" msgstr "Vill du använda swap under zram?" -#: lib/user_interaction.py:285 lib/user_interaction.py:288 lib/user_interaction/general_conf.py:33 msgid "Desired hostname for the installation: " msgstr "Önskat 'hostname' för din installation: " -#: lib/user_interaction.py:290 lib/user_interaction.py:293 msgid "Username for required superuser with sudo privileges: " msgstr "Användarnamn för obligatoriska superanvändaren med sudo rättigheter: " -#: lib/user_interaction.py:310 lib/user_interaction.py:313 lib/user_interaction/manage_users_conf.py:167 msgid "Any additional users to install (leave blank for no users): " msgstr "Några ytterligare användare att installera (lämna tom när du är klar): " -#: lib/user_interaction.py:324 lib/user_interaction.py:327 msgid "Should this user be a superuser (sudoer)?" msgstr "Är detta en superanvändare (sudo-rättigheter)?" -#: lib/user_interaction.py:340 lib/user_interaction.py:343 lib/user_interaction.py:346 lib/user_interaction/general_conf.py:41 msgid "Select a timezone" msgstr "Välj en tidszon" -#: lib/user_interaction.py:354 lib/user_interaction.py:357 lib/user_interaction.py:360 lib/user_interaction.py:359 lib/user_interaction/system_conf.py:115 msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" msgstr "Vill du använda GRUB istället för systemd-boot som boot-loader?" -#: lib/user_interaction.py:364 lib/user_interaction.py:367 lib/user_interaction.py:370 lib/user_interaction.py:369 lib/user_interaction/system_conf.py:125 msgid "Choose a bootloader" msgstr "Välj en boot-loader" -#: lib/user_interaction.py:380 lib/user_interaction.py:383 lib/user_interaction.py:386 lib/user_interaction.py:385 lib/user_interaction/general_conf.py:53 msgid "Choose an audio server" msgstr "Välj en ljud-server" -#: lib/user_interaction.py:391 lib/user_interaction.py:394 lib/user_interaction.py:397 lib/user_interaction.py:396 lib/user_interaction/general_conf.py:138 msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." msgstr "Enbart paket som base, base-devel, linux, linux-firmware, efibootmgr och självvalda paket är installerade." -#: lib/user_interaction.py:392 lib/user_interaction.py:395 lib/user_interaction.py:398 lib/user_interaction.py:397 lib/user_interaction/general_conf.py:139 msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." msgstr "Om du önskar en webbläsare, exempelvis firefox eller chromium, bör du skriva in dom i följande fält." -#: lib/user_interaction.py:396 lib/user_interaction.py:399 lib/user_interaction.py:402 lib/user_interaction.py:401 lib/user_interaction/general_conf.py:143 msgid "Write additional packages to install (space separated, leave blank to skip): " msgstr "Skriv ytterligare paket som skall installeras (separerade med mellanslag, lämna tom för att skippa): " -#: lib/user_interaction.py:419 lib/user_interaction.py:422 lib/user_interaction.py:425 lib/user_interaction.py:424 lib/user_interaction/network_conf.py:25 msgid "Copy ISO network configuration to installation" msgstr "Kopiera nätverkskonfigurationen från ISO till installationen" -#: lib/user_interaction.py:420 lib/user_interaction.py:423 lib/user_interaction.py:426 lib/user_interaction.py:425 lib/user_interaction/network_conf.py:26 msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" msgstr "Använd NetworkManager (nödvändig för konfigurera internet i grafiska miljöerna GNOME och KDE)" -#: lib/user_interaction.py:428 lib/user_interaction.py:431 lib/user_interaction.py:434 lib/user_interaction.py:433 lib/user_interaction/network_conf.py:43 msgid "Select one network interface to configure" msgstr "Välj ett nätverkskort för konfigurering" -#: lib/user_interaction.py:441 lib/user_interaction.py:444 lib/user_interaction.py:447 lib/user_interaction.py:446 lib/user_interaction/network_conf.py:70 msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" msgstr "Välj vilket läge att konfigurera för \"{}\" eller använd standardläge \"{}\"" -#: lib/user_interaction.py:446 lib/user_interaction.py:449 lib/user_interaction.py:452 lib/user_interaction.py:451 lib/user_interaction/network_conf.py:75 msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " msgstr "Mata in IP och subnät för {} (exempelvis: 192.168.0.5/24): " -#: lib/user_interaction.py:461 lib/user_interaction.py:464 lib/user_interaction.py:467 lib/user_interaction.py:466 lib/user_interaction/network_conf.py:86 msgid "Enter your gateway (router) IP address or leave blank for none: " msgstr "Mata in IP-adress till gateway (router) eller lämna tom för ingen: " -#: lib/user_interaction.py:476 lib/user_interaction.py:479 lib/user_interaction.py:482 lib/user_interaction.py:481 lib/user_interaction/network_conf.py:102 msgid "Enter your DNS servers (space separated, blank for none): " msgstr "Mata in DNS-servrar (separerade med mellanslag, lämna tom för ingen): " -#: lib/user_interaction.py:510 lib/user_interaction.py:513 lib/user_interaction.py:516 lib/user_interaction.py:515 lib/user_interaction/disk_conf.py:23 msgid "Select which filesystem your main partition should use" msgstr "Välj vilket filsystem din huvudpartition skall använda" -#: lib/user_interaction.py:556 lib/user_interaction.py:559 lib/user_interaction.py:562 lib/user_interaction.py:561 lib/user_interaction/partitioning_conf.py:64 lib/user_interaction/partitioning_conf.py:63 msgid "Current partition layout" msgstr "Nuvarande partioneringslayout" -#: lib/user_interaction.py:607 lib/user_interaction.py:614 lib/user_interaction.py:617 lib/user_interaction.py:620 lib/user_interaction.py:619 lib/user_interaction/partitioning_conf.py:145 lib/user_interaction/partitioning_conf.py:146 msgid "" "Select what to do with\n" "{}" @@ -120,23 +94,18 @@ msgstr "" "Välj vad du vill göra med\n" "{}" -#: lib/user_interaction.py:624 lib/user_interaction.py:709 lib/user_interaction.py:631 lib/user_interaction.py:716 lib/user_interaction.py:634 lib/user_interaction.py:719 lib/user_interaction.py:637 lib/user_interaction.py:722 lib/user_interaction.py:636 lib/user_interaction.py:721 lib/user_interaction/partitioning_conf.py:162 lib/user_interaction/partitioning_conf.py:255 lib/user_interaction/partitioning_conf.py:165 lib/user_interaction/partitioning_conf.py:260 msgid "Enter a desired filesystem type for the partition" msgstr "Mata in önskad filsystemtyp för partition" -#: lib/user_interaction.py:626 lib/user_interaction.py:633 lib/user_interaction.py:636 lib/user_interaction.py:639 lib/user_interaction.py:638 lib/user_interaction/partitioning_conf.py:164 lib/user_interaction/partitioning_conf.py:167 msgid "Enter the start sector (percentage or block number, default: {}): " msgstr "Mata in startsektor (procent eller block-nummer, standard: {}): " -#: lib/user_interaction.py:635 lib/user_interaction.py:642 lib/user_interaction.py:645 lib/user_interaction.py:648 lib/user_interaction.py:647 lib/user_interaction/partitioning_conf.py:174 lib/user_interaction/partitioning_conf.py:177 msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " msgstr "Mata in slutsektor för partitionen (procent eller block-nummer, ex: {}): " -#: lib/user_interaction.py:661 lib/user_interaction.py:668 lib/user_interaction.py:671 lib/user_interaction.py:674 lib/user_interaction.py:673 lib/user_interaction/partitioning_conf.py:203 lib/user_interaction/partitioning_conf.py:208 msgid "{} contains queued partitions, this will remove those, are you sure?" msgstr "{} innehåller uppköade partitionen och detta kommer ta bort dessa. Är du säker?" -#: lib/user_interaction.py:674 lib/user_interaction.py:681 lib/user_interaction.py:684 lib/user_interaction.py:687 lib/user_interaction.py:686 lib/user_interaction/partitioning_conf.py:216 lib/user_interaction/partitioning_conf.py:221 msgid "" "{}\n" "\n" @@ -146,7 +115,6 @@ msgstr "" "\n" "Välj vilket partitionsindex du vill ta bort" -#: lib/user_interaction.py:682 lib/user_interaction.py:689 lib/user_interaction.py:692 lib/user_interaction.py:695 lib/user_interaction.py:694 lib/user_interaction/partitioning_conf.py:226 lib/user_interaction/partitioning_conf.py:231 msgid "" "{}\n" "\n" @@ -156,15 +124,12 @@ msgstr "" "\n" "Välj vilket partitionsindex du vill montera vart" -#: lib/user_interaction.py:686 lib/user_interaction.py:693 lib/user_interaction.py:696 lib/user_interaction.py:699 lib/user_interaction.py:698 lib/user_interaction/partitioning_conf.py:231 lib/user_interaction/partitioning_conf.py:236 msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "* Partitionens monteringsplats är relativa till insidan av installationen, boot är exempelvis /boot." +msgstr " * Partitionens monteringsplats är relativa till insidan av installationen, boot är exempelvis /boot." -#: lib/user_interaction.py:687 lib/user_interaction.py:694 lib/user_interaction.py:697 lib/user_interaction.py:700 lib/user_interaction.py:699 lib/user_interaction/partitioning_conf.py:233 lib/user_interaction/partitioning_conf.py:238 msgid "Select where to mount partition (leave blank to remove mountpoint): " msgstr "Välj vart du vill montera partitionen (lämna tom för att ta bort montering): " -#: lib/user_interaction.py:698 lib/user_interaction.py:705 lib/user_interaction.py:708 lib/user_interaction.py:711 lib/user_interaction.py:710 lib/user_interaction/partitioning_conf.py:244 lib/user_interaction/partitioning_conf.py:249 msgid "" "{}\n" "\n" @@ -174,7 +139,6 @@ msgstr "" "\n" "Välj vilken partition som skall markeras för formatering" -#: lib/user_interaction.py:717 lib/user_interaction.py:724 lib/user_interaction.py:727 lib/user_interaction.py:730 lib/user_interaction.py:729 lib/user_interaction/partitioning_conf.py:265 lib/user_interaction/partitioning_conf.py:270 msgid "" "{}\n" "\n" @@ -184,7 +148,6 @@ msgstr "" "\n" "Välj vilken partition som skall markeras för kryptering" -#: lib/user_interaction.py:725 lib/user_interaction.py:732 lib/user_interaction.py:735 lib/user_interaction.py:738 lib/user_interaction.py:737 lib/user_interaction/partitioning_conf.py:274 lib/user_interaction/partitioning_conf.py:279 msgid "" "{}\n" "\n" @@ -194,7 +157,6 @@ msgstr "" "\n" "Välj vilken partition som skall markeras som bootbar" -#: lib/user_interaction.py:732 lib/user_interaction.py:739 lib/user_interaction.py:742 lib/user_interaction.py:745 lib/user_interaction.py:744 lib/user_interaction/partitioning_conf.py:282 lib/user_interaction/partitioning_conf.py:287 msgid "" "{}\n" "\n" @@ -204,55 +166,42 @@ msgstr "" "\n" "Välj vilken partition som du vill välja filsystem till" -#: lib/user_interaction.py:739 lib/user_interaction.py:746 lib/user_interaction.py:749 lib/user_interaction.py:752 lib/user_interaction.py:751 lib/user_interaction/partitioning_conf.py:289 lib/user_interaction/partitioning_conf.py:294 msgid "Enter a desired filesystem type for the partition: " msgstr "Mata in ett önskat filsystem för partitionen: " -#: lib/user_interaction.py:760 lib/menu/selection_menu.py:141 lib/user_interaction.py:767 lib/menu/selection_menu.py:139 lib/menu/selection_menu.py:143 lib/user_interaction.py:770 lib/user_interaction.py:773 lib/user_interaction.py:772 lib/menu/selection_menu.py:407 lib/menu/selection_menu.py:415 lib/menu/selection_menu.py:17 lib/user_interaction/general_conf.py:105 lib/user_interaction/global_menu.py:43 lib/menu/selection_menu.py:53 lib/menu/selection_menu.py:463 lib/menu/global_menu.py:43 -msgid "Select Archinstall language" -msgstr "Välj språk för detta gränssnitt" +msgid "Archinstall language" +msgstr "Språk för detta gränssnitt" -#: lib/user_interaction.py:765 lib/user_interaction.py:772 lib/user_interaction.py:775 lib/user_interaction.py:778 lib/user_interaction.py:777 lib/user_interaction/disk_conf.py:40 msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Töm alla partitioner och använd en generiskt rekommenderad partitionslayout." +msgstr "Töm alla partitioner och använd en generiskt rekommenderad partitionslayout" -#: lib/user_interaction.py:766 lib/user_interaction.py:773 lib/user_interaction.py:776 lib/user_interaction.py:779 lib/user_interaction.py:778 lib/user_interaction/disk_conf.py:41 msgid "Select what to do with each individual drive (followed by partition usage)" msgstr "Välj vad som skall hända med varje individuell hårddisk (följt av partitionsanvändning)" -#: lib/user_interaction.py:769 lib/user_interaction.py:770 lib/user_interaction.py:777 lib/user_interaction.py:780 lib/user_interaction.py:783 lib/user_interaction.py:782 lib/user_interaction/disk_conf.py:45 msgid "Select what you wish to do with the selected block devices" msgstr "Välj vad du önskar göra med valda hårddiskarna" -#: lib/user_interaction.py:822 lib/user_interaction.py:823 lib/user_interaction.py:830 lib/user_interaction.py:833 lib/user_interaction.py:836 lib/user_interaction.py:835 lib/user_interaction/general_conf.py:126 msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "Detta är en lista med förprogrammerade profiler, dom kan göra installation av exempelvis skrivbordsmiljöer lite enklare." +msgstr "Detta är en lista med förprogrammerade profiler, dom kan göra installation av exempelvis skrivbordsmiljöer lite enklare" -#: lib/user_interaction.py:846 lib/user_interaction.py:847 lib/user_interaction.py:854 lib/user_interaction.py:857 lib/user_interaction.py:860 lib/user_interaction.py:859 lib/user_interaction/general_conf.py:71 -msgid "Select Keyboard layout" +msgid "Select keyboard layout" msgstr "Välj tangentbordslayout" -#: lib/user_interaction.py:861 lib/user_interaction.py:862 lib/user_interaction.py:869 lib/user_interaction.py:872 lib/user_interaction.py:875 lib/user_interaction.py:874 lib/user_interaction/general_conf.py:92 msgid "Select one of the regions to download packages from" msgstr "Välj en av regionerna för att ladda ner paket ifrån" -#: lib/user_interaction.py:883 lib/user_interaction.py:884 lib/user_interaction.py:891 lib/user_interaction.py:894 lib/user_interaction.py:897 lib/user_interaction.py:896 lib/user_interaction/system_conf.py:52 msgid "Select one or more hard drives to use and configure" msgstr "Välj en eller flera hårddiskar som skall användas och konfigureras" -#: lib/user_interaction.py:910 lib/user_interaction.py:911 lib/user_interaction.py:918 lib/user_interaction.py:921 lib/user_interaction.py:924 lib/user_interaction.py:923 lib/user_interaction/system_conf.py:80 msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." msgstr "För bästa kompabilitet med din AMD-hårdvara, vill du förmodligen använda antingen \"open-source\" eller \"AMD/ATI\" valet." -#: lib/user_interaction.py:912 lib/user_interaction.py:913 lib/user_interaction.py:920 lib/user_interaction.py:923 lib/user_interaction.py:926 lib/user_interaction.py:925 lib/user_interaction/system_conf.py:84 msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" msgstr "För bästa kompabilitet med din Intel-hårdvara, vill du förmodligen använda antingen \"open-source\" eller \"Intel\" valet.\n" -#: lib/user_interaction.py:914 lib/user_interaction.py:915 lib/user_interaction.py:922 lib/user_interaction.py:925 lib/user_interaction.py:928 lib/user_interaction.py:927 lib/user_interaction/system_conf.py:88 msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" msgstr "För bästa kompabilitet med din nVidia-hårdvara, vill du förmodligen använda antingen \"nVidia priprieetary driver\".\n" -#: lib/user_interaction.py:917 lib/user_interaction.py:918 lib/user_interaction.py:925 lib/user_interaction.py:928 lib/user_interaction.py:931 lib/user_interaction.py:930 lib/user_interaction/system_conf.py:92 msgid "" "\n" "\n" @@ -262,123 +211,93 @@ msgstr "" "\n" "Välj en grafikdrivrutin eller lämna blank för att installera alla med publika drivrutiner" -#: lib/user_interaction.py:921 lib/user_interaction.py:922 lib/user_interaction.py:929 lib/user_interaction.py:932 lib/user_interaction.py:935 lib/user_interaction.py:934 lib/user_interaction/system_conf.py:96 msgid "All open-source (default)" msgstr "Alla med öppen mjukvara (standardvalet)" -#: lib/user_interaction.py:940 lib/user_interaction.py:941 lib/user_interaction.py:948 lib/user_interaction.py:951 lib/user_interaction.py:954 lib/user_interaction.py:953 lib/user_interaction/system_conf.py:28 msgid "Choose which kernels to use or leave blank for default \"{}\"" msgstr "Välj vilken Linux-kernel du vill använda, lämna tomt för att använda \"{}\"" -#: lib/user_interaction.py:954 lib/user_interaction.py:955 lib/user_interaction.py:962 lib/user_interaction.py:965 lib/user_interaction.py:968 lib/user_interaction.py:967 lib/user_interaction/locale_conf.py:16 msgid "Choose which locale language to use" msgstr "Välj vilket språk du vill använda" -#: lib/user_interaction.py:968 lib/user_interaction.py:969 lib/user_interaction.py:976 lib/user_interaction.py:979 lib/user_interaction.py:982 lib/user_interaction.py:981 lib/user_interaction/locale_conf.py:29 msgid "Choose which locale encoding to use" msgstr "Välj vilken teckenuppsättning du vill använda" -#: lib/user_interaction.py:1009 lib/user_interaction.py:1010 lib/user_interaction.py:1017 lib/user_interaction.py:1020 lib/user_interaction.py:1023 lib/user_interaction.py:1022 lib/user_interaction/backwards_compatible_conf.py:49 msgid "Select one of the values shown below: " msgstr "Välj en av alternativen nedan: " -#: lib/user_interaction.py:1050 lib/user_interaction.py:1051 lib/user_interaction.py:1058 lib/user_interaction.py:1061 lib/user_interaction.py:1064 lib/user_interaction.py:1063 lib/user_interaction/backwards_compatible_conf.py:88 msgid "Select one or more of the options below: " msgstr "Välj ett eller flera av följande val: " -#: lib/disk/filesystem.py:86 lib/disk/filesystem.py:87 msgid "Adding partition...." msgstr "Skapar en partition...." -#: lib/disk/filesystem.py:139 lib/disk/filesystem.py:141 lib/disk/filesystem.py:142 msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." msgstr "Du måste mata in en supporterad filsystem-typ för att fortsätta. Kör `man parted` för supporterade filsystem." -#: lib/profiles.py:89 lib/profiles.py:90 msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Fel: Listning av profiler på \"{}\" resulterade i: " +msgstr "Fel: Listning av profiler på \"{}\" resulterade i:" -#: lib/profiles.py:92 lib/profiles.py:93 msgid "Error: Could not decode \"{}\" result as JSON:" msgstr "Fel: Kunde inte tyda \"{}\" resultatet som JSON:" -#: lib/menu/selection_menu.py:146 lib/menu/selection_menu.py:144 lib/menu/selection_menu.py:148 lib/menu/selection_menu.py:412 lib/menu/selection_menu.py:420 lib/user_interaction/global_menu.py:48 lib/menu/selection_menu.py:468 lib/menu/global_menu.py:48 -msgid "Select keyboard layout" -msgstr "Välj en tangentbordslayout" +msgid "Keyboard layout" +msgstr "Tangentbordslayout" -#: lib/menu/selection_menu.py:149 lib/menu/selection_menu.py:147 lib/menu/selection_menu.py:151 lib/menu/selection_menu.py:415 lib/menu/selection_menu.py:423 lib/user_interaction/global_menu.py:51 lib/menu/selection_menu.py:471 lib/menu/global_menu.py:51 -msgid "Select mirror region" -msgstr "Välj en region för paketsynk" +msgid "Mirror region" +msgstr "Region för paketsynk" -#: lib/menu/selection_menu.py:154 lib/menu/selection_menu.py:152 lib/menu/selection_menu.py:156 lib/menu/selection_menu.py:420 lib/menu/selection_menu.py:428 lib/user_interaction/global_menu.py:56 lib/menu/selection_menu.py:476 lib/menu/global_menu.py:56 -msgid "Select locale language" -msgstr "Välj vilket språk du vill använda" +msgid "Locale language" +msgstr "Språk du vill använda" -#: lib/menu/selection_menu.py:156 lib/menu/selection_menu.py:154 lib/menu/selection_menu.py:158 lib/menu/selection_menu.py:422 lib/menu/selection_menu.py:430 lib/user_interaction/global_menu.py:58 lib/menu/selection_menu.py:478 lib/menu/global_menu.py:58 -msgid "Select locale encoding" -msgstr "Välj vilken teckenuppsättning du vill använda" +msgid "Locale encoding" +msgstr "Teckenuppsättning du vill använda" -#: lib/menu/selection_menu.py:159 lib/menu/selection_menu.py:157 lib/menu/selection_menu.py:161 lib/menu/selection_menu.py:425 lib/menu/selection_menu.py:433 lib/user_interaction/global_menu.py:61 lib/menu/selection_menu.py:481 lib/menu/global_menu.py:61 -msgid "Select harddrives" -msgstr "Välj hårddiskar" +msgid "Drive(s)" +msgstr "Hårddiskar" -#: lib/menu/selection_menu.py:163 lib/menu/selection_menu.py:161 lib/menu/selection_menu.py:165 lib/menu/selection_menu.py:429 lib/menu/selection_menu.py:437 lib/user_interaction/global_menu.py:65 lib/menu/selection_menu.py:485 lib/menu/global_menu.py:65 msgid "Select disk layout" msgstr "Välj hårddisk-layout" -#: lib/menu/selection_menu.py:171 lib/menu/selection_menu.py:169 lib/menu/selection_menu.py:173 lib/menu/selection_menu.py:437 lib/menu/selection_menu.py:445 lib/user_interaction/global_menu.py:73 lib/menu/selection_menu.py:493 lib/menu/global_menu.py:73 msgid "Set encryption password" msgstr "Välj ett krypterings-lösenord" -#: lib/menu/selection_menu.py:177 lib/menu/selection_menu.py:175 lib/menu/selection_menu.py:179 lib/menu/selection_menu.py:443 lib/menu/selection_menu.py:451 lib/user_interaction/global_menu.py:79 lib/menu/selection_menu.py:499 lib/menu/global_menu.py:79 -msgid "Use swap" -msgstr "Använda 'swap'?" +msgid "Swap" +msgstr "Swap" -#: lib/menu/selection_menu.py:182 lib/menu/selection_menu.py:180 lib/menu/selection_menu.py:184 lib/menu/selection_menu.py:448 lib/menu/selection_menu.py:456 lib/user_interaction/global_menu.py:84 lib/menu/selection_menu.py:504 lib/menu/global_menu.py:84 -msgid "Select bootloader" -msgstr "Välj en boot-loader" +msgid "Bootloader" +msgstr "Boot-loader" -#: lib/menu/selection_menu.py:188 lib/menu/selection_menu.py:186 lib/menu/selection_menu.py:190 lib/menu/selection_menu.py:454 lib/menu/selection_menu.py:462 lib/user_interaction/global_menu.py:95 lib/menu/selection_menu.py:515 lib/menu/global_menu.py:95 -msgid "Set root password" -msgstr "Välj ett root-lösenord" +msgid "root password" +msgstr "root-lösenord" -#: lib/menu/selection_menu.py:193 lib/menu/selection_menu.py:191 lib/menu/selection_menu.py:195 lib/menu/selection_menu.py:459 lib/menu/selection_menu.py:467 lib/user_interaction/global_menu.py:100 lib/menu/selection_menu.py:520 lib/menu/global_menu.py:100 -msgid "Specify superuser account" -msgstr "Skapa superanvändar-konto" +msgid "Superuser account" +msgstr "Superanvändar-konto" -#: lib/menu/selection_menu.py:199 lib/menu/selection_menu.py:197 lib/menu/selection_menu.py:201 lib/menu/selection_menu.py:465 lib/menu/selection_menu.py:473 lib/user_interaction/global_menu.py:107 lib/menu/selection_menu.py:528 lib/menu/global_menu.py:107 -msgid "Specify user account" -msgstr "Skapa användarkonto" +msgid "User account" +msgstr "Användarkonto" -#: lib/menu/selection_menu.py:205 lib/menu/selection_menu.py:203 lib/menu/selection_menu.py:207 lib/menu/selection_menu.py:471 lib/menu/selection_menu.py:479 lib/user_interaction/global_menu.py:114 lib/menu/selection_menu.py:535 lib/menu/global_menu.py:114 -msgid "Specify profile" -msgstr "Välj en profil" +msgid "Profile" +msgstr "Profil" -#: lib/menu/selection_menu.py:210 lib/menu/selection_menu.py:208 lib/menu/selection_menu.py:212 lib/menu/selection_menu.py:476 lib/menu/selection_menu.py:484 lib/user_interaction/global_menu.py:119 lib/menu/selection_menu.py:540 lib/menu/global_menu.py:119 -msgid "Select audio" -msgstr "Välj ljud mjukvara" +msgid "Audio" +msgstr "Ljud mjukvara" -#: lib/menu/selection_menu.py:214 lib/menu/selection_menu.py:212 lib/menu/selection_menu.py:216 lib/menu/selection_menu.py:480 lib/menu/selection_menu.py:488 lib/user_interaction/global_menu.py:123 lib/menu/selection_menu.py:544 lib/menu/global_menu.py:123 -msgid "Select kernels" -msgstr "Välj Linux-kernel" +msgid "Kernels" +msgstr "Linux-kernels" -#: lib/menu/selection_menu.py:219 lib/menu/selection_menu.py:217 lib/menu/selection_menu.py:221 lib/menu/selection_menu.py:485 lib/menu/selection_menu.py:493 lib/user_interaction/global_menu.py:128 lib/menu/selection_menu.py:549 lib/menu/global_menu.py:128 -msgid "Additional packages to install" -msgstr "Välj extra paket att installera" +msgid "Additional packages" +msgstr "Extra paket" -#: lib/menu/selection_menu.py:224 lib/menu/selection_menu.py:222 lib/menu/selection_menu.py:226 lib/menu/selection_menu.py:490 lib/menu/selection_menu.py:498 lib/user_interaction/global_menu.py:139 lib/menu/selection_menu.py:560 lib/menu/global_menu.py:139 -msgid "Configure network" +msgid "Network configuration" msgstr "Konfigurera nätverk" -#: lib/menu/selection_menu.py:232 lib/menu/selection_menu.py:230 lib/menu/selection_menu.py:234 lib/menu/selection_menu.py:498 lib/menu/selection_menu.py:506 lib/user_interaction/global_menu.py:150 lib/menu/selection_menu.py:571 lib/menu/global_menu.py:150 -msgid "Set automatic time sync (NTP)" -msgstr "Aktivera automatisk tidssynk (NTP)" +msgid "Automatic time sync (NTP)" +msgstr "Automatisk tidssynk (NTP)" -#: lib/menu/selection_menu.py:310 lib/menu/selection_menu.py:308 lib/menu/selection_menu.py:315 lib/menu/selection_menu.py:527 lib/menu/selection_menu.py:535 lib/user_interaction/global_menu.py:187 lib/menu/selection_menu.py:608 lib/menu/global_menu.py:187 msgid "Install ({} config(s) missing)" msgstr "Installera ({} inställningar saknas)" -#: lib/menu/selection_menu.py:373 lib/menu/selection_menu.py:371 lib/menu/selection_menu.py:378 lib/menu/selection_menu.py:591 lib/menu/selection_menu.py:599 lib/user_interaction/global_menu.py:249 lib/menu/selection_menu.py:669 lib/menu/global_menu.py:249 msgid "" "You decided to skip harddrive selection\n" "and will use whatever drive-setup is mounted at {} (experimental)\n" @@ -390,67 +309,51 @@ msgstr "" "Varning: Archinstall kommer inte kontrollera lämpligheten i diskvalet.\n" "Vill du fortsätta?" -#: lib/disk/filesystem.py:97 lib/disk/filesystem.py:98 msgid "Re-using partition instance: {}" msgstr "Återanvänder disk-instans: {}" -#: lib/user_interaction.py:590 lib/user_interaction.py:593 lib/user_interaction.py:596 lib/user_interaction.py:595 lib/user_interaction/partitioning_conf.py:119 lib/user_interaction/partitioning_conf.py:120 msgid "Create a new partition" msgstr "Skapa en ny partition" -#: lib/user_interaction.py:592 lib/user_interaction.py:595 lib/user_interaction.py:598 lib/user_interaction.py:597 lib/user_interaction/partitioning_conf.py:121 lib/user_interaction/partitioning_conf.py:122 msgid "Delete a partition" msgstr "Ta bort en partition" -#: lib/user_interaction.py:593 lib/user_interaction.py:596 lib/user_interaction.py:599 lib/user_interaction.py:598 lib/user_interaction/partitioning_conf.py:122 lib/user_interaction/partitioning_conf.py:123 msgid "Clear/Delete all partitions" msgstr "Ränsa alla partitioner" -#: lib/user_interaction.py:594 lib/user_interaction.py:597 lib/user_interaction.py:600 lib/user_interaction.py:599 lib/user_interaction/partitioning_conf.py:123 lib/user_interaction/partitioning_conf.py:124 msgid "Assign mount-point for a partition" msgstr "Välj monteringspunkt för en partition" -#: lib/user_interaction.py:595 lib/user_interaction.py:598 lib/user_interaction.py:601 lib/user_interaction.py:600 lib/user_interaction/partitioning_conf.py:124 lib/user_interaction/partitioning_conf.py:125 msgid "Mark/Unmark a partition to be formatted (wipes data)" msgstr "Markera/Avmarkera en partition för formatering (tar bort alla data)" -#: lib/user_interaction.py:596 lib/user_interaction.py:599 lib/user_interaction.py:602 lib/user_interaction.py:601 lib/user_interaction/partitioning_conf.py:125 lib/user_interaction/partitioning_conf.py:126 msgid "Mark/Unmark a partition as encrypted" msgstr "Markera/Avmarkera en partition för att bli krypterad" -#: lib/user_interaction.py:597 lib/user_interaction.py:600 lib/user_interaction.py:603 lib/user_interaction.py:602 lib/user_interaction/partitioning_conf.py:126 lib/user_interaction/partitioning_conf.py:127 msgid "Mark/Unmark a partition as bootable (automatic for /boot)" msgstr "Markera/Avmarkera en partition som bootbar (automatiskt gjort för /boot)" -#: lib/user_interaction.py:598 lib/user_interaction.py:601 lib/user_interaction.py:604 lib/user_interaction.py:603 lib/user_interaction/partitioning_conf.py:127 lib/user_interaction/partitioning_conf.py:128 msgid "Set desired filesystem for a partition" msgstr "Sätt önskat filsystem för partitionen" -#: lib/menu/selection_menu.py:239 lib/menu/selection_menu.py:237 lib/menu/selection_menu.py:241 lib/menu/selection_menu.py:270 lib/menu/selection_menu.py:507 lib/menu/selection_menu.py:515 lib/user_interaction/global_menu.py:167 lib/menu/selection_menu.py:588 lib/menu/global_menu.py:167 msgid "Abort" msgstr "Avbryt" -#: lib/menu/selection_menu.py:183 lib/menu/selection_menu.py:187 lib/menu/selection_menu.py:451 lib/menu/selection_menu.py:459 lib/user_interaction/global_menu.py:89 lib/menu/selection_menu.py:509 lib/menu/global_menu.py:89 -msgid "Specify hostname" -msgstr "Sätt ett önskat 'hostname'" +msgid "Hostname" +msgstr "Hostname" -#: lib/menu/selection_menu.py:228 lib/menu/selection_menu.py:492 lib/menu/selection_menu.py:500 lib/user_interaction/global_menu.py:141 lib/menu/selection_menu.py:562 lib/menu/global_menu.py:141 msgid "Not configured, unavailable unless setup manually" msgstr "Inte konfigurerad, otillgängligt utan manuell konfigurering" -#: lib/menu/selection_menu.py:231 lib/menu/selection_menu.py:495 lib/menu/selection_menu.py:503 lib/user_interaction/global_menu.py:145 lib/menu/selection_menu.py:566 lib/menu/global_menu.py:145 -msgid "Select timezone" -msgstr "Välj en tidszon" +msgid "Timezone" +msgstr "Tidszon" -#: lib/menu/selection_menu.py:266 lib/menu/selection_menu.py:276 lib/menu/selection_menu.py:312 msgid "Set/Modify the below options" msgstr "Sätt eller modifiera nedan alternativ" -#: lib/menu/selection_menu.py:272 msgid "Install" msgstr "Installera" -#: lib/menu/menu.py:68 lib/menu/menu.py:75 lib/menu/menu.py:119 msgid "" "Use ESC to skip\n" "\n" @@ -458,199 +361,130 @@ msgstr "" "Använd ESC för att hoppa över\n" "\n" -#: lib/user_interaction.py:591 lib/user_interaction.py:594 lib/user_interaction.py:597 lib/user_interaction.py:596 lib/user_interaction/partitioning_conf.py:120 lib/user_interaction/partitioning_conf.py:121 msgid "Suggest partition layout" msgstr "Rekommendera en disk-layout" -#: lib/user_interaction.py:101 lib/user_interaction/utils.py:43 msgid "Enter a password: " msgstr "Mata in ett lösenord: " -#: lib/disk/filesystem.py:117 lib/disk/filesystem.py:118 msgid "Enter a encryption password for {}" msgstr "Mata in ett krypterings-lösenord för {}" -#: lib/menu/selection_menu.py:174 lib/menu/selection_menu.py:567 lib/menu/selection_menu.py:575 lib/user_interaction/global_menu.py:225 lib/menu/selection_menu.py:646 lib/menu/global_menu.py:225 msgid "Enter disk encryption password (leave blank for no encryption): " msgstr "Mata in ett disk-krypteringslösenord (lämna blankt för att hoppa över kryptering): " -#: lib/menu/selection_menu.py:407 lib/menu/selection_menu.py:617 lib/menu/selection_menu.py:625 msgid "Create a required super-user with sudo privileges: " msgstr "Skapa ett super-användarkonto med sudo-rättigheter (detta är ett krav): " -#: lib/menu/selection_menu.py:347 lib/menu/selection_menu.py:554 lib/menu/selection_menu.py:562 lib/user_interaction/global_menu.py:220 lib/menu/selection_menu.py:641 lib/menu/global_menu.py:220 msgid "Enter root password (leave blank to disable root): " -msgstr "Mata in ett root-lösenord (lämna blankt för att deaktivera kontot)" +msgstr "Mata in ett root-lösenord (lämna blankt för att deaktivera kontot): " -#: lib/user_interaction.py:307 lib/user_interaction.py:324 lib/user_interaction/manage_users_conf.py:86 lib/user_interaction/manage_users_conf.py:121 msgid "Password for user \"{}\": " msgstr "Lösenord för användare \"{}\": " -#: lib/user_interaction.py:405 lib/user_interaction.py:408 lib/user_interaction.py:407 lib/user_interaction/general_conf.py:152 msgid "Verifying that additional packages exist (this might take a few seconds)" msgstr "Verifierar att valda paket existerar (detta kan ta några sekunder)" -#: lib/user_interaction.py:281 lib/user_interaction/general_conf.py:22 msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" msgstr "Skulle du vilja använda automatisk tidssynkronisering (NTP) med standard-tidsservrar?\n" -#: lib/user_interaction.py:282 lib/user_interaction/general_conf.py:23 msgid "" "Hardware time and other post-configuration steps might be required in order for NTP to work.\n" "For more information, please check the Arch wiki" msgstr "" "Hårdvaru-tid och annan efterkonfigurering kan behövas för att NTP skall fungera korrekt.\n" -"För mer information, se Arch Wiki-sidan." +"För mer information, se Arch Wiki-sidan" -#: lib/menu/selection_menu.py:411 lib/menu/selection_menu.py:621 lib/menu/selection_menu.py:629 msgid "Enter a username to create an additional user (leave blank to skip): " msgstr "Mata in ett användarnamn för att skapa ytterligare användare (lämna tom för att hoppa över): " -#: lib/menu/menu.py:116 -#, fuzzy msgid "Use ESC to skip\n" -msgstr "" -"Använd ESC för att hoppa över\n" -"\n" +msgstr "Använd ESC för att hoppa över\n" -#: lib/menu/list_manager.py:117 msgid "" "\n" " Choose an object from the list, and select one of the available actions for it to execute" msgstr "" +"\n" +"Välj ett objekt från listan, och välj en åtgärd att exekvera" -#: lib/menu/list_manager.py:130 lib/user_interaction/subvolume_config.py:90 msgid "Cancel" -msgstr "" +msgstr "Avbryt" -#: lib/menu/list_manager.py:131 -#, fuzzy msgid "Confirm and exit" -msgstr "Konfigurera nätverk" +msgstr "Godkän och gå ur" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:228 lib/menu/list_manager.py:251 lib/menu/list_manager.py:276 lib/user_interaction/subvolume_config.py:12 lib/user_interaction/subvolume_config.py:44 lib/user_interaction/subvolume_config.py:78 lib/user_interaction/subvolume_config.py:82 lib/user_interaction/subvolume_config.py:85 msgid "Add" -msgstr "" +msgstr "Lägg till" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:231 lib/menu/list_manager.py:255 lib/user_interaction/subvolume_config.py:78 msgid "Copy" -msgstr "" +msgstr "Kopiera" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:237 lib/menu/list_manager.py:261 lib/user_interaction/subvolume_config.py:82 lib/user_interaction/subvolume_config.py:85 msgid "Edit" -msgstr "" +msgstr "Editera" -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:242 lib/menu/list_manager.py:264 lib/user_interaction/subvolume_config.py:40 msgid "Delete" -msgstr "" +msgstr "Ta bort" -#: lib/menu/list_manager.py:185 -#, fuzzy msgid "Select an action for < {} >" -msgstr "" -"Välj vad du vill göra med\n" -"{}" - -#: lib/menu/list_manager.py:229 -msgid "Add :" -msgstr "" - -#: lib/menu/list_manager.py:233 -msgid "Copy to :" -msgstr "" - -#: lib/menu/list_manager.py:240 -msgid "Edite :" -msgstr "" - -#: lib/menu/list_manager.py:252 -msgid "Key :" -msgstr "" - -#: lib/menu/list_manager.py:253 -msgid "Value :" -msgstr "" +msgstr "Välj vad du vill göra med < {} >" -#: lib/menu/list_manager.py:257 msgid "Copy to new key:" -msgstr "" - -#: lib/menu/list_manager.py:262 -#, python-brace-format -msgid "Edit {origkey} :" -msgstr "" +msgstr "Kopiera till en ny nyckel:" -#: lib/models/network_configuration.py:53 lib/models/network_configuration.py:74 msgid "Unknown nic type: {}. Possible values are {}" -msgstr "" +msgstr "Okänd NIC typ: {}. Möjliga val är {}" -#: lib/configuration.py:75 msgid "" "\n" "This is your chosen configuration:" msgstr "" +"\n" +"Det här är din valda konfiguration:" -#: lib/pacman.py:18 msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "" +msgstr "Pacman körs redan, väntar max 10 minuter innan vi avbryter." -#: lib/pacman.py:25 msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "" +msgstr "Existerande pacman-lås avslutades aldrig. Vänligen ränsa upp föregående körningar av pacman-sessioner innan du använder achinstall." -#: lib/user_interaction/general_conf.py:174 msgid "Choose which optional additional repositories to enable" -msgstr "" +msgstr "Välj vilka frivilliga repositories som ska aktiveras" -#: lib/user_interaction/manage_users_conf.py:32 -msgid "Add an user" -msgstr "" +msgid "Add a user" +msgstr "Lägg till användare" -#: lib/user_interaction/manage_users_conf.py:33 -#, fuzzy msgid "Change password" -msgstr "Mata in ett lösenord: " +msgstr "Byt lösenord" -#: lib/user_interaction/manage_users_conf.py:34 msgid "Promote/Demote user" -msgstr "" +msgstr "Befodra/Degradera användare" -#: lib/user_interaction/manage_users_conf.py:35 msgid "Delete User" -msgstr "" +msgstr "Ta bort användare" -#: lib/user_interaction/manage_users_conf.py:99 msgid "" "\n" "Define a new user\n" msgstr "" +"\n" +"Skapa ny användare\n" -#: lib/user_interaction/manage_users_conf.py:100 msgid "User Name : " -msgstr "" +msgstr "Användarnamn : " -#: lib/user_interaction/manage_users_conf.py:115 -#, fuzzy msgid "Should {} be a superuser (sudoer)?" msgstr "Är detta en superanvändare (sudo-rättigheter)?" -#: lib/user_interaction/manage_users_conf.py:161 -#, fuzzy msgid "Define users with sudo privilege: " -msgstr "Skapa ett super-användarkonto med sudo-rättigheter (detta är ett krav): " +msgstr "Skapa användare med sudo-rättigheter: " -#: lib/user_interaction/network_conf.py:24 -#, fuzzy msgid "No network configuration" -msgstr "Kopiera nätverkskonfigurationen från ISO till installationen" +msgstr "Ingen nätverkskonfigurering" -#: lib/user_interaction/partitioning_conf.py:128 lib/user_interaction/partitioning_conf.py:129 -#, fuzzy msgid "Set desired subvolumes on a btrfs partition" -msgstr "Sätt önskat filsystem för partitionen" +msgstr "Välj önskade sub-volymen på en BTRFS partition" -#: lib/user_interaction/partitioning_conf.py:296 lib/user_interaction/partitioning_conf.py:303 -#, fuzzy msgid "" "{}\n" "\n" @@ -658,135 +492,247 @@ msgid "" msgstr "" "{}\n" "\n" -"Välj vilken partition som du vill välja filsystem till" +"Välj vilken partition som du ska sätta sub-volymer på" -#: lib/user_interaction/partitioning_conf.py:305 lib/user_interaction/partitioning_conf.py:312 msgid "Manage btrfs subvolumes for current partition" -msgstr "" +msgstr "Managera BTRFS sub-volymer på nuvarande partition" -#: lib/user_interaction/save_conf.py:24 lib/user_interaction/save_conf.py:29 msgid "No configuration" -msgstr "" +msgstr "Ingen konfiguration" -#: lib/user_interaction/save_conf.py:42 msgid "Save user configuration" -msgstr "" +msgstr "Spara användarkonfigurering" -#: lib/user_interaction/save_conf.py:43 msgid "Save user credentials" -msgstr "" +msgstr "Spara användar-/lösenordsuppgifter" -#: lib/user_interaction/save_conf.py:44 -#, fuzzy msgid "Save disk layout" -msgstr "Välj hårddisk-layout" +msgstr "Spara disk konfigurering" -#: lib/user_interaction/save_conf.py:45 msgid "Save all" -msgstr "" +msgstr "Spara alla" -#: lib/user_interaction/save_conf.py:48 -#, fuzzy msgid "Choose which configuration to save" -msgstr "Välj vilket språk du vill använda" +msgstr "Välj vilken konfigurering du vill spara" -#: lib/user_interaction/save_conf.py:59 msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "" +msgstr "Välj vilken mapp du vill spara konfigurerationerna till: " -#: lib/user_interaction/save_conf.py:63 msgid "Not a valid directory: {}" -msgstr "" +msgstr "Inte en giltig mapp: {}" -#: lib/user_interaction/utils.py:32 msgid "The password you are using seems to be weak," -msgstr "" +msgstr "Lösenordet du angav verkar svagt," -#: lib/user_interaction/utils.py:33 -#, fuzzy msgid "are you sure you want to use it?" -msgstr "Vill du verkligen avbryta?" +msgstr "Vill du verkligen använda det?" -#: lib/user_interaction/global_menu.py:134 lib/menu/selection_menu.py:555 lib/menu/global_menu.py:134 -#, fuzzy -msgid "Additional repositories to enable" -msgstr "Välj extra paket att installera" +msgid "Optional repositories" +msgstr "Extra repositories" -#: lib/user_interaction/global_menu.py:155 lib/menu/selection_menu.py:576 lib/menu/global_menu.py:155 msgid "Save configuration" -msgstr "" +msgstr "Spara konfigurationen" -#: lib/user_interaction/global_menu.py:192 lib/menu/selection_menu.py:613 lib/menu/global_menu.py:192 msgid "Missing configurations:\n" -msgstr "" +msgstr "Konfigurationer som saknas:\n" -#: lib/user_interaction/global_menu.py:210 lib/menu/selection_menu.py:631 lib/menu/global_menu.py:210 msgid "Either root-password or at least 1 superuser must be specified" -msgstr "" +msgstr "Antingen måste ett root-lösenord sättas eller 1 superanvändarkonto skapas" -#: lib/user_interaction/global_menu.py:275 lib/menu/selection_menu.py:695 lib/menu/global_menu.py:275 -#, fuzzy msgid "Manage superuser accounts: " -msgstr "Skapa superanvändar-konto" +msgstr "Managera super-användare: " -#: lib/user_interaction/global_menu.py:279 lib/menu/selection_menu.py:699 lib/menu/global_menu.py:279 -#, fuzzy msgid "Manage ordinary user accounts: " -msgstr "Skapa användarkonto" +msgstr "Managera vanliga användarkonton: " -#: lib/user_interaction/subvolume_config.py:17 msgid " Subvolume :{:16}" -msgstr "" +msgstr " Sub-volym :{:16}" -#: lib/user_interaction/subvolume_config.py:19 lib/user_interaction/subvolume_config.py:22 msgid " mounted at {:16}" -msgstr "" +msgstr " Monterad som {:16}" -#: lib/user_interaction/subvolume_config.py:26 msgid " with option {}" -msgstr "" +msgstr " Med inställningen {}" -#: lib/user_interaction/subvolume_config.py:46 msgid "" "\n" " Fill the desired values for a new subvolume \n" msgstr "" +"\n" +"Mata in önskvärda värden för nya sub-volymer \n" -#: lib/user_interaction/subvolume_config.py:77 msgid "Subvolume name " -msgstr "" +msgstr "Namn för Sub-volymen " -#: lib/user_interaction/subvolume_config.py:81 msgid "Subvolume mountpoint" -msgstr "" +msgstr "Monteringspunkt för sub-volymen" -#: lib/user_interaction/subvolume_config.py:84 msgid "Subvolume options" -msgstr "" +msgstr "Flaggor för sub-volymen" -#: lib/user_interaction/subvolume_config.py:87 msgid "Save" -msgstr "" +msgstr "Spara" -#: lib/user_interaction/subvolume_config.py:121 msgid "Subvolume name :" -msgstr "" +msgstr "Namn på sub-volymen :" -#: lib/user_interaction/subvolume_config.py:124 -#, fuzzy msgid "Select a mount point :" -msgstr "Välj en tidszon" +msgstr "Välj en monteringspunkt :" -#: lib/user_interaction/subvolume_config.py:128 msgid "Select the desired subvolume options " -msgstr "" +msgstr "Välj önskade inställningar för sub-volymen " -#: lib/user_interaction/manage_users_conf.py:161 -#, fuzzy msgid "Define users with sudo privilege, by username: " -msgstr "Skapa ett super-användarkonto med sudo-rättigheter (detta är ett krav): " +msgstr "Definera användarnamn med sudo-rättigheter: " -#: lib/installer.py:152 -#, fuzzy msgid "[!] A log file has been created here: {}" -msgstr "[!] En logg-fil har skapats här: {} {}" +msgstr "[!] En logg-fil har skapats här: {}" + +msgid "Would you like to use BTRFS subvolumes with a default structure?" +msgstr "Vill du använda BTRFS sub-volymer med standard-layout?" + +msgid "Would you like to use BTRFS compression?" +msgstr "Vill du använda komprimering för BTRFS?" + +msgid "Would you like to create a separate partition for /home?" +msgstr "Vill du skapa en separat partition för /home?" + +msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" +msgstr "De valda diskarna uppfyller inte minsta lagringskapacitet för automatisk layout-förslag\n" + +msgid "Minimum capacity for /home partition: {}GB\n" +msgstr "Minsta kapaciteten för /home är: {}GB\n" + +msgid "Minimum capacity for Arch Linux partition: {}GB" +msgstr "Minsta kapaciteten för Arch Linux partitionen är: {}GB" + +msgid "Continue" +msgstr "Gå vidare" + +msgid "yes" +msgstr "Ja" + +msgid "no" +msgstr "Nej" + +msgid "set: {}" +msgstr "sätt: {}" + +msgid "Manual configuration setting must be a list" +msgstr "Manuell konfigurering måste vara en lista" + +msgid "No iface specified for manual configuration" +msgstr "Inget interface specificerat för manuell konfigurering" + +msgid "Manual nic configuration with no auto DHCP requires an IP address" +msgstr "Manuell NIC-konfiguration utan DHCP kräver en IP adress" + +msgid "Add interface" +msgstr "Lätt till interface" + +msgid "Edit interface" +msgstr "Editera interface" + +msgid "Delete interface" +msgstr "Ta bort interface" + +msgid "Select interface to add" +msgstr "Välj ett nätverkskort att lägga till" + +msgid "Manual configuration" +msgstr "Manuell konfiguration" + +msgid "Mark/Unmark a partition as compressed (btrfs only)" +msgstr "Markera/Avmarkera en partition för komprimering (BTRFS enbart)" + +msgid "The password you are using seems to be weak, are you sure you want to use it?" +msgstr "Lösenordet du angav verkar svagt, är du säker på att du vill använda det?" + +msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" +msgstr "Ger ett urval av desktop-val och fönster-hanterare, t.ex. Gnome, KDE och sway" + +msgid "Select your desired desktop environment" +msgstr "Välj din desktop miljö" + +msgid "A very basic installation that allows you to customize Arch Linux as you see fit." +msgstr "En väldigt minimal installation som möjliggör konfigurering av Arch Linux som du själv vill ha det." + +msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" +msgstr "Erbjuder ett urval av olika server-packeteringar, t.ex. httpd, nginx och mariadb" + +msgid "Choose which servers to install, if none then a minimal installation wil be done" +msgstr "Välj vilka servrar du vill installera, en minimal installation sker om du hoppar över detta" + +msgid "Installs a minimal system as well as xorg and graphics drivers." +msgstr "Installerar ett minimal system med xorg och grafikdrivrutiner." + +msgid "Press Enter to continue." +msgstr "Tryck på Enter för att fortsätta." + +msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" +msgstr "Vill du hoppa in i det nyligen installerade systemet och utföra förändringar? (skriv 'exit' när du är klart)" + +msgid "Are you sure you want to reset this setting?" +msgstr "Vill du verkligen återställa denna inställning?" + +msgid "Select one or more hard drives to use and configure\n" +msgstr "Välj en eller flera hårddiskar som skall användas och konfigureras\n" + +msgid "Any modifications to the existing setting will reset the disk layout!" +msgstr "Modiferingar av inställningen kommer återställa disk-konfigureringen!" + +msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" +msgstr "Om du återställer hårddiskvalen kommer det också återställa diskuppsättningen. Är du säker?" + +msgid "Save and exit" +msgstr "Spara och gå ur" + +msgid "" +"{}\n" +"contains queued partitions, this will remove those, are you sure?" +msgstr "" +"{}\n" +"innehåller uppköade partitionen och detta kommer ta bort dessa. Är du säker?" + +msgid "No audio server" +msgstr "Ingen ljud-server" + +msgid "(default)" +msgstr "(standard)" + +msgid "Use ESC to skip" +msgstr "Använd ESC för att hoppa över" + +msgid "" +"Use CTRL+C to reset current selection\n" +"\n" +msgstr "" +"Använd CTRL+C för att återställa valen\n" +"\n" + +msgid "Copy to: " +msgstr "Kopiera till: " + +msgid "Edit: " +msgstr "Editera: " + +msgid "Key: " +msgstr "Nyckel: " + +msgid "Edit {}: " +msgstr "Editera {}: " + +msgid "Add: " +msgstr "Lägg till: " + +msgid "Value: " +msgstr "Värde: " + +msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" +msgstr "Du kan hoppa över val av disk och partitionering och använda det som är monterat vid /mnt/archinstall (experimentellt)" + +msgid "Select one of the disks or skip and use /mnt as default" +msgstr "Välj en disk eller hoppa över och använd /mnt/archinstall utan formatering" + +msgid "Select which partitions to mark for formatting:" +msgstr "Välj vilken partition som skall markeras för formatering:" diff --git a/archinstall/locales/tr/LC_MESSAGES/base.mo b/archinstall/locales/tr/LC_MESSAGES/base.mo Binary files differnew file mode 100644 index 00000000..6eb05010 --- /dev/null +++ b/archinstall/locales/tr/LC_MESSAGES/base.mo diff --git a/archinstall/locales/tr/LC_MESSAGES/base.po b/archinstall/locales/tr/LC_MESSAGES/base.po new file mode 100644 index 00000000..03125510 --- /dev/null +++ b/archinstall/locales/tr/LC_MESSAGES/base.po @@ -0,0 +1,884 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: 21.05.2022\n" +"PO-Revision-Date: 2022-05-25 17:42+0300\n" +"Last-Translator: Abdullah Koyuncu @wiseweb-works <wisewebworks@outlook.com>\n" +"Language-Team: \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.0.1\n" + +msgid "[!] A log file has been created here: {} {}" +msgstr "[!] Burada bir günlük (log) dosyası oluşturuldu: {} {}" + +msgid "" +" Please submit this issue (and file) to https://github.com/archlinux/" +"archinstall/issues" +msgstr "" +" Lütfen bu sorunu (ve dosyayı) https://github.com/archlinux/archinstall/" +"issues 'a bildirin" + +msgid "Do you really want to abort?" +msgstr "Gerçekten iptal etmek istiyor musunuz?" + +msgid "And one more time for verification: " +msgstr "Ve doğrulama için bir kez daha: " + +msgid "Would you like to use swap on zram?" +msgstr "\"Swap\"i (takas) zram üzerinde kullanmak ister misiniz?" + +msgid "Desired hostname for the installation: " +msgstr "Kurulum için tercih edilen bilgisayar ismi: " + +msgid "Username for required superuser with sudo privileges: " +msgstr "" +"Sudo yetkilerine sahip, gerekli bir süper kullanıcı için kullanıcı adı: " + +msgid "Any additional users to install (leave blank for no users): " +msgstr "" +"Kurulum için ek kullanıcılar (ek kullanıcı istemiyorsanız boş bırakın): " + +msgid "Should this user be a superuser (sudoer)?" +msgstr "Bu kullanıcı bir süper kullanıcı (sudoer) olmalı mı?" + +msgid "Select a timezone" +msgstr "Bir saat dilimi seçin" + +msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" +msgstr "GRUB'u systemd-boot yerine önyükleyici olarak kullanmak ister misiniz?" + +msgid "Choose a bootloader" +msgstr "Bir önyükleyici seçin" + +msgid "Choose an audio server" +msgstr "Bir ses sunucusu seçin" + +msgid "" +"Only packages such as base, base-devel, linux, linux-firmware, efibootmgr " +"and optional profile packages are installed." +msgstr "" +"Sadece base, base-devel, linux, linux-firmware, efibootmgr ve tercihi profil " +"paketleri kuruldu." + +msgid "" +"If you desire a web browser, such as firefox or chromium, you may specify it " +"in the following prompt." +msgstr "" +"Eğer bir internet tarayıcısı arzu ediyorsanız, Firefox ya da Chromium gibi, " +"sıra gelen ekranda belirtebilirsiniz." + +msgid "" +"Write additional packages to install (space separated, leave blank to skip): " +msgstr "" +"Kurulacak ek paketleri yazınız (boşlukla ayrılmış, geçmek için boş bırakın): " + +msgid "Copy ISO network configuration to installation" +msgstr "Kuruluma ISO'dan ağ yapılandırmasını kopyala" + +msgid "" +"Use NetworkManager (necessary to configure internet graphically in GNOME and " +"KDE)" +msgstr "" +"NetworkManager'ı kullan (GNOME ya da KDE'de interneti grafik olarak " +"yapılandırmak için gerekli)" + +msgid "Select one network interface to configure" +msgstr "Yapılandırmak için bir ağ arayüzü seçin" + +msgid "" +"Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" +msgstr "" +"\"{}\"i yapılandırmak için bir yöntem seçin ya da varsayılan yöntemi \"{}\" " +"kullanmak için geçin" + +msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " +msgstr "{} için IP ve altağ girin (örnek: 192.168.0.5/24): " + +msgid "Enter your gateway (router) IP address or leave blank for none: " +msgstr "" +"Ağ geçidi (yönlendirici) IP adresini girin ya da kullanılmaması için boş " +"bırakın: " + +msgid "Enter your DNS servers (space separated, blank for none): " +msgstr "" +"DNS sunucularını girin (boşlukla ayrılmış, kullanılmaması için boş bırakın): " + +msgid "Select which filesystem your main partition should use" +msgstr "Ana disk bölümünde kullanması gereken dosya sistemini seçin" + +msgid "Current partition layout" +msgstr "Mevcut disk bölümü düzeni" + +msgid "" +"Select what to do with\n" +"{}" +msgstr "" +"İle ne yapılması gerektiğini seçin\n" +"{}" + +msgid "Enter a desired filesystem type for the partition" +msgstr "Disk bölümü için arzu edilen bir dosya systemi tipi girin" + +msgid "Enter the start sector (percentage or block number, default: {}): " +msgstr "Başlangıç kesimini girin (yüzde ya da blok numarası, varsayılan: {}): " + +msgid "" +"Enter the end sector of the partition (percentage or block number, ex: {}): " +msgstr "" +"Disk bölümünün bitiş kesimini girin (yüzde ya da blok numarası, ör: {}): " + +msgid "{} contains queued partitions, this will remove those, are you sure?" +msgstr "" +"{} işlem sırasında bekleyen disk bölümleri bulunduruyor, bu onları " +"kaldıracak, emin misiniz?" + +msgid "" +"{}\n" +"\n" +"Select by index which partitions to delete" +msgstr "" +"{}\n" +"\n" +"Dizinden hangi disk bölümlerinin silineceğini seçin" + +msgid "" +"{}\n" +"\n" +"Select by index which partition to mount where" +msgstr "" +"{}\n" +"\n" +"Dizinden hangi disk bölümünün nereye mount (monte) edileceğini seçin" + +msgid "" +" * Partition mount-points are relative to inside the installation, the boot " +"would be /boot as an example." +msgstr "" +" * Disk bölümü mount (monte) noktaları iç kurulumla ilişkilidir, örnek " +"olarak boot, /boot olacaktır." + +msgid "Select where to mount partition (leave blank to remove mountpoint): " +msgstr "" +"Disk bölümünün nereye mount (monte) edileceğini seçin (mount noktasını " +"kaldırmak için boş bırakın): " + +msgid "" +"{}\n" +"\n" +"Select which partition to mask for formatting" +msgstr "" +"{}\n" +"\n" +"Biçimlendirme için hangi disk bölümünün maskeleneceğini seçin" + +msgid "" +"{}\n" +"\n" +"Select which partition to mark as encrypted" +msgstr "" +"{}\n" +"\n" +"Hangi disk bölümünün şifrelenmiş olarak işaretleneceğini seçin" + +msgid "" +"{}\n" +"\n" +"Select which partition to mark as bootable" +msgstr "" +"{}\n" +"\n" +"Hangi disk bölümünün boot edilebilir olarak işaretleneceğini seçin" + +msgid "" +"{}\n" +"\n" +"Select which partition to set a filesystem on" +msgstr "" +"{}\n" +"\n" +"Hangi disk bölümüne dosya sistemi kurulacağını seçin" + +msgid "Enter a desired filesystem type for the partition: " +msgstr "Disk bölümü için arzu edilen bir dosya sistemi tipi girin: " + +msgid "Archinstall language" +msgstr "Archinstall dili" + +msgid "Wipe all selected drives and use a best-effort default partition layout" +msgstr "" +"Bütün seçilmiş diskleri temizle ve elden gelen en iyi varsayılan disk bölümü " +"düzenini kullan" + +msgid "" +"Select what to do with each individual drive (followed by partition usage)" +msgstr "" +"Her bir disk ile ne yapılacağını seçin (disk bölümü kullanımı ile takip " +"edilir)" + +msgid "Select what you wish to do with the selected block devices" +msgstr "Seçili blok cihazları ile ne yapmak istediğinizi seçin" + +msgid "" +"This is a list of pre-programmed profiles, they might make it easier to " +"install things like desktop environments" +msgstr "" +"Bu ön-programlanmış profillerin bir listesidir, bunlar masaüstü ortamları " +"gibi şeyler kurmayı kolaylaştırabilir" + +msgid "Select keyboard layout" +msgstr "Klavye düzeni seçin" + +msgid "Select one of the regions to download packages from" +msgstr "Paketleri indirmek için bölgelerden birini seçin" + +msgid "Select one or more hard drives to use and configure" +msgstr "Kullanmak ve yapılandırmak için bir veya daha fazla sabit disk seçin" + +msgid "" +"For the best compatibility with your AMD hardware, you may want to use " +"either the all open-source or AMD / ATI options." +msgstr "" +"AMD donanımınızla en iyi uyumluluk için, tam açık-kaynak ya da AMD / ATI " +"ayarlarından birini kullanmak isteyebilirsiniz." + +msgid "" +"For the best compatibility with your Intel hardware, you may want to use " +"either the all open-source or Intel options.\n" +msgstr "" +"Intel donanımınızla en iyi uyumluluk için, tam açık-kaynak ya da Intel " +"ayarlarından birini kullanmak isteyebilirsiniz.\n" + +msgid "" +"For the best compatibility with your Nvidia hardware, you may want to use " +"the Nvidia proprietary driver.\n" +msgstr "" +"Nvidia donanımınızla en iyi uyumluluk için, Nvidia patentli sürücüyü " +"kullanmak isteyebilirsiniz.\n" + +msgid "" +"\n" +"\n" +"Select a graphics driver or leave blank to install all open-source drivers" +msgstr "" +"\n" +"\n" +"Bir grafik sürücüsü seçin ya da bütün açık-kaynak sürücüleri kurmak için boş " +"bırakın" + +msgid "All open-source (default)" +msgstr "Tam açık-kaynak (varsayılan)" + +msgid "Choose which kernels to use or leave blank for default \"{}\"" +msgstr "" +"Hangi çekirdekleri kullanmak istediğinizi seçin ya da varsayılan \"{}\" için " +"boş bırakın" + +# Burada "locale" hesaba özgü yani profil içinde yerel anlamına geliyor olabilir. Kurulumda ilgili metin ile karşılaşmadığımdan karar veremiyorum. +msgid "Choose which locale language to use" +msgstr "Hangi dilin kullanılacağını seçin" + +# Burada "locale" hesaba özgü yani profil içinde yerel anlamına geliyor olabilir. Kurulumda ilgili metin ile karşılaşmadığımdan karar veremiyorum. +msgid "Choose which locale encoding to use" +msgstr "Hangi yerel dil kod şemasının kullanılacağını seçin" + +# Burada "locale" hesaba özgü yani profil içinde yerel anlamına geliyor olabilir. Kurulumda ilgili metin ile karşılaşmadığımdan karar veremiyorum. +msgid "Select one of the values shown below: " +msgstr "Aşağıda gösterilen değerlerden birini seçin: " + +msgid "Select one or more of the options below: " +msgstr "Aşağıdaki seçeneklerden bir ya da daha fazlasını seçin: " + +msgid "Adding partition...." +msgstr "Disk bölümü ekleniyor…." + +msgid "" +"You need to enter a valid fs-type in order to continue. See `man parted` for " +"valid fs-type's." +msgstr "" +"Devam etmek için geçerli bir ds-tipi (fs-type) girmeniz gerekiyor. Geçerli " +"ds-tiplerini görmek için `man parted`a bakın." + +msgid "Error: Listing profiles on URL \"{}\" resulted in:" +msgstr "Hata: Bağlantı \"{}\"daki profilleri listeleme şöyle sonuçlandı:" + +msgid "Error: Could not decode \"{}\" result as JSON:" +msgstr "Hata: Sonuç \"{}\" JSON olarak çözümlenemedi:" + +msgid "Keyboard layout" +msgstr "Klavye düzeni" + +msgid "Mirror region" +msgstr "İndirme sunucusu bölgesi" + +# Burada "locale" hesaba özgü yani profil içinde yerel anlamına geliyor olabilir. Kurulumda ilgili metin ile karşılaşmadığımdan karar veremiyorum. +msgid "Locale language" +msgstr "Yerel dil" + +# Burada "locale" hesaba özgü yani profil içinde yerel anlamına geliyor olabilir. Kurulumda ilgili metin ile karşılaşmadığımdan karar veremiyorum. +msgid "Locale encoding" +msgstr "Yerel dil kod şeması" + +msgid "Drive(s)" +msgstr "Disk(ler)" + +msgid "Disk layout" +msgstr "Disk şeması" + +msgid "Encryption password" +msgstr "Şifreleme şifresi" + +msgid "Swap" +msgstr "Swap (değişim)" + +msgid "Bootloader" +msgstr "Önyükleyici" + +msgid "Root password" +msgstr "Root (kök) şifresi" + +msgid "Superuser account" +msgstr "Süper kullanıcı hesabı" + +msgid "User account" +msgstr "Kullanıcı hesabı" + +msgid "Profile" +msgstr "Profil" + +msgid "Audio" +msgstr "Ses" + +msgid "Kernels" +msgstr "Çekirdekler" + +msgid "Additional packages" +msgstr "Ek paketler" + +msgid "Network configuration" +msgstr "Ağ yapılandırması" + +msgid "Automatic time sync (NTP)" +msgstr "Otomatik zaman eşzamanlaması (NTP)" + +msgid "Install ({} config(s) missing)" +msgstr "Kur ({} adet yapılandırma(lar) eksik)" + +msgid "" +"You decided to skip harddrive selection\n" +"and will use whatever drive-setup is mounted at {} (experimental)\n" +"WARNING: Archinstall won't check the suitability of this setup\n" +"Do you wish to continue?" +msgstr "" +"Sabit disk seçimini geçmeye karar verdiniz ve\n" +"{}'e ne mount (monte) edilmişse onu kullanacaksınız (deneysel)\n" +"UYARI: Archinstall bu kurulumun uygunluğunu kontrol etmeyecek\n" +"Devam etmek istiyor musunuz?" + +msgid "Re-using partition instance: {}" +msgstr "Disk bölümü örneği yeniden kullanılıyor: {}" + +msgid "Create a new partition" +msgstr "Yeni disk bölümü oluştur" + +msgid "Delete a partition" +msgstr "Disk bölümü sil" + +msgid "Clear/Delete all partitions" +msgstr "Bütün disk bölümlerini temizle/sil" + +msgid "Assign mount-point for a partition" +msgstr "Bir disk bölümü için mount (monte) noktası ata" + +msgid "Mark/Unmark a partition to be formatted (wipes data)" +msgstr "" +"Bir disk bölümünü biçimlendirilmek üzere işaretle/işareti kaldır (veriyi " +"temizler)" + +msgid "Mark/Unmark a partition as encrypted" +msgstr "Bir disk bölümünü şifrelenmiş olarak işaretle/işareti kaldır" + +msgid "Mark/Unmark a partition as bootable (automatic for /boot)" +msgstr "" +"Bir disk bölümünü boot edilebilir olarak işaretle/işareti kaldır (/boot için " +"otomatik)" + +msgid "Set desired filesystem for a partition" +msgstr "Bir disk bölümü için arzu edilen dosya sistemini ayarla" + +msgid "Abort" +msgstr "İptal et" + +msgid "Hostname" +msgstr "Bilgisayar adı" + +msgid "Not configured, unavailable unless setup manually" +msgstr "Yapılandırılmamış, manuel olarak kurulmadığı sürece mevcut değil" + +msgid "Timezone" +msgstr "Zaman dilimi" + +msgid "Set/Modify the below options" +msgstr "Aşağıdaki ayarları ayarla/modifiye et" + +msgid "Install" +msgstr "Kur" + +msgid "" +"Use ESC to skip\n" +"\n" +msgstr "Geçmek için ESC'yi kullanın\n" + +msgid "Suggest partition layout" +msgstr "Disk bölümü şeması öner" + +msgid "Enter a password: " +msgstr "Bir şifre girin: " + +msgid "Enter a encryption password for {}" +msgstr "{} için bir şifreleme şifresi girin" + +msgid "Enter disk encryption password (leave blank for no encryption): " +msgstr "Disk şifreleme şifresi girin (şifreleme olmaması için boş bırakın): " + +msgid "Create a required super-user with sudo privileges: " +msgstr "Gerekli bir sudo yetkilerine sahip süper-kullanıcı oluşturun: " + +msgid "Enter root password (leave blank to disable root): " +msgstr "" +"Root (kök) şifresi girin (root'u hizmet dışı bırakmak için boş bırakın): " + +msgid "Password for user \"{}\": " +msgstr "Kullanıcı \"{}\" için şifre: " + +msgid "" +"Verifying that additional packages exist (this might take a few seconds)" +msgstr "Ek paketlerin varlığı doğrulanıyor (bu bir kaç saniye alabilir)" + +msgid "" +"Would you like to use automatic time synchronization (NTP) with the default " +"time servers?\n" +msgstr "" +"Varsayılan zaman sunucularıyla otomatik zaman eşzamanlamasını (NTP) " +"kullanmak ister misiniz?\n" + +msgid "" +"Hardware time and other post-configuration steps might be required in order " +"for NTP to work.\n" +"For more information, please check the Arch wiki" +msgstr "" +"NTP'nin çalışması için donanım zamanı ve diğer yapılandırma sonrası adımlar " +"gerekebilir.\n" +"Daha fazla bilgi için, lütfen Arch wikiye göz atın" + +msgid "Enter a username to create an additional user (leave blank to skip): " +msgstr "" +"Ek kullanıcı oluşturmak için bir kullanıcı adı girin (geçmek için boş " +"bırakın): " + +msgid "Use ESC to skip\n" +msgstr "Geçmek için ESC'yi kullanın\n" + +msgid "" +"\n" +" Choose an object from the list, and select one of the available actions for " +"it to execute" +msgstr "" +"\n" +"Listeden bir obje seçin ve çalıştırılmak üzere mevcut eylemlerden birini " +"seçin" + +msgid "Cancel" +msgstr "İptal et" + +msgid "Confirm and exit" +msgstr "Onayla ve çık" + +msgid "Add" +msgstr "Ekle" + +msgid "Copy" +msgstr "Kopyala" + +msgid "Edit" +msgstr "Düzenle" + +msgid "Delete" +msgstr "Sil" + +msgid "Select an action for < {} >" +msgstr "< {} > için bir eylem seçin" + +msgid "Copy to new key:" +msgstr "Yeni anahtara kopyala:" + +msgid "Unknown nic type: {}. Possible values are {}" +msgstr "Bilinmeyen nic tipi: {}. Muhtemel değerler şunlardır {}" + +msgid "" +"\n" +"This is your chosen configuration:" +msgstr "" +"\n" +"Bu sizin seçilmiş yapılandırmanız:" + +msgid "" +"Pacman is already running, waiting maximum 10 minutes for it to terminate." +msgstr "" +"Pacman hâlihazırda çalışıyor, işlemin sonlandırılması için en fazla 10 " +"dakika beklenecek." + +msgid "" +"Pre-existing pacman lock never exited. Please clean up any existing pacman " +"sessions before using archinstall." +msgstr "" +"Önceden var olan pacman kilidi çıkış yapmadı. Lütfen archinstall'ı " +"kullanmadan once mevcut olan pacman oturumlarını temizleyin." + +msgid "Choose which optional additional repositories to enable" +msgstr "" +"Hangi tercihi ek repositorylerin (depoların) aktifleştirileceğini seçin" + +msgid "Add a user" +msgstr "Kullanıcı ekle" + +msgid "Change password" +msgstr "Şifre değiştir" + +msgid "Promote/Demote user" +msgstr "Kullanıcı terfi ettir/indirge" + +msgid "Delete User" +msgstr "Kullanıcı Sil" + +msgid "" +"\n" +"Define a new user\n" +msgstr "" +"\n" +"Yeni bir kullanıcı tanımla\n" + +msgid "User Name : " +msgstr "Kullanıcı Adı : " + +msgid "Should {} be a superuser (sudoer)?" +msgstr "{} bir süper kullanıcı (sudoer) olmalı mı?" + +msgid "Define users with sudo privilege: " +msgstr "Sudo yetkilerine sahip kullanıcıları tanımlayın: " + +msgid "No network configuration" +msgstr "Ağ yapılandırması yok" + +msgid "Set desired subvolumes on a btrfs partition" +msgstr "Btrfs disk bölümünde arzu edilen alt disk bölümülerini ayarlayın" + +msgid "" +"{}\n" +"\n" +"Select which partition to set subvolumes on" +msgstr "" +"{}\n" +"\n" +"Alt disk bölümlerinin hangi disk bölümüne ayarlanacağını seçin" + +msgid "Manage btrfs subvolumes for current partition" +msgstr "Mevcut disk bölümü için btrfs alt disk bölümlerini yönet" + +msgid "No configuration" +msgstr "Yapılandırma yok" + +msgid "Save user configuration" +msgstr "Kullanıcı yapılandırmasını kaydet" + +msgid "Save user credentials" +msgstr "Kullanıcı bilgilerini kaydet" + +msgid "Save disk layout" +msgstr "Disk şemasını kaydet" + +msgid "Save all" +msgstr "Hepsini kaydet" + +msgid "Choose which configuration to save" +msgstr "Hangi yapılandırmanın kaydedileceğini seçin" + +msgid "Enter a directory for the configuration(s) to be saved: " +msgstr "Yapılandırma(lar)ın kaydedilmesi için bir dizin girin: " + +msgid "Not a valid directory: {}" +msgstr "Geçerli bir dizin değil: {}" + +msgid "The password you are using seems to be weak," +msgstr "Kullandığınız şifre zayıf gözüküyor," + +msgid "are you sure you want to use it?" +msgstr "kullanmak istediğinize emin misiniz?" + +msgid "Optional repositories" +msgstr "Tercihi \"repository\"ler (depolar)" + +msgid "Save configuration" +msgstr "Yapılandırmayı kaydet" + +msgid "Missing configurations:\n" +msgstr "Eksik yapılandırmalar:\n" + +msgid "Either root-password or at least 1 superuser must be specified" +msgstr "" +"Root (kök) şifresi ya da en azından 1 adet süper-kullanıcı belirtilmek " +"zorunda" + +msgid "Manage superuser accounts: " +msgstr "Süper-kullanıcı hesaplarını yönet: " + +msgid "Manage ordinary user accounts: " +msgstr "Normal kullanıcı hesaplarını yönet: " + +msgid " Subvolume :{:16}" +msgstr " alt disk bölümü :{:16}" + +msgid " mounted at {:16}" +msgstr " {:16}'da mount (monte) edildi" + +msgid " with option {}" +msgstr " {} seçeneğiyle" + +msgid "" +"\n" +" Fill the desired values for a new subvolume \n" +msgstr "" +"\n" +"Yeni bir alt disk bölümü için arzu edilen değerleri doldurun\n" + +msgid "Subvolume name " +msgstr "Alt disk bölümü ismi " + +msgid "Subvolume mountpoint" +msgstr "Alt disk bölümü mount (monte) noktası" + +msgid "Subvolume options" +msgstr "Alt dizin bölümü seçenekleri" + +msgid "Save" +msgstr "Kaydet" + +msgid "Subvolume name :" +msgstr "Alt disk bölümü ismi :" + +msgid "Select a mount point :" +msgstr "Bir mount (monte) noktası seçin :" + +msgid "Select the desired subvolume options " +msgstr "İstenilen alt dizin bölümü ayarlarını seçin " + +msgid "Define users with sudo privilege, by username: " +msgstr "Sudo yetkilerine sahip kullanıcıları tanımlayın, kullanıcı adı ile: " + +msgid "[!] A log file has been created here: {}" +msgstr "[!] Burada bir günlük (log) dosyası oluşturuldu: {}" + +msgid "Would you like to use BTRFS subvolumes with a default structure?" +msgstr "BTRFS alt disk bölümlerini varsayılan yapıyla kullanmak ister misiniz?" + +msgid "Would you like to use BTRFS compression?" +msgstr "BTRFS sıkıştırmasını kullanmak ister misiniz?" + +msgid "Would you like to create a separate partition for /home?" +msgstr "/home dizini için ayrı bir disk bölümü oluşturmak ister misiniz?" + +msgid "" +"The selected drives do not have the minimum capacity required for an " +"automatic suggestion\n" +msgstr "" +"Seçilmiş diskler otomatik öneriler için gerekli minimum kapasiteye sahip " +"değil\n" + +msgid "Minimum capacity for /home partition: {}GB\n" +msgstr "/home disk bölümü için minimum kapasite: {}GB\n" + +msgid "Minimum capacity for Arch Linux partition: {}GB" +msgstr "Arch Linux disk bölümü için minimum kapasite: {}GB" + +msgid "Continue" +msgstr "Devam et" + +msgid "yes" +msgstr "evet" + +msgid "no" +msgstr "hayır" + +msgid "set: {}" +msgstr "ayarla: {}" + +msgid "Manual configuration setting must be a list" +msgstr "Manuel yapılandırma seçeneği bir liste olmak zorunda" + +msgid "No iface specified for manual configuration" +msgstr "Manuel yapılandırma için hiçbir iface belirtilmedi" + +msgid "Manual nic configuration with no auto DHCP requires an IP address" +msgstr "Otomatik DHCP olmayan manuel nic yapılandırması IP adresi gerektirir" + +msgid "Add interface" +msgstr "Arayüz ekle" + +msgid "Edit interface" +msgstr "Arayüz düzenle" + +msgid "Delete interface" +msgstr "Arayüz sil" + +msgid "Select interface to add" +msgstr "Eklemek için arayüz seçin" + +msgid "Manual configuration" +msgstr "Manuel yapılandırma" + +msgid "Mark/Unmark a partition as compressed (btrfs only)" +msgstr "" +"Bir disk bölümünü sıkıştırılmış olarak işaretle/işareti kaldır (sadece btrfs)" + +msgid "" +"The password you are using seems to be weak, are you sure you want to use it?" +msgstr "" +"Kullandığınız şifre zayıf gözüküyor, kullanmak istediğinize emin misiniz?" + +msgid "" +"Provides a selection of desktop environments and tiling window managers, e." +"g. gnome, kde, sway" +msgstr "" +"Masaüstü ortamları ve otomatik hizalamalı pencere yöneticilerine bir seçenek " +"sunar, örnek olarak gnome, kde, sway" + +msgid "Select your desired desktop environment" +msgstr "Arzu ettiğiniz masaüstü ortamını seçin" + +msgid "" +"A very basic installation that allows you to customize Arch Linux as you see " +"fit." +msgstr "" +"Arch Linux'u istediğin gibi kişiselleştirmeni sağlayan çok basit bir kurulum." + +msgid "" +"Provides a selection of various server packages to install and enable, e.g. " +"httpd, nginx, mariadb" +msgstr "" +"Kurmak ve aktif etmek için bazı seçilmiş çeşitli sunucu paketleri sunar, " +"örnek olarak httpd, nginx, mariadb" + +msgid "" +"Choose which servers to install, if none then a minimal installation wil be " +"done" +msgstr "" +"Hangi sunucuların kurulacağını seçin, eğer hiçbiri seçilmezse minimal bir " +"kurulum gerçekleştirilecektir" + +msgid "Installs a minimal system as well as xorg and graphics drivers." +msgstr "Xorg ve grafik sürücüleri ile minimal bir sistem kurar." + +msgid "Press Enter to continue." +msgstr "Devam etmek için Enter'a bas." + +msgid "" +"Would you like to chroot into the newly created installation and perform " +"post-installation configuration?" +msgstr "" +"Yeni oluşturulmuş kuruluma chroot etmek ve kurulum sonrası konfigürasyon " +"gerçekleştirmek ister misiniz?" + +msgid "Are you sure you want to reset this setting?" +msgstr "Bu ayarı sıfırlamak istediğinize emin misiniz?" + +msgid "Select one or more hard drives to use and configure\n" +msgstr "" +"Kullanmak ve yapılandırmak için bir ya da daha fazla sabit disk seçin\n" + +msgid "Any modifications to the existing setting will reset the disk layout!" +msgstr "Mevcut ayara herhangi bir modifikasyon disk şemasını sıfırlayacaktır!" + +msgid "" +"If you reset the harddrive selection this will also reset the current disk " +"layout. Are you sure?" +msgstr "" +"Eğer sabit disk seçimini sıfırlarsanız bu ayrıca mevcut disk şemasını da " +"sıfırlayacaktır. Emin misiniz?" + +msgid "Save and exit" +msgstr "Kaydet ve çık" + +msgid "" +"{}\n" +"contains queued partitions, this will remove those, are you sure?" +msgstr "" +"{}\n" +"işlem sırasında bekleyen disk bölümleri bulunduruyor, bu onları kaldıracak, " +"emin misiniz?" + +msgid "No audio server" +msgstr "Ses sunucusu yok" + +msgid "(default)" +msgstr "(varsayılan)" + +msgid "Use ESC to skip" +msgstr "Geçmek için ESC'yi kullanın" + +msgid "" +"Use CTRL+C to reset current selection\n" +"\n" +msgstr "" +"Mevcut seçimi sıfırlamak için CTRL+C'yi kulanın\n" +"\n" + +msgid "Copy to: " +msgstr "Şuraya kopyala: " + +msgid "Edit: " +msgstr "Düzenle: " + +msgid "Key: " +msgstr "Anahtar: " + +msgid "Edit {}: " +msgstr "Düzenle {}: " + +msgid "Add: " +msgstr "Ekle: " + +msgid "Value: " +msgstr "Değer: " + +msgid "" +"You can skip selecting a drive and partitioning and use whatever drive-setup " +"is mounted at /mnt (experimental)" +msgstr "" +"Disk seçmeyi ve disk bölümlendirmeyi geçebilir ve disk kurulumu /mnt " +"dizininde neye mount (monte) ediliyse onu kullanabilirsiniz (deneysel)" + +msgid "Select one of the disks or skip and use /mnt as default" +msgstr "" +"Disklerden birini seçin ya da geçin ve /mnt dizinini varsayılan olarak " +"kullanın" + +msgid "Select which partitions to mark for formatting:" +msgstr "Biçimlendirme için işaretlenecek disk bölümünü seçin:" + +msgid "Use HSM to unlock encrypted drive" +msgstr "Şifrelenmiş diskin kilidini açmak için HSM kullan" + +msgid "Device" +msgstr "Cihaz" + +msgid "Size" +msgstr "Boyut" + +msgid "Free space" +msgstr "Boş alan" + +msgid "Bus-type" +msgstr "Bus(veri yolu)-tipi" diff --git a/archinstall/locales/ur/LC_MESSAGES/base.mo b/archinstall/locales/ur/LC_MESSAGES/base.mo Binary files differnew file mode 100644 index 00000000..dad80f9d --- /dev/null +++ b/archinstall/locales/ur/LC_MESSAGES/base.mo diff --git a/archinstall/locales/ur/LC_MESSAGES/base.po b/archinstall/locales/ur/LC_MESSAGES/base.po new file mode 100644 index 00000000..9baa850c --- /dev/null +++ b/archinstall/locales/ur/LC_MESSAGES/base.po @@ -0,0 +1,782 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: ur\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 3.0.1\n" + +msgid "[!] A log file has been created here: {} {}" +msgstr "[!] یہاں ایک لاگ فائل بنائی گئی ہے: {} {}" + +msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" +msgstr " براہ کرم یہ مسئلہ (اور فائل) https://github.com/archlinux/archinstall/issues پراپلوڈکریں" + +msgid "Do you really want to abort?" +msgstr "کیا آپ واقعی بند کرنا چاہتے ہیں؟" + +msgid "And one more time for verification: " +msgstr "تصدیق کے لیے ایک بار اور:" + +msgid "Would you like to use swap on zram?" +msgstr "کیا آپ زی ریم پر سواپ استعمال کرنا چاہیں گے؟" + +msgid "Desired hostname for the installation: " +msgstr "انسٹالیشن کے لیے منتخب ہوسٹ کا نام:" + +msgid "Username for required superuser with sudo privileges: " +msgstr "sudo کے ساتھ مطلوبہ سپر یوزر کے لیے صارف نام:" + +msgid "Any additional users to install (leave blank for no users): " +msgstr "انسٹال کے لیے کوئی اضافی صارف (نہ ہونے کی صورت میں خالی چھوڑ دیں):" + +msgid "Should this user be a superuser (sudoer)?" +msgstr "کیا اس صارف کو سپر یوزر (sudoer) ہونا چاہیے؟" + +msgid "Select a timezone" +msgstr "ٹائم زون کا انتخاب کریں" + +msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" +msgstr "کیا آپ GRUB کو systemd-boot کے بجائے بوٹ لوڈر کے طور پر استعمال کرنا چاہیں گے؟" + +msgid "Choose a bootloader" +msgstr "بوٹ لوڈرکا انتخاب کریں" + +msgid "Choose an audio server" +msgstr "آڈیو سرور کا انتخاب کریں" + +msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." +msgstr "صرف پیکیج جیسے کہ بیس، بیس ڈیول، لینکس، لینکس فرم ویئر، efibootmgr اور اختیاری پروفائل پیکجز انسٹال ہیں۔" + +msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." +msgstr "اگر آپ ویب براؤزر جیسےکہ فائر فاکس یا کرومیم چاہتے ہیں، تو آپ اسے اگلے پرامپٹ میں بتا سکتے ہیں۔" + +msgid "Write additional packages to install (space separated, leave blank to skip): " +msgstr "انسٹال کرنےکے لیے اضافی پیکجز لکھیں (الگ الگ لیکھیں، نہیں کی صورت میں خالی چھوڑیں):" + +msgid "Copy ISO network configuration to installation" +msgstr "آئی ایس او نیٹ ورک کنفیگریشن کو انسٹالیشن میں کاپی کریں" + +msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" +msgstr "نیٹ ورک مینجر کا استعمال کریں (GNOME اور KDE میں انٹرنیٹ کو گرافیکلی ترتیب دینے کے لیے ضروری ہے)" + +msgid "Select one network interface to configure" +msgstr "کنفیگر کرنے کے لیے ایک نیٹ ورک انٹرفیس منتخب کریں" + +msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" +msgstr "منتخب کریں کہ کون سا موڈ \"{}\" کے لیے کنفیگر کرنا ہے یا ڈیفالٹ موڈ \"{}\" استعمال کرنے کے لیےخالی چھوڑ دیں۔" + +msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " +msgstr "{} کے لیے IP اور ذیلی نیٹ درج کریں (مثلاً: 192.168.0.5/24):" + +msgid "Enter your gateway (router) IP address or leave blank for none: " +msgstr "اپنےگیٹ وے (راؤٹر) آئی پی ایڈریس درج کریں یا نہیں کی صورت میں خالی چھوڑیں:" + +msgid "Enter your DNS servers (space separated, blank for none): " +msgstr "اپنےڈی این ایس سرورز درج کریں (الگ الگ لیکھیں،نہیں کی صورت میں خالی چھوڑیں):" + +msgid "Select which filesystem your main partition should use" +msgstr "اپنے مین پارٹیشن کیلیے فائل سسٹم کا انتخاب کریں" + +msgid "Current partition layout" +msgstr "موجودہ پارٹیشن کی ترتیب" + +msgid "" +"Select what to do with\n" +"{}" +msgstr "" +"منتخب کریں کہ اس کا کیا کرنا ہے۔\n" +"{}" + +msgid "Enter a desired filesystem type for the partition" +msgstr "اس پارٹیشن کے لیے مطلوبہ فائل سسٹم درج کریں" + +msgid "Enter the start sector (percentage or block number, default: {}): " +msgstr "اسٹارٹ سیکٹر درج کریں (فیصد یا بلاک نمبر، ڈیفالٹ: {}):" + +msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " +msgstr "پارٹیشن کا آخری سیکٹر درج کریں (فیصد یا بلاک نمبر، مثال کے طور پر: {}):" + +msgid "{} contains queued partitions, this will remove those, are you sure?" +msgstr "{} پارٹیشنزکے گروپ پر مشتمل ہے، یہ ان کو مٹا دے گا، کیا آپ پر اعتماد ہیں؟" + +msgid "" +"{}\n" +"\n" +"Select by index which partitions to delete" +msgstr "" +"{}\n" +"\n" +"انڈیکس کے ذریعہ منتخب کریں کہ کون سے پارٹیشنز کو حذف کرنا ہے" + +msgid "" +"{}\n" +"\n" +"Select by index which partition to mount where" +msgstr "" +"{}\n" +"\n" +"انڈیکس کے ذریعہ منتخب کریں کہ کون سا پارٹیشن کہاں ماؤنٹ کرنا ہے" + +msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." +msgstr "* پارٹیشن ماؤنٹ پوائنٹس انسٹالیشن کی نسبت سے ہیں، بوٹ مثال کے طور /boot پرہوگا۔" + +msgid "Select where to mount partition (leave blank to remove mountpoint): " +msgstr "منتخب کریں کہ پارٹیشن کہاں ماؤنٹ کرنا ہے (ماؤنٹ پوائنٹ کو ہٹانے کے لیے جگہ خالی چھوڑیں):" + +msgid "" +"{}\n" +"\n" +"Select which partition to mask for formatting" +msgstr "" +"{}\n" +"\n" +"فارمیٹنگ کے لیے کس پارٹیشن کو ماسک کرنا ہے" + +msgid "" +"{}\n" +"\n" +"Select which partition to mark as encrypted" +msgstr "" +"{}\n" +"\n" +"منتخب کریں کہ کس پارٹیشن کو انکرپٹڈ یا خفیہ رکھنا ہے" + +msgid "" +"{}\n" +"\n" +"Select which partition to mark as bootable" +msgstr "" +"{}\n" +"\n" +"منتخب کریں کہ کس پارٹیشن کو بوٹ ایبل رکھنا ہے" + +msgid "" +"{}\n" +"\n" +"Select which partition to set a filesystem on" +msgstr "" +"{}\n" +"\n" +"فائل سسٹم کو کس پارٹیشن پر سیٹ کرنا ہے" + +msgid "Enter a desired filesystem type for the partition: " +msgstr "اس پارٹیشن کے لیے مطلوبہ فائل سسٹم درج کریں" + +msgid "Archinstall language" +msgstr "آرچ انسٹال کے لیے زبان" + +msgid "Wipe all selected drives and use a best-effort default partition layout" +msgstr "تمام منتخب ڈرائیوز کو صاف کریں اور ایک بہترین ڈیفالٹ پارٹیشن لے آؤٹ استعمال کریں" + +msgid "Select what to do with each individual drive (followed by partition usage)" +msgstr "منتخب کریں کہ ہر انفرادی ڈرائیو کے ساتھ کیا کرنا ہے (اس کے بعد پارٹیشن کا استعمال)" + +msgid "Select what you wish to do with the selected block devices" +msgstr "انتخاب کریں کہ آپ منتخب بلاک ڈیوائسز کے ساتھ کیا کرنا چاہتے ہیں" + +msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" +msgstr "یہ پہلے سے پروگرام شدہ پروفائلز کی فہرست ہے، وہ ڈیسک ٹاپ انسٹالیشن جیسی چیزوں کو آسان بناتے ہیں" + +msgid "Select keyboard layout" +msgstr "کی بورڈ لے آؤٹ" + +msgid "Select one of the regions to download packages from" +msgstr "پیکیجز ڈاؤن لوڈ کرنے کے لیے علاقوں میں سے ایک کو منتخب کریں" + +msgid "Select one or more hard drives to use and configure" +msgstr "استعمال کرنے اور کنفیگر کے لیے ایک یا زیادہ ہارڈ ڈرائیوز منتخب کریں" + +msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." +msgstr "اپنے AMD ہارڈویئر کے ساتھ بہترین مطابقت کے لیے، آپ یا تو تمام اوپن سورس یا 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 "اپنے intel ہارڈویئر کے ساتھ بہترین مطابقت کے لیے، آپ یا تو تمام اوپن سورس یا intel آپشنز استعمال کرنا چاہیں گے۔\n" + +msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" +msgstr "اپنے Nvidia ہارڈویئر کے ساتھ بہترین مطابقت کے لیے، آپ Nvidia کے ملکیتی ڈرائیور کو استعمال کرنا چاہیں گے۔\n" + +msgid "" +"\n" +"\n" +"Select a graphics driver or leave blank to install all open-source drivers" +msgstr "" +"\n" +"\n" +"\n" +"ایک گرافکس ڈرائیور منتخب کریں یا تمام اوپن سورس ڈرائیورز کو انسٹال کرنے کے لیے خالی چھوڑ دیں" + +msgid "All open-source (default)" +msgstr "سبھی اوپن سورس (ڈیفالٹ)" + +msgid "Choose which kernels to use or leave blank for default \"{}\"" +msgstr "منتخب کریں کہ کن کنلز کو استعمال کرنا ہے یا ڈیفالٹ \"{}\" کے لیے خالی چھوڑ دیں" + +msgid "Choose which locale language to use" +msgstr "منتخب کریں کہ کون سی مقامی زبان استعمال کرنی ہے" + +msgid "Choose which locale encoding to use" +msgstr "منتخب کریں کہ کون سا مقامی انکوڈنگ استعمال کرنا ہے" + +msgid "Select one of the values shown below: " +msgstr "ذیل میں دکھائی گئی قدروں میں سے ایک کو منتخب کریں:" + +msgid "Select one or more of the options below: " +msgstr "ذیل میں سے ایک یا زیادہ اختیارات کو منتخب کریں:" + +msgid "Adding partition...." +msgstr "پارٹیشن شامل ہو رہی ہے..." + +msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." +msgstr "جاری رکھنے کے لیے آپ کو ایک درست fs-typeدرج کرنے کی ضرورت ہے۔ درست fs-types کے لیے 'man parted' دیکھیں۔" + +msgid "Error: Listing profiles on URL \"{}\" resulted in:" +msgstr "خرابی: URL \"{}\" پر پروفائلز کی فہرست بنانے کا نتیجہ یہ ہوا:" + +msgid "Error: Could not decode \"{}\" result as JSON:" +msgstr "خرابی: \"{}\" نتیجہ کو JSON کے بطور ڈی کوڈ نہیں کیا جا سکا:" + +msgid "Keyboard layout" +msgstr "کی بورڈ لے آؤٹ کو منتخب کریں" + +msgid "Mirror region" +msgstr "متبادل علاقہ" + +msgid "Locale language" +msgstr "مقامی زبان" + +msgid "Locale encoding" +msgstr "مقامی انکوڈنگ" + +msgid "Drive(s)" +msgstr "ہارڈ ڈرائیوز" + +msgid "Select disk layout" +msgstr "ڈسک لے آؤٹ کو منتخب کریں" + +msgid "Set encryption password" +msgstr "انکرپشن پاس ورڈ سیٹ کریں" + +msgid "Swap" +msgstr "سواپ" + +msgid "Bootloader" +msgstr "بوٹ لوڈر" + +msgid "root password" +msgstr "روٹ پاس ورڈ" + +msgid "Superuser account" +msgstr "سپر یوزر اکاؤنٹ" + +msgid "User account" +msgstr "یوزر اکاؤنٹ" + +msgid "Profile" +msgstr "پروفائل" + +msgid "Audio" +msgstr "آڈیو" + +msgid "Kernels" +msgstr "کرنلز" + +msgid "Additional packages" +msgstr "اضافی پیکجز" + +msgid "Network configuration" +msgstr "نیٹ ورک ترتیب دیں" + +msgid "Automatic time sync (NTP)" +msgstr "خودکار وقت کی مطابقت (NTP)" + +msgid "Install ({} config(s) missing)" +msgstr "انسٹال کریں ({} کنفیگریشنز غائب ہیں)" + +msgid "" +"You decided to skip harddrive selection\n" +"and will use whatever drive-setup is mounted at {} (experimental)\n" +"WARNING: Archinstall won't check the suitability of this setup\n" +"Do you wish to continue?" +msgstr "" +"آپ نے ہارڈ ڈرائیو کا انتخاب چھوڑنے کا فیصلہ کیا۔\n" +"اور جو بھی ڈرائیو سیٹ اپ {} (تجرباتی) پر ماؤنٹ کیا گیا ہے اسے استعمال کرے گا۔\n" +"انتباہ: آرچ انسٹال اس سیٹ اپ کی مناسبیت کی جانچ نہیں کرے گا۔\n" +"کیا آپ جاری رکھنا چاہتے ہیں؟" + +msgid "Re-using partition instance: {}" +msgstr "پارٹیشن کو دوبارہ استعمال کرنا: {}" + +msgid "Create a new partition" +msgstr "ایک نیا پارٹیشن بنائیں" + +msgid "Delete a partition" +msgstr "ایک پارٹیشن کو حذف کریں" + +msgid "Clear/Delete all partitions" +msgstr "تمام پارٹیشنز کو صاف/حذف کریں" + +msgid "Assign mount-point for a partition" +msgstr "پارٹیشن کے لیے ماؤنٹ پوائنٹ تفویض کریں" + +msgid "Mark/Unmark a partition to be formatted (wipes data)" +msgstr "فارمیٹ کرنے کے لیے پارٹیشن کو مارک /انمارک کریں (ڈیٹا صاف کرتا ہے)" + +msgid "Mark/Unmark a partition as encrypted" +msgstr "انکرپٹڈ کرنے کے لیے پارٹیشن کو مارک /انمارک کریں" + +msgid "Mark/Unmark a partition as bootable (automatic for /boot)" +msgstr "بوٹ ایبل کرنے کے لیے پارٹیشن کو مارک/ انمارک کریں(/boot)" + +msgid "Set desired filesystem for a partition" +msgstr "اس پارٹیشن کے لیے مطلوبہ فائل سسٹم درج کریں" + +msgid "Abort" +msgstr "ختم کریں" + +msgid "Hostname" +msgstr "میزبان نام" + +msgid "Not configured, unavailable unless setup manually" +msgstr "کنفیگر نہیں، دستیاب نہیں جب تک کہ دستی طور پر سیٹ اپ نہ کیا جائے" + +msgid "Timezone" +msgstr "ٹائم زون" + +msgid "Set/Modify the below options" +msgstr "ذیل کے اختیارات کو سیٹ/ترمیم کریں" + +msgid "Install" +msgstr "انسٹال" + +msgid "" +"Use ESC to skip\n" +"\n" +msgstr "" +"چھوڑنے کے لیے ESC استعمال کریں\n" +"\n" + +msgid "Suggest partition layout" +msgstr "پارٹیشن لے آؤٹ تجویز کریں" + +msgid "Enter a password: " +msgstr "پاس ورڈ درج کریں:" + +msgid "Enter a encryption password for {}" +msgstr "{} کے لیے ایک انکرپشن پاس ورڈ درج کریں" + +msgid "Enter disk encryption password (leave blank for no encryption): " +msgstr "ڈسک انکرپشن پاس ورڈ درج کریں (انکرپشن کو غیر فعال کرنے کے لیے خالی چھوڑ دیں):" + +msgid "Create a required super-user with sudo privileges: " +msgstr "sudo مراعات کے ساتھ ایک مطلوبہ سپر صارف بنائیں:" + +msgid "Enter root password (leave blank to disable root): " +msgstr "روٹ پاس ورڈ درج کریں (روٹ کو غیر فعال کرنے کے لیے خالی چھوڑ دیں):" + +msgid "Password for user \"{}\": " +msgstr "صارف \"{}\" کے لیے پاس ورڈ:" + +msgid "Verifying that additional packages exist (this might take a few seconds)" +msgstr "اس بات کی تصدیق ہو رہی ہےکہ اضافی پیکجز موجود ہیں (اس میں چند سیکنڈ لگ سکتے ہیں)" + +msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" +msgstr "کیا آپ ڈیفالٹ ٹائم سرورز کے ساتھ آٹومیٹک ٹائم سنکرونائزیشن (NTP) استعمال کرنا چاہیں گے؟\n" + +msgid "" +"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" +"For more information, please check the Arch wiki" +msgstr "" +"NTP کے کام کرنے کے لیے ہارڈ ویئر کا وقت اور کنفیگریشن کے بعد کے دیگر اقدامات درکار ہو سکتے ہیں۔\n" +"مزید معلومات کے لیے، براہ کرم آرک ویکی کو دیکھیں" + +msgid "Enter a username to create an additional user (leave blank to skip): " +msgstr "ایک اضافی صارف بنانے کے لیے صارف نام درج کریں (چھوڑنے کے لیے خالی چھوڑیں):" + +msgid "Use ESC to skip\n" +msgstr "چھوڑنے کے لیے ESC استعمال کریں\n" + +msgid "" +"\n" +" Choose an object from the list, and select one of the available actions for it to execute" +msgstr "" + +msgid "Cancel" +msgstr "منسوخ کریں" + +msgid "Confirm and exit" +msgstr "تصدیق کریں اور باہر نکلیں" + +msgid "Add" +msgstr "شامل" + +msgid "Copy" +msgstr "کاپی" + +msgid "Edit" +msgstr "ترمیم" + +msgid "Delete" +msgstr "حذف" + +msgid "Select an action for < {} >" +msgstr "< {} > کے لیے ایک عمل منتخب کریں" + +msgid "Copy to new key:" +msgstr "نئی کلید میں کاپی کریں:" + +msgid "Unknown nic type: {}. Possible values are {}" +msgstr "نامعلوم nic قسم: {}۔ ممکنہ قدریں ہیں {}" + +msgid "" +"\n" +"This is your chosen configuration:" +msgstr "" +"\n" +"یہ آپ کی منتخب کردہ ترتیب ہے:" + +msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." +msgstr "Pacman پہلے ہی چل رہا ہے، اس کے ختم ہونے کے لیے زیادہ سے زیادہ 10 منٹ انتظار " + +msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." +msgstr "پہلے سے موجود پیک مین لاک کبھی نہیں نکلا۔ براہ کرم archinstall استعمال کرنے سے پہلے کسی بھی موجودہ pacman سیشن کو صاف کریں۔" + +msgid "Choose which optional additional repositories to enable" +msgstr "منتخب کریں کہ کون سے اختیاری اضافی ریپوزیٹریز کو فعال کرنا ہے" + +#, fuzzy +msgid "Add a user" +msgstr "ایک صارف شامل کریں" + +msgid "Change password" +msgstr "پاس ورڈ تبدیل کریں" + +msgid "Promote/Demote user" +msgstr "صارف کو پروموٹ/ڈیموٹ کریں" + +msgid "Delete User" +msgstr "صارف کو حذف کریں" + +msgid "" +"\n" +"Define a new user\n" +msgstr "" +"\n" +"ایک نئے صارف کی وضاحت کریں۔\n" + +msgid "User Name : " +msgstr "صارف کا نام:" + +msgid "Should {} be a superuser (sudoer)?" +msgstr "کیا {} کو سپر یوزر (sudoer) ہونا چاہیے؟" + +msgid "Define users with sudo privilege: " +msgstr "sudo استحقاق کے ساتھ صارفین کی وضاحت کریں:" + +msgid "No network configuration" +msgstr "کوئی نیٹ ورک کنفیگریشن نہیں ہے" + +#, fuzzy +msgid "Set desired subvolumes on a btrfs partition" +msgstr "اس پارٹیشن کے لیے مطلوبہ فائل سسٹم درج کریں" + +#, fuzzy +msgid "" +"{}\n" +"\n" +"Select which partition to set subvolumes on" +msgstr "" +"{}\n" +"\n" +"فائل سسٹم کو کس پارٹیشن پر سیٹ کرنا ہے" + +msgid "Manage btrfs subvolumes for current partition" +msgstr "" + +msgid "No configuration" +msgstr "کوئی کنفیگریشن نہیں" + +msgid "Save user configuration" +msgstr "صارف کنفیگریشن کو محفوظ کریں" + +msgid "Save user credentials" +msgstr "صارف کی اسناد کو محفوظ کریں" + +msgid "Save disk layout" +msgstr "ڈسک لے آؤٹ کو محفوظ کریں" + +msgid "Save all" +msgstr "سب کو محفوظ کریں" + +msgid "Choose which configuration to save" +msgstr "منتخب کریں کہ کون سی کنفیگریشن محفوظ کرنی ہے" + +msgid "Enter a directory for the configuration(s) to be saved: " +msgstr "محفوظ کیے جانے والے کنفیگریشن کے لیے ایک ڈائرکٹری درج کریں:" + +msgid "Not a valid directory: {}" +msgstr "درست ڈائریکٹری نہیں ہے: {}" + +msgid "The password you are using seems to be weak," +msgstr "آپ جو پاس ورڈ استعمال کر رہے ہیں وہ کمزور لگ رہا ہے،" + +msgid "are you sure you want to use it?" +msgstr "کیا آپ واقعی اسے استعمال کرنا چاہتے ہیں؟" + +msgid "Optional repositories" +msgstr "اضافی ریپوزٹریز" + +msgid "Save configuration" +msgstr "ترتیب کو محفوظ کریں" + +msgid "Missing configurations:\n" +msgstr "لاپتہ کنفیگریشنز:\n" + +msgid "Either root-password or at least 1 superuser must be specified" +msgstr "روٹ پاس ورڈ یا کم از کم ۱ سپر یوزر کی وضاحت ہونی چاہیے" + +msgid "Manage superuser accounts: " +msgstr "سپر یوزر اکاؤنٹس کا نظم کریں:" + +msgid "Manage ordinary user accounts: " +msgstr "عام صارف اکاؤنٹس کا نظم کریں:" + +msgid " Subvolume :{:16}" +msgstr "" + +msgid " mounted at {:16}" +msgstr "" + +msgid " with option {}" +msgstr "" + +msgid "" +"\n" +" Fill the desired values for a new subvolume \n" +msgstr "" + +msgid "Subvolume name " +msgstr "" + +msgid "Subvolume mountpoint" +msgstr "" + +msgid "Subvolume options" +msgstr "" + +#, fuzzy +msgid "Save" +msgstr "سب کو محفوظ کریں" + +msgid "Subvolume name :" +msgstr "" + +#, fuzzy +msgid "Select a mount point :" +msgstr "ٹائم زون کا انتخاب کریں" + +msgid "Select the desired subvolume options " +msgstr "" + +#, fuzzy +msgid "Define users with sudo privilege, by username: " +msgstr "sudo استحقاق کے ساتھ صارفین کی وضاحت کریں:" + +#, fuzzy +msgid "[!] A log file has been created here: {}" +msgstr "[!] یہاں ایک لاگ فائل بنائی گئی ہے: {} {}" + +#, fuzzy +msgid "Would you like to use BTRFS subvolumes with a default structure?" +msgstr "کیا آپ GRUB کو systemd-boot کے بجائے بوٹ لوڈر کے طور پر استعمال کرنا چاہیں گے؟" + +#, fuzzy +msgid "Would you like to use BTRFS compression?" +msgstr "کیا آپ زی ریم پر سواپ استعمال کرنا چاہیں گے؟" + +#, fuzzy +msgid "Would you like to create a separate partition for /home?" +msgstr "کیا آپ زی ریم پر سواپ استعمال کرنا چاہیں گے؟" + +msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" +msgstr "" + +msgid "Minimum capacity for /home partition: {}GB\n" +msgstr "" + +msgid "Minimum capacity for Arch Linux partition: {}GB" +msgstr "" + +msgid "Continue" +msgstr "" + +msgid "yes" +msgstr "" + +msgid "no" +msgstr "" + +msgid "set: {}" +msgstr "" + +msgid "Manual configuration setting must be a list" +msgstr "" + +#, fuzzy +msgid "No iface specified for manual configuration" +msgstr "صارف کنفیگریشن کو محفوظ کریں" + +msgid "Manual nic configuration with no auto DHCP requires an IP address" +msgstr "" + +msgid "Add interface" +msgstr "" + +msgid "Edit interface" +msgstr "" + +#, fuzzy +msgid "Delete interface" +msgstr "صارف کو حذف کریں" + +#, fuzzy +msgid "Select interface to add" +msgstr "کنفیگر کرنے کے لیے ایک نیٹ ورک انٹرفیس منتخب کریں" + +#, fuzzy +msgid "Manual configuration" +msgstr "ترتیب کو محفوظ کریں" + +#, fuzzy +msgid "Mark/Unmark a partition as compressed (btrfs only)" +msgstr "انکرپٹڈ کرنے کے لیے پارٹیشن کو مارک /انمارک کریں" + +#, fuzzy +msgid "The password you are using seems to be weak, are you sure you want to use it?" +msgstr "آپ جو پاس ورڈ استعمال کر رہے ہیں وہ کمزور لگ رہا ہے،" + +msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" +msgstr "" + +msgid "Select your desired desktop environment" +msgstr "" + +msgid "A very basic installation that allows you to customize Arch Linux as you see fit." +msgstr "" + +msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" +msgstr "" + +msgid "Choose which servers to install, if none then a minimal installation wil be done" +msgstr "" + +msgid "Installs a minimal system as well as xorg and graphics drivers." +msgstr "" + +msgid "Press Enter to continue." +msgstr "" + +msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" +msgstr "" + +#, fuzzy +msgid "Are you sure you want to reset this setting?" +msgstr "کیا آپ واقعی اسے استعمال کرنا چاہتے ہیں؟" + +#, fuzzy +msgid "Select one or more hard drives to use and configure\n" +msgstr "استعمال کرنے اور کنفیگر کے لیے ایک یا زیادہ ہارڈ ڈرائیوز منتخب کریں" + +msgid "Any modifications to the existing setting will reset the disk layout!" +msgstr "" + +msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" +msgstr "" + +#, fuzzy +msgid "Save and exit" +msgstr "تصدیق کریں اور باہر نکلیں" + +#, fuzzy +msgid "" +"{}\n" +"contains queued partitions, this will remove those, are you sure?" +msgstr "{} پارٹیشنزکے گروپ پر مشتمل ہے، یہ ان کو مٹا دے گا، کیا آپ پر اعتماد ہیں؟" + +#, fuzzy +msgid "No audio server" +msgstr "آڈیو سرور کا انتخاب کریں" + +msgid "(default)" +msgstr "" + +#, fuzzy +msgid "Use ESC to skip" +msgstr "چھوڑنے کے لیے ESC استعمال کریں\n" + +msgid "" +"Use CTRL+C to reset current selection\n" +"\n" +msgstr "" + +#, fuzzy +msgid "Copy to: " +msgstr "اس میں کاپی :" + +#, fuzzy +msgid "Edit: " +msgstr "ترمیم" + +msgid "Key: " +msgstr "" + +#, fuzzy +msgid "Edit {}: " +msgstr "ترمیم:" + +msgid "Add: " +msgstr "" + +#, fuzzy +msgid "Value: " +msgstr "قدر:" + +msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" +msgstr "" + +msgid "Select one of the disks or skip and use /mnt as default" +msgstr "" + +#, fuzzy +msgid "Select which partitions to mark for formatting:" +msgstr "" +"{}\n" +"\n" +"فارمیٹنگ کے لیے کس پارٹیشن کو ماسک کرنا ہے" + +#~ msgid "Add :" +#~ msgstr "شامل:" + +#~ msgid "Value :" +#~ msgstr "قدر:" + +#, python-brace-format +#~ msgid "Edit {origkey} :" +#~ msgstr "ترمیم {origkey} :" + +#~ msgid "Copy to :" +#~ msgstr "اس میں کاپی :" + +#~ msgid "Edite :" +#~ msgstr "ترمیم:" + +#~ msgid "Key :" +#~ msgstr "کلید:" + +#~ msgid "Choose an object from the list" +#~ msgstr "فہرست سے ایک آبجیکٹ منتخب کریں۔" diff --git a/archinstall/locales/ur_issue_1048/LC_MESSAGES/base.mo b/archinstall/locales/ur_issue_1048/LC_MESSAGES/base.mo Binary files differdeleted file mode 100644 index d5559619..00000000 --- a/archinstall/locales/ur_issue_1048/LC_MESSAGES/base.mo +++ /dev/null diff --git a/archinstall/locales/ur_issue_1048/LC_MESSAGES/base.po b/archinstall/locales/ur_issue_1048/LC_MESSAGES/base.po deleted file mode 100644 index 43cde5c3..00000000 --- a/archinstall/locales/ur_issue_1048/LC_MESSAGES/base.po +++ /dev/null @@ -1,783 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" -"Language: ur\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.0.1\n" - -#: lib/installer.py:144 lib/installer.py:152 -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] یہاں ایک لاگ فائل بنائی گئی ہے: {} {}" - -#: lib/installer.py:145 lib/installer.py:153 -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " براہ کرم یہ مسئلہ (اور فائل) https://github.com/archlinux/archinstall/issues پراپلوڈکریں" - -#: lib/user_interaction.py:83 lib/user_interaction/utils.py:86 -msgid "Do you really want to abort?" -msgstr "کیا آپ واقعی بند کرنا چاہتے ہیں؟" - -#: lib/user_interaction.py:101 lib/user_interaction.py:104 lib/user_interaction/utils.py:53 -msgid "And one more time for verification: " -msgstr "تصدیق کے لیے ایک بار اور:" - -#: lib/user_interaction.py:272 lib/user_interaction.py:275 lib/user_interaction/system_conf.py:142 -msgid "Would you like to use swap on zram?" -msgstr "کیا آپ زی ریم پر سواپ استعمال کرنا چاہیں گے؟" - -#: lib/user_interaction.py:285 lib/user_interaction.py:288 lib/user_interaction/general_conf.py:33 -msgid "Desired hostname for the installation: " -msgstr "انسٹالیشن کے لیے منتخب ہوسٹ کا نام:" - -#: lib/user_interaction.py:290 lib/user_interaction.py:293 -msgid "Username for required superuser with sudo privileges: " -msgstr "sudo کے ساتھ مطلوبہ سپر یوزر کے لیے صارف نام:" - -#: lib/user_interaction.py:310 lib/user_interaction.py:313 lib/user_interaction/manage_users_conf.py:167 -msgid "Any additional users to install (leave blank for no users): " -msgstr "انسٹال کے لیے کوئی اضافی صارف (نہ ہونے کی صورت میں خالی چھوڑ دیں):" - -#: lib/user_interaction.py:324 lib/user_interaction.py:327 -msgid "Should this user be a superuser (sudoer)?" -msgstr "کیا اس صارف کو سپر یوزر (sudoer) ہونا چاہیے؟" - -#: lib/user_interaction.py:340 lib/user_interaction.py:343 lib/user_interaction.py:346 lib/user_interaction/general_conf.py:41 -msgid "Select a timezone" -msgstr "ٹائم زون کا انتخاب کریں" - -#: lib/user_interaction.py:354 lib/user_interaction.py:357 lib/user_interaction.py:360 lib/user_interaction.py:359 lib/user_interaction/system_conf.py:115 -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "کیا آپ GRUB کو systemd-boot کے بجائے بوٹ لوڈر کے طور پر استعمال کرنا چاہیں گے؟" - -#: lib/user_interaction.py:364 lib/user_interaction.py:367 lib/user_interaction.py:370 lib/user_interaction.py:369 lib/user_interaction/system_conf.py:125 -msgid "Choose a bootloader" -msgstr "بوٹ لوڈرکا انتخاب کریں" - -#: lib/user_interaction.py:380 lib/user_interaction.py:383 lib/user_interaction.py:386 lib/user_interaction.py:385 lib/user_interaction/general_conf.py:53 -msgid "Choose an audio server" -msgstr "آڈیو سرور کا انتخاب کریں" - -#: lib/user_interaction.py:391 lib/user_interaction.py:394 lib/user_interaction.py:397 lib/user_interaction.py:396 lib/user_interaction/general_conf.py:138 -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "صرف پیکیج جیسے کہ بیس، بیس ڈیول، لینکس، لینکس فرم ویئر، efibootmgr اور اختیاری پروفائل پیکجز انسٹال ہیں۔" - -#: lib/user_interaction.py:392 lib/user_interaction.py:395 lib/user_interaction.py:398 lib/user_interaction.py:397 lib/user_interaction/general_conf.py:139 -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "اگر آپ ویب براؤزر جیسےکہ فائر فاکس یا کرومیم چاہتے ہیں، تو آپ اسے اگلے پرامپٹ میں بتا سکتے ہیں۔" - -#: lib/user_interaction.py:396 lib/user_interaction.py:399 lib/user_interaction.py:402 lib/user_interaction.py:401 lib/user_interaction/general_conf.py:143 -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "انسٹال کرنےکے لیے اضافی پیکجز لکھیں (الگ الگ لیکھیں، نہیں کی صورت میں خالی چھوڑیں):" - -#: lib/user_interaction.py:419 lib/user_interaction.py:422 lib/user_interaction.py:425 lib/user_interaction.py:424 lib/user_interaction/network_conf.py:25 -msgid "Copy ISO network configuration to installation" -msgstr "آئی ایس او نیٹ ورک کنفیگریشن کو انسٹالیشن میں کاپی کریں" - -#: lib/user_interaction.py:420 lib/user_interaction.py:423 lib/user_interaction.py:426 lib/user_interaction.py:425 lib/user_interaction/network_conf.py:26 -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "نیٹ ورک مینجر کا استعمال کریں (GNOME اور KDE میں انٹرنیٹ کو گرافیکلی ترتیب دینے کے لیے ضروری ہے)" - -#: lib/user_interaction.py:428 lib/user_interaction.py:431 lib/user_interaction.py:434 lib/user_interaction.py:433 lib/user_interaction/network_conf.py:43 -msgid "Select one network interface to configure" -msgstr "کنفیگر کرنے کے لیے ایک نیٹ ورک انٹرفیس منتخب کریں" - -#: lib/user_interaction.py:441 lib/user_interaction.py:444 lib/user_interaction.py:447 lib/user_interaction.py:446 lib/user_interaction/network_conf.py:70 -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "منتخب کریں کہ کون سا موڈ \"{}\" کے لیے کنفیگر کرنا ہے یا ڈیفالٹ موڈ \"{}\" استعمال کرنے کے لیےخالی چھوڑ دیں۔" - -#: lib/user_interaction.py:446 lib/user_interaction.py:449 lib/user_interaction.py:452 lib/user_interaction.py:451 lib/user_interaction/network_conf.py:75 -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "{} کے لیے IP اور ذیلی نیٹ درج کریں (مثلاً: 192.168.0.5/24):" - -#: lib/user_interaction.py:461 lib/user_interaction.py:464 lib/user_interaction.py:467 lib/user_interaction.py:466 lib/user_interaction/network_conf.py:86 -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "اپنےگیٹ وے (راؤٹر) آئی پی ایڈریس درج کریں یا نہیں کی صورت میں خالی چھوڑیں:" - -#: lib/user_interaction.py:476 lib/user_interaction.py:479 lib/user_interaction.py:482 lib/user_interaction.py:481 lib/user_interaction/network_conf.py:102 -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "اپنےڈی این ایس سرورز درج کریں (الگ الگ لیکھیں،نہیں کی صورت میں خالی چھوڑیں):" - -#: lib/user_interaction.py:510 lib/user_interaction.py:513 lib/user_interaction.py:516 lib/user_interaction.py:515 lib/user_interaction/disk_conf.py:23 -msgid "Select which filesystem your main partition should use" -msgstr "اپنے مین پارٹیشن کیلیے فائل سسٹم کا انتخاب کریں" - -#: lib/user_interaction.py:556 lib/user_interaction.py:559 lib/user_interaction.py:562 lib/user_interaction.py:561 lib/user_interaction/partitioning_conf.py:64 lib/user_interaction/partitioning_conf.py:63 -msgid "Current partition layout" -msgstr "موجودہ پارٹیشن کی ترتیب" - -#: lib/user_interaction.py:607 lib/user_interaction.py:614 lib/user_interaction.py:617 lib/user_interaction.py:620 lib/user_interaction.py:619 lib/user_interaction/partitioning_conf.py:145 lib/user_interaction/partitioning_conf.py:146 -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"منتخب کریں کہ اس کا کیا کرنا ہے۔\n" -"{}" - -#: lib/user_interaction.py:624 lib/user_interaction.py:709 lib/user_interaction.py:631 lib/user_interaction.py:716 lib/user_interaction.py:634 lib/user_interaction.py:719 lib/user_interaction.py:637 lib/user_interaction.py:722 lib/user_interaction.py:636 lib/user_interaction.py:721 lib/user_interaction/partitioning_conf.py:162 lib/user_interaction/partitioning_conf.py:255 lib/user_interaction/partitioning_conf.py:165 lib/user_interaction/partitioning_conf.py:260 -msgid "Enter a desired filesystem type for the partition" -msgstr "اس پارٹیشن کے لیے مطلوبہ فائل سسٹم درج کریں" - -#: lib/user_interaction.py:626 lib/user_interaction.py:633 lib/user_interaction.py:636 lib/user_interaction.py:639 lib/user_interaction.py:638 lib/user_interaction/partitioning_conf.py:164 lib/user_interaction/partitioning_conf.py:167 -msgid "Enter the start sector (percentage or block number, default: {}): " -msgstr "اسٹارٹ سیکٹر درج کریں (فیصد یا بلاک نمبر، ڈیفالٹ: {}):" - -#: lib/user_interaction.py:635 lib/user_interaction.py:642 lib/user_interaction.py:645 lib/user_interaction.py:648 lib/user_interaction.py:647 lib/user_interaction/partitioning_conf.py:174 lib/user_interaction/partitioning_conf.py:177 -msgid "Enter the end sector of the partition (percentage or block number, ex: {}): " -msgstr "پارٹیشن کا آخری سیکٹر درج کریں (فیصد یا بلاک نمبر، مثال کے طور پر: {}):" - -#: lib/user_interaction.py:661 lib/user_interaction.py:668 lib/user_interaction.py:671 lib/user_interaction.py:674 lib/user_interaction.py:673 lib/user_interaction/partitioning_conf.py:203 lib/user_interaction/partitioning_conf.py:208 -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} پارٹیشنزکے گروپ پر مشتمل ہے، یہ ان کو مٹا دے گا، کیا آپ پر اعتماد ہیں؟" - -#: lib/user_interaction.py:674 lib/user_interaction.py:681 lib/user_interaction.py:684 lib/user_interaction.py:687 lib/user_interaction.py:686 lib/user_interaction/partitioning_conf.py:216 lib/user_interaction/partitioning_conf.py:221 -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"انڈیکس کے ذریعہ منتخب کریں کہ کون سے پارٹیشنز کو حذف کرنا ہے" - -#: lib/user_interaction.py:682 lib/user_interaction.py:689 lib/user_interaction.py:692 lib/user_interaction.py:695 lib/user_interaction.py:694 lib/user_interaction/partitioning_conf.py:226 lib/user_interaction/partitioning_conf.py:231 -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"انڈیکس کے ذریعہ منتخب کریں کہ کون سا پارٹیشن کہاں ماؤنٹ کرنا ہے" - -#: lib/user_interaction.py:686 lib/user_interaction.py:693 lib/user_interaction.py:696 lib/user_interaction.py:699 lib/user_interaction.py:698 lib/user_interaction/partitioning_conf.py:231 lib/user_interaction/partitioning_conf.py:236 -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "* پارٹیشن ماؤنٹ پوائنٹس انسٹالیشن کی نسبت سے ہیں، بوٹ مثال کے طور /boot پرہوگا۔" - -#: lib/user_interaction.py:687 lib/user_interaction.py:694 lib/user_interaction.py:697 lib/user_interaction.py:700 lib/user_interaction.py:699 lib/user_interaction/partitioning_conf.py:233 lib/user_interaction/partitioning_conf.py:238 -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "منتخب کریں کہ پارٹیشن کہاں ماؤنٹ کرنا ہے (ماؤنٹ پوائنٹ کو ہٹانے کے لیے جگہ خالی چھوڑیں):" - -#: lib/user_interaction.py:698 lib/user_interaction.py:705 lib/user_interaction.py:708 lib/user_interaction.py:711 lib/user_interaction.py:710 lib/user_interaction/partitioning_conf.py:244 lib/user_interaction/partitioning_conf.py:249 -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"فارمیٹنگ کے لیے کس پارٹیشن کو ماسک کرنا ہے" - -#: lib/user_interaction.py:717 lib/user_interaction.py:724 lib/user_interaction.py:727 lib/user_interaction.py:730 lib/user_interaction.py:729 lib/user_interaction/partitioning_conf.py:265 lib/user_interaction/partitioning_conf.py:270 -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"منتخب کریں کہ کس پارٹیشن کو انکرپٹڈ یا خفیہ رکھنا ہے" - -#: lib/user_interaction.py:725 lib/user_interaction.py:732 lib/user_interaction.py:735 lib/user_interaction.py:738 lib/user_interaction.py:737 lib/user_interaction/partitioning_conf.py:274 lib/user_interaction/partitioning_conf.py:279 -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"منتخب کریں کہ کس پارٹیشن کو بوٹ ایبل رکھنا ہے" - -#: lib/user_interaction.py:732 lib/user_interaction.py:739 lib/user_interaction.py:742 lib/user_interaction.py:745 lib/user_interaction.py:744 lib/user_interaction/partitioning_conf.py:282 lib/user_interaction/partitioning_conf.py:287 -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"فائل سسٹم کو کس پارٹیشن پر سیٹ کرنا ہے" - -#: lib/user_interaction.py:739 lib/user_interaction.py:746 lib/user_interaction.py:749 lib/user_interaction.py:752 lib/user_interaction.py:751 lib/user_interaction/partitioning_conf.py:289 lib/user_interaction/partitioning_conf.py:294 -msgid "Enter a desired filesystem type for the partition: " -msgstr "اس پارٹیشن کے لیے مطلوبہ فائل سسٹم درج کریں" - -#: lib/user_interaction.py:760 lib/menu/selection_menu.py:141 lib/user_interaction.py:767 lib/menu/selection_menu.py:139 lib/menu/selection_menu.py:143 lib/user_interaction.py:770 lib/user_interaction.py:773 lib/user_interaction.py:772 lib/menu/selection_menu.py:407 lib/menu/selection_menu.py:415 lib/menu/selection_menu.py:17 lib/user_interaction/general_conf.py:105 lib/user_interaction/global_menu.py:43 lib/menu/selection_menu.py:53 lib/menu/selection_menu.py:463 lib/menu/global_menu.py:43 -msgid "Select Archinstall language" -msgstr "آرچ انسٹال کے لیے زبان کا انتخاب کریں" - -#: lib/user_interaction.py:765 lib/user_interaction.py:772 lib/user_interaction.py:775 lib/user_interaction.py:778 lib/user_interaction.py:777 lib/user_interaction/disk_conf.py:40 -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "تمام منتخب ڈرائیوز کو صاف کریں اور ایک بہترین ڈیفالٹ پارٹیشن لے آؤٹ استعمال کریں" - -#: lib/user_interaction.py:766 lib/user_interaction.py:773 lib/user_interaction.py:776 lib/user_interaction.py:779 lib/user_interaction.py:778 lib/user_interaction/disk_conf.py:41 -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "منتخب کریں کہ ہر انفرادی ڈرائیو کے ساتھ کیا کرنا ہے (اس کے بعد پارٹیشن کا استعمال)" - -#: lib/user_interaction.py:769 lib/user_interaction.py:770 lib/user_interaction.py:777 lib/user_interaction.py:780 lib/user_interaction.py:783 lib/user_interaction.py:782 lib/user_interaction/disk_conf.py:45 -msgid "Select what you wish to do with the selected block devices" -msgstr "انتخاب کریں کہ آپ منتخب بلاک ڈیوائسز کے ساتھ کیا کرنا چاہتے ہیں" - -#: lib/user_interaction.py:822 lib/user_interaction.py:823 lib/user_interaction.py:830 lib/user_interaction.py:833 lib/user_interaction.py:836 lib/user_interaction.py:835 lib/user_interaction/general_conf.py:126 -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "یہ پہلے سے پروگرام شدہ پروفائلز کی فہرست ہے، وہ ڈیسک ٹاپ انسٹالیشن جیسی چیزوں کو آسان بناتے ہیں" - -#: lib/user_interaction.py:846 lib/user_interaction.py:847 lib/user_interaction.py:854 lib/user_interaction.py:857 lib/user_interaction.py:860 lib/user_interaction.py:859 lib/user_interaction/general_conf.py:71 -msgid "Select Keyboard layout" -msgstr "کی بورڈ لے آؤٹ کو منتخب کریں" - -#: lib/user_interaction.py:861 lib/user_interaction.py:862 lib/user_interaction.py:869 lib/user_interaction.py:872 lib/user_interaction.py:875 lib/user_interaction.py:874 lib/user_interaction/general_conf.py:92 -msgid "Select one of the regions to download packages from" -msgstr "پیکیجز ڈاؤن لوڈ کرنے کے لیے علاقوں میں سے ایک کو منتخب کریں" - -#: lib/user_interaction.py:883 lib/user_interaction.py:884 lib/user_interaction.py:891 lib/user_interaction.py:894 lib/user_interaction.py:897 lib/user_interaction.py:896 lib/user_interaction/system_conf.py:52 -msgid "Select one or more hard drives to use and configure" -msgstr "استعمال کرنے اور کنفیگر کے لیے ایک یا زیادہ ہارڈ ڈرائیوز منتخب کریں" - -#: lib/user_interaction.py:910 lib/user_interaction.py:911 lib/user_interaction.py:918 lib/user_interaction.py:921 lib/user_interaction.py:924 lib/user_interaction.py:923 lib/user_interaction/system_conf.py:80 -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "اپنے AMD ہارڈویئر کے ساتھ بہترین مطابقت کے لیے، آپ یا تو تمام اوپن سورس یا AMD/ATI آپشنز استعمال کرنا چاہیں گے" - -#: lib/user_interaction.py:912 lib/user_interaction.py:913 lib/user_interaction.py:920 lib/user_interaction.py:923 lib/user_interaction.py:926 lib/user_interaction.py:925 lib/user_interaction/system_conf.py:84 -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "اپنے intel ہارڈویئر کے ساتھ بہترین مطابقت کے لیے، آپ یا تو تمام اوپن سورس یا intel آپشنز استعمال کرنا چاہیں گے۔\n" - -#: lib/user_interaction.py:914 lib/user_interaction.py:915 lib/user_interaction.py:922 lib/user_interaction.py:925 lib/user_interaction.py:928 lib/user_interaction.py:927 lib/user_interaction/system_conf.py:88 -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "اپنے Nvidia ہارڈویئر کے ساتھ بہترین مطابقت کے لیے، آپ Nvidia کے ملکیتی ڈرائیور کو استعمال کرنا چاہیں گے۔\n" - -#: lib/user_interaction.py:917 lib/user_interaction.py:918 lib/user_interaction.py:925 lib/user_interaction.py:928 lib/user_interaction.py:931 lib/user_interaction.py:930 lib/user_interaction/system_conf.py:92 -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"\n" -"ایک گرافکس ڈرائیور منتخب کریں یا تمام اوپن سورس ڈرائیورز کو انسٹال کرنے کے لیے خالی چھوڑ دیں" - -#: lib/user_interaction.py:921 lib/user_interaction.py:922 lib/user_interaction.py:929 lib/user_interaction.py:932 lib/user_interaction.py:935 lib/user_interaction.py:934 lib/user_interaction/system_conf.py:96 -msgid "All open-source (default)" -msgstr "سبھی اوپن سورس (ڈیفالٹ)" - -#: lib/user_interaction.py:940 lib/user_interaction.py:941 lib/user_interaction.py:948 lib/user_interaction.py:951 lib/user_interaction.py:954 lib/user_interaction.py:953 lib/user_interaction/system_conf.py:28 -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "منتخب کریں کہ کن کنلز کو استعمال کرنا ہے یا ڈیفالٹ \"{}\" کے لیے خالی چھوڑ دیں" - -#: lib/user_interaction.py:954 lib/user_interaction.py:955 lib/user_interaction.py:962 lib/user_interaction.py:965 lib/user_interaction.py:968 lib/user_interaction.py:967 lib/user_interaction/locale_conf.py:16 -msgid "Choose which locale language to use" -msgstr "منتخب کریں کہ کون سی مقامی زبان استعمال کرنی ہے" - -#: lib/user_interaction.py:968 lib/user_interaction.py:969 lib/user_interaction.py:976 lib/user_interaction.py:979 lib/user_interaction.py:982 lib/user_interaction.py:981 lib/user_interaction/locale_conf.py:29 -msgid "Choose which locale encoding to use" -msgstr "منتخب کریں کہ کون سا مقامی انکوڈنگ استعمال کرنا ہے" - -#: lib/user_interaction.py:1009 lib/user_interaction.py:1010 lib/user_interaction.py:1017 lib/user_interaction.py:1020 lib/user_interaction.py:1023 lib/user_interaction.py:1022 lib/user_interaction/backwards_compatible_conf.py:49 -msgid "Select one of the values shown below: " -msgstr "ذیل میں دکھائی گئی قدروں میں سے ایک کو منتخب کریں:" - -#: lib/user_interaction.py:1050 lib/user_interaction.py:1051 lib/user_interaction.py:1058 lib/user_interaction.py:1061 lib/user_interaction.py:1064 lib/user_interaction.py:1063 lib/user_interaction/backwards_compatible_conf.py:88 -msgid "Select one or more of the options below: " -msgstr "ذیل میں سے ایک یا زیادہ اختیارات کو منتخب کریں:" - -#: lib/disk/filesystem.py:86 lib/disk/filesystem.py:87 -msgid "Adding partition...." -msgstr "پارٹیشن شامل ہو رہی ہے..." - -#: lib/disk/filesystem.py:139 lib/disk/filesystem.py:141 lib/disk/filesystem.py:142 -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "جاری رکھنے کے لیے آپ کو ایک درست fs-typeدرج کرنے کی ضرورت ہے۔ درست fs-types کے لیے 'man parted' دیکھیں۔" - -#: lib/profiles.py:89 lib/profiles.py:90 -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "خرابی: URL \"{}\" پر پروفائلز کی فہرست بنانے کا نتیجہ یہ ہوا:" - -#: lib/profiles.py:92 lib/profiles.py:93 -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "خرابی: \"{}\" نتیجہ کو JSON کے بطور ڈی کوڈ نہیں کیا جا سکا:" - -#: lib/menu/selection_menu.py:146 lib/menu/selection_menu.py:144 lib/menu/selection_menu.py:148 lib/menu/selection_menu.py:412 lib/menu/selection_menu.py:420 lib/user_interaction/global_menu.py:48 lib/menu/selection_menu.py:468 lib/menu/global_menu.py:48 -msgid "Select keyboard layout" -msgstr "کی بورڈ لے آؤٹ کو منتخب کریں" - -#: lib/menu/selection_menu.py:149 lib/menu/selection_menu.py:147 lib/menu/selection_menu.py:151 lib/menu/selection_menu.py:415 lib/menu/selection_menu.py:423 lib/user_interaction/global_menu.py:51 lib/menu/selection_menu.py:471 lib/menu/global_menu.py:51 -msgid "Select mirror region" -msgstr "متبادل علاقہ منتخب کریں" - -#: lib/menu/selection_menu.py:154 lib/menu/selection_menu.py:152 lib/menu/selection_menu.py:156 lib/menu/selection_menu.py:420 lib/menu/selection_menu.py:428 lib/user_interaction/global_menu.py:56 lib/menu/selection_menu.py:476 lib/menu/global_menu.py:56 -msgid "Select locale language" -msgstr "منتخب کریں کہ کون سی مقامی زبان استعمال کرنی ہے" - -#: lib/menu/selection_menu.py:156 lib/menu/selection_menu.py:154 lib/menu/selection_menu.py:158 lib/menu/selection_menu.py:422 lib/menu/selection_menu.py:430 lib/user_interaction/global_menu.py:58 lib/menu/selection_menu.py:478 lib/menu/global_menu.py:58 -msgid "Select locale encoding" -msgstr "منتخب کریں کہ کون سا مقامی انکوڈنگ استعمال کرنا ہے" - -#: lib/menu/selection_menu.py:159 lib/menu/selection_menu.py:157 lib/menu/selection_menu.py:161 lib/menu/selection_menu.py:425 lib/menu/selection_menu.py:433 lib/user_interaction/global_menu.py:61 lib/menu/selection_menu.py:481 lib/menu/global_menu.py:61 -msgid "Select harddrives" -msgstr "ہارڈ ڈرائیوز کو منتخب کریں" - -#: lib/menu/selection_menu.py:163 lib/menu/selection_menu.py:161 lib/menu/selection_menu.py:165 lib/menu/selection_menu.py:429 lib/menu/selection_menu.py:437 lib/user_interaction/global_menu.py:65 lib/menu/selection_menu.py:485 lib/menu/global_menu.py:65 -msgid "Select disk layout" -msgstr "ڈسک لے آؤٹ کو منتخب کریں" - -#: lib/menu/selection_menu.py:171 lib/menu/selection_menu.py:169 lib/menu/selection_menu.py:173 lib/menu/selection_menu.py:437 lib/menu/selection_menu.py:445 lib/user_interaction/global_menu.py:73 lib/menu/selection_menu.py:493 lib/menu/global_menu.py:73 -msgid "Set encryption password" -msgstr "انکرپشن پاس ورڈ سیٹ کریں" - -#: lib/menu/selection_menu.py:177 lib/menu/selection_menu.py:175 lib/menu/selection_menu.py:179 lib/menu/selection_menu.py:443 lib/menu/selection_menu.py:451 lib/user_interaction/global_menu.py:79 lib/menu/selection_menu.py:499 lib/menu/global_menu.py:79 -msgid "Use swap" -msgstr "سواپ کا استعمال کریں" - -#: lib/menu/selection_menu.py:182 lib/menu/selection_menu.py:180 lib/menu/selection_menu.py:184 lib/menu/selection_menu.py:448 lib/menu/selection_menu.py:456 lib/user_interaction/global_menu.py:84 lib/menu/selection_menu.py:504 lib/menu/global_menu.py:84 -msgid "Select bootloader" -msgstr "بوٹ لوڈرکا انتخاب کریں" - -#: lib/menu/selection_menu.py:188 lib/menu/selection_menu.py:186 lib/menu/selection_menu.py:190 lib/menu/selection_menu.py:454 lib/menu/selection_menu.py:462 lib/user_interaction/global_menu.py:95 lib/menu/selection_menu.py:515 lib/menu/global_menu.py:95 -msgid "Set root password" -msgstr "روٹ پاس ورڈ سیٹ کریں" - -#: lib/menu/selection_menu.py:193 lib/menu/selection_menu.py:191 lib/menu/selection_menu.py:195 lib/menu/selection_menu.py:459 lib/menu/selection_menu.py:467 lib/user_interaction/global_menu.py:100 lib/menu/selection_menu.py:520 lib/menu/global_menu.py:100 -msgid "Specify superuser account" -msgstr "سپر یوزر اکاؤنٹ کی وضاحت کریں" - -#: lib/menu/selection_menu.py:199 lib/menu/selection_menu.py:197 lib/menu/selection_menu.py:201 lib/menu/selection_menu.py:465 lib/menu/selection_menu.py:473 lib/user_interaction/global_menu.py:107 lib/menu/selection_menu.py:528 lib/menu/global_menu.py:107 -msgid "Specify user account" -msgstr "یوزر اکاؤنٹ کی وضاحت کریں" - -#: lib/menu/selection_menu.py:205 lib/menu/selection_menu.py:203 lib/menu/selection_menu.py:207 lib/menu/selection_menu.py:471 lib/menu/selection_menu.py:479 lib/user_interaction/global_menu.py:114 lib/menu/selection_menu.py:535 lib/menu/global_menu.py:114 -msgid "Specify profile" -msgstr "پروفائل کی وضاحت کریں" - -#: lib/menu/selection_menu.py:210 lib/menu/selection_menu.py:208 lib/menu/selection_menu.py:212 lib/menu/selection_menu.py:476 lib/menu/selection_menu.py:484 lib/user_interaction/global_menu.py:119 lib/menu/selection_menu.py:540 lib/menu/global_menu.py:119 -msgid "Select audio" -msgstr "آڈیو کا انتخاب کریں" - -#: lib/menu/selection_menu.py:214 lib/menu/selection_menu.py:212 lib/menu/selection_menu.py:216 lib/menu/selection_menu.py:480 lib/menu/selection_menu.py:488 lib/user_interaction/global_menu.py:123 lib/menu/selection_menu.py:544 lib/menu/global_menu.py:123 -msgid "Select kernels" -msgstr "کرنلز منتخب کریں" - -#: lib/menu/selection_menu.py:219 lib/menu/selection_menu.py:217 lib/menu/selection_menu.py:221 lib/menu/selection_menu.py:485 lib/menu/selection_menu.py:493 lib/user_interaction/global_menu.py:128 lib/menu/selection_menu.py:549 lib/menu/global_menu.py:128 -msgid "Additional packages to install" -msgstr "انسٹال کرنے کے لیے اضافی پیکجز" - -#: lib/menu/selection_menu.py:224 lib/menu/selection_menu.py:222 lib/menu/selection_menu.py:226 lib/menu/selection_menu.py:490 lib/menu/selection_menu.py:498 lib/user_interaction/global_menu.py:139 lib/menu/selection_menu.py:560 lib/menu/global_menu.py:139 -msgid "Configure network" -msgstr "نیٹ ورک ترتیب دیں" - -#: lib/menu/selection_menu.py:232 lib/menu/selection_menu.py:230 lib/menu/selection_menu.py:234 lib/menu/selection_menu.py:498 lib/menu/selection_menu.py:506 lib/user_interaction/global_menu.py:150 lib/menu/selection_menu.py:571 lib/menu/global_menu.py:150 -msgid "Set automatic time sync (NTP)" -msgstr "خودکار وقت کی مطابقت سیٹ کریں (NTP)" - -#: lib/menu/selection_menu.py:310 lib/menu/selection_menu.py:308 lib/menu/selection_menu.py:315 lib/menu/selection_menu.py:527 lib/menu/selection_menu.py:535 lib/user_interaction/global_menu.py:187 lib/menu/selection_menu.py:608 lib/menu/global_menu.py:187 -msgid "Install ({} config(s) missing)" -msgstr "انسٹال کریں ({} کنفیگریشنز غائب ہیں)" - -#: lib/menu/selection_menu.py:373 lib/menu/selection_menu.py:371 lib/menu/selection_menu.py:378 lib/menu/selection_menu.py:591 lib/menu/selection_menu.py:599 lib/user_interaction/global_menu.py:249 lib/menu/selection_menu.py:669 lib/menu/global_menu.py:249 -msgid "" -"You decided to skip harddrive selection\n" -"and will use whatever drive-setup is mounted at {} (experimental)\n" -"WARNING: Archinstall won't check the suitability of this setup\n" -"Do you wish to continue?" -msgstr "" -"آپ نے ہارڈ ڈرائیو کا انتخاب چھوڑنے کا فیصلہ کیا۔\n" -"اور جو بھی ڈرائیو سیٹ اپ {} (تجرباتی) پر ماؤنٹ کیا گیا ہے اسے استعمال کرے گا۔\n" -"انتباہ: آرچ انسٹال اس سیٹ اپ کی مناسبیت کی جانچ نہیں کرے گا۔\n" -"کیا آپ جاری رکھنا چاہتے ہیں؟" - -#: lib/disk/filesystem.py:97 lib/disk/filesystem.py:98 -msgid "Re-using partition instance: {}" -msgstr "پارٹیشن کو دوبارہ استعمال کرنا: {}" - -#: lib/user_interaction.py:590 lib/user_interaction.py:593 lib/user_interaction.py:596 lib/user_interaction.py:595 lib/user_interaction/partitioning_conf.py:119 lib/user_interaction/partitioning_conf.py:120 -msgid "Create a new partition" -msgstr "ایک نیا پارٹیشن بنائیں" - -#: lib/user_interaction.py:592 lib/user_interaction.py:595 lib/user_interaction.py:598 lib/user_interaction.py:597 lib/user_interaction/partitioning_conf.py:121 lib/user_interaction/partitioning_conf.py:122 -msgid "Delete a partition" -msgstr "ایک پارٹیشن کو حذف کریں" - -#: lib/user_interaction.py:593 lib/user_interaction.py:596 lib/user_interaction.py:599 lib/user_interaction.py:598 lib/user_interaction/partitioning_conf.py:122 lib/user_interaction/partitioning_conf.py:123 -msgid "Clear/Delete all partitions" -msgstr "تمام پارٹیشنز کو صاف/حذف کریں" - -#: lib/user_interaction.py:594 lib/user_interaction.py:597 lib/user_interaction.py:600 lib/user_interaction.py:599 lib/user_interaction/partitioning_conf.py:123 lib/user_interaction/partitioning_conf.py:124 -msgid "Assign mount-point for a partition" -msgstr "پارٹیشن کے لیے ماؤنٹ پوائنٹ تفویض کریں" - -#: lib/user_interaction.py:595 lib/user_interaction.py:598 lib/user_interaction.py:601 lib/user_interaction.py:600 lib/user_interaction/partitioning_conf.py:124 lib/user_interaction/partitioning_conf.py:125 -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "فارمیٹ کرنے کے لیے پارٹیشن کو مارک /انمارک کریں (ڈیٹا صاف کرتا ہے)" - -#: lib/user_interaction.py:596 lib/user_interaction.py:599 lib/user_interaction.py:602 lib/user_interaction.py:601 lib/user_interaction/partitioning_conf.py:125 lib/user_interaction/partitioning_conf.py:126 -msgid "Mark/Unmark a partition as encrypted" -msgstr "انکرپٹڈ کرنے کے لیے پارٹیشن کو مارک /انمارک کریں" - -#: lib/user_interaction.py:597 lib/user_interaction.py:600 lib/user_interaction.py:603 lib/user_interaction.py:602 lib/user_interaction/partitioning_conf.py:126 lib/user_interaction/partitioning_conf.py:127 -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "بوٹ ایبل کرنے کے لیے پارٹیشن کو مارک/ انمارک کریں(/boot)" - -#: lib/user_interaction.py:598 lib/user_interaction.py:601 lib/user_interaction.py:604 lib/user_interaction.py:603 lib/user_interaction/partitioning_conf.py:127 lib/user_interaction/partitioning_conf.py:128 -msgid "Set desired filesystem for a partition" -msgstr "اس پارٹیشن کے لیے مطلوبہ فائل سسٹم درج کریں" - -#: lib/menu/selection_menu.py:239 lib/menu/selection_menu.py:237 lib/menu/selection_menu.py:241 lib/menu/selection_menu.py:270 lib/menu/selection_menu.py:507 lib/menu/selection_menu.py:515 lib/user_interaction/global_menu.py:167 lib/menu/selection_menu.py:588 lib/menu/global_menu.py:167 -msgid "Abort" -msgstr "ختم کریں" - -#: lib/menu/selection_menu.py:183 lib/menu/selection_menu.py:187 lib/menu/selection_menu.py:451 lib/menu/selection_menu.py:459 lib/user_interaction/global_menu.py:89 lib/menu/selection_menu.py:509 lib/menu/global_menu.py:89 -msgid "Specify hostname" -msgstr "میزبان نام کی وضاحت کریں" - -#: lib/menu/selection_menu.py:228 lib/menu/selection_menu.py:492 lib/menu/selection_menu.py:500 lib/user_interaction/global_menu.py:141 lib/menu/selection_menu.py:562 lib/menu/global_menu.py:141 -msgid "Not configured, unavailable unless setup manually" -msgstr "کنفیگر نہیں، دستیاب نہیں جب تک کہ دستی طور پر سیٹ اپ نہ کیا جائے" - -#: lib/menu/selection_menu.py:231 lib/menu/selection_menu.py:495 lib/menu/selection_menu.py:503 lib/user_interaction/global_menu.py:145 lib/menu/selection_menu.py:566 lib/menu/global_menu.py:145 -msgid "Select timezone" -msgstr "ٹائم زون کا انتخاب کریں" - -#: lib/menu/selection_menu.py:266 lib/menu/selection_menu.py:276 lib/menu/selection_menu.py:312 -msgid "Set/Modify the below options" -msgstr "ذیل کے اختیارات کو سیٹ/ترمیم کریں" - -#: lib/menu/selection_menu.py:272 -msgid "Install" -msgstr "انسٹال" - -#: lib/menu/menu.py:68 lib/menu/menu.py:75 lib/menu/menu.py:119 -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"چھوڑنے کے لیے ESC استعمال کریں\n" -"\n" - -#: lib/user_interaction.py:591 lib/user_interaction.py:594 lib/user_interaction.py:597 lib/user_interaction.py:596 lib/user_interaction/partitioning_conf.py:120 lib/user_interaction/partitioning_conf.py:121 -msgid "Suggest partition layout" -msgstr "پارٹیشن لے آؤٹ تجویز کریں" - -#: lib/user_interaction.py:101 lib/user_interaction/utils.py:43 -msgid "Enter a password: " -msgstr "پاس ورڈ درج کریں:" - -#: lib/disk/filesystem.py:117 lib/disk/filesystem.py:118 -msgid "Enter a encryption password for {}" -msgstr "{} کے لیے ایک انکرپشن پاس ورڈ درج کریں" - -#: lib/menu/selection_menu.py:174 lib/menu/selection_menu.py:567 lib/menu/selection_menu.py:575 lib/user_interaction/global_menu.py:225 lib/menu/selection_menu.py:646 lib/menu/global_menu.py:225 -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "ڈسک انکرپشن پاس ورڈ درج کریں (انکرپشن کو غیر فعال کرنے کے لیے خالی چھوڑ دیں):" - -#: lib/menu/selection_menu.py:407 lib/menu/selection_menu.py:617 lib/menu/selection_menu.py:625 -msgid "Create a required super-user with sudo privileges: " -msgstr "sudo مراعات کے ساتھ ایک مطلوبہ سپر صارف بنائیں:" - -#: lib/menu/selection_menu.py:347 lib/menu/selection_menu.py:554 lib/menu/selection_menu.py:562 lib/user_interaction/global_menu.py:220 lib/menu/selection_menu.py:641 lib/menu/global_menu.py:220 -msgid "Enter root password (leave blank to disable root): " -msgstr "روٹ پاس ورڈ درج کریں (روٹ کو غیر فعال کرنے کے لیے خالی چھوڑ دیں):" - -#: lib/user_interaction.py:307 lib/user_interaction.py:324 lib/user_interaction/manage_users_conf.py:86 lib/user_interaction/manage_users_conf.py:121 -msgid "Password for user \"{}\": " -msgstr "صارف \"{}\" کے لیے پاس ورڈ:" - -#: lib/user_interaction.py:405 lib/user_interaction.py:408 lib/user_interaction.py:407 lib/user_interaction/general_conf.py:152 -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "اس بات کی تصدیق ہو رہی ہےکہ اضافی پیکجز موجود ہیں (اس میں چند سیکنڈ لگ سکتے ہیں)" - -#: lib/user_interaction.py:281 lib/user_interaction/general_conf.py:22 -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "کیا آپ ڈیفالٹ ٹائم سرورز کے ساتھ آٹومیٹک ٹائم سنکرونائزیشن (NTP) استعمال کرنا چاہیں گے؟\n" - -#: lib/user_interaction.py:282 lib/user_interaction/general_conf.py:23 -msgid "" -"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" -"For more information, please check the Arch wiki" -msgstr "" -"NTP کے کام کرنے کے لیے ہارڈ ویئر کا وقت اور کنفیگریشن کے بعد کے دیگر اقدامات درکار ہو سکتے ہیں۔\n" -"مزید معلومات کے لیے، براہ کرم آرک ویکی کو دیکھیں" - -#: lib/menu/selection_menu.py:411 lib/menu/selection_menu.py:621 lib/menu/selection_menu.py:629 -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "ایک اضافی صارف بنانے کے لیے صارف نام درج کریں (چھوڑنے کے لیے خالی چھوڑیں):" - -#: lib/menu/menu.py:116 -msgid "Use ESC to skip\n" -msgstr "چھوڑنے کے لیے ESC استعمال کریں\n" - -#: lib/menu/list_manager.py:117 -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" - -#: lib/menu/list_manager.py:130 lib/user_interaction/subvolume_config.py:90 -msgid "Cancel" -msgstr "منسوخ کریں" - -#: lib/menu/list_manager.py:131 -msgid "Confirm and exit" -msgstr "تصدیق کریں اور باہر نکلیں" - -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:228 lib/menu/list_manager.py:251 lib/menu/list_manager.py:276 lib/user_interaction/subvolume_config.py:12 lib/user_interaction/subvolume_config.py:44 lib/user_interaction/subvolume_config.py:78 lib/user_interaction/subvolume_config.py:82 lib/user_interaction/subvolume_config.py:85 -msgid "Add" -msgstr "شامل" - -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:231 lib/menu/list_manager.py:255 lib/user_interaction/subvolume_config.py:78 -msgid "Copy" -msgstr "کاپی" - -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:237 lib/menu/list_manager.py:261 lib/user_interaction/subvolume_config.py:82 lib/user_interaction/subvolume_config.py:85 -msgid "Edit" -msgstr "ترمیم" - -#: lib/menu/list_manager.py:135 lib/menu/list_manager.py:242 lib/menu/list_manager.py:264 lib/user_interaction/subvolume_config.py:40 -msgid "Delete" -msgstr "حذف" - -#: lib/menu/list_manager.py:185 -msgid "Select an action for < {} >" -msgstr "< {} > کے لیے ایک عمل منتخب کریں" - -#: lib/menu/list_manager.py:229 -msgid "Add :" -msgstr "شامل:" - -#: lib/menu/list_manager.py:233 -msgid "Copy to :" -msgstr "اس میں کاپی :" - -#: lib/menu/list_manager.py:240 -msgid "Edite :" -msgstr "ترمیم:" - -#: lib/menu/list_manager.py:252 -msgid "Key :" -msgstr "کلید:" - -#: lib/menu/list_manager.py:253 -msgid "Value :" -msgstr "قدر:" - -#: lib/menu/list_manager.py:257 -msgid "Copy to new key:" -msgstr "نئی کلید میں کاپی کریں:" - -#: lib/menu/list_manager.py:262 -#, python-brace-format -msgid "Edit {origkey} :" -msgstr "ترمیم {origkey} :" - -#: lib/models/network_configuration.py:53 lib/models/network_configuration.py:74 -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "نامعلوم nic قسم: {}۔ ممکنہ قدریں ہیں {}" - -#: lib/configuration.py:75 -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"یہ آپ کی منتخب کردہ ترتیب ہے:" - -#: lib/pacman.py:18 -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Pacman پہلے ہی چل رہا ہے، اس کے ختم ہونے کے لیے زیادہ سے زیادہ 10 منٹ انتظار " - -#: lib/pacman.py:25 -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "پہلے سے موجود پیک مین لاک کبھی نہیں نکلا۔ براہ کرم archinstall استعمال کرنے سے پہلے کسی بھی موجودہ pacman سیشن کو صاف کریں۔" - -#: lib/user_interaction/general_conf.py:174 -msgid "Choose which optional additional repositories to enable" -msgstr "منتخب کریں کہ کون سے اختیاری اضافی ریپوزیٹریز کو فعال کرنا ہے" - -#: lib/user_interaction/manage_users_conf.py:32 -msgid "Add an user" -msgstr "ایک صارف شامل کریں" - -#: lib/user_interaction/manage_users_conf.py:33 -msgid "Change password" -msgstr "پاس ورڈ تبدیل کریں" - -#: lib/user_interaction/manage_users_conf.py:34 -msgid "Promote/Demote user" -msgstr "صارف کو پروموٹ/ڈیموٹ کریں" - -#: lib/user_interaction/manage_users_conf.py:35 -msgid "Delete User" -msgstr "صارف کو حذف کریں" - -#: lib/user_interaction/manage_users_conf.py:99 -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"ایک نئے صارف کی وضاحت کریں۔\n" - -#: lib/user_interaction/manage_users_conf.py:100 -msgid "User Name : " -msgstr "صارف کا نام:" - -#: lib/user_interaction/manage_users_conf.py:115 -msgid "Should {} be a superuser (sudoer)?" -msgstr "کیا {} کو سپر یوزر (sudoer) ہونا چاہیے؟" - -#: lib/user_interaction/manage_users_conf.py:161 -msgid "Define users with sudo privilege: " -msgstr "sudo استحقاق کے ساتھ صارفین کی وضاحت کریں:" - -#: lib/user_interaction/network_conf.py:24 -msgid "No network configuration" -msgstr "کوئی نیٹ ورک کنفیگریشن نہیں ہے" - -#: lib/user_interaction/partitioning_conf.py:128 lib/user_interaction/partitioning_conf.py:129 -#, fuzzy -msgid "Set desired subvolumes on a btrfs partition" -msgstr "اس پارٹیشن کے لیے مطلوبہ فائل سسٹم درج کریں" - -#: lib/user_interaction/partitioning_conf.py:296 lib/user_interaction/partitioning_conf.py:303 -#, fuzzy -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"فائل سسٹم کو کس پارٹیشن پر سیٹ کرنا ہے" - -#: lib/user_interaction/partitioning_conf.py:305 lib/user_interaction/partitioning_conf.py:312 -msgid "Manage btrfs subvolumes for current partition" -msgstr "" - -#: lib/user_interaction/save_conf.py:24 lib/user_interaction/save_conf.py:29 -msgid "No configuration" -msgstr "کوئی کنفیگریشن نہیں" - -#: lib/user_interaction/save_conf.py:42 -msgid "Save user configuration" -msgstr "صارف کنفیگریشن کو محفوظ کریں" - -#: lib/user_interaction/save_conf.py:43 -msgid "Save user credentials" -msgstr "صارف کی اسناد کو محفوظ کریں" - -#: lib/user_interaction/save_conf.py:44 -msgid "Save disk layout" -msgstr "ڈسک لے آؤٹ کو محفوظ کریں" - -#: lib/user_interaction/save_conf.py:45 -msgid "Save all" -msgstr "سب کو محفوظ کریں" - -#: lib/user_interaction/save_conf.py:48 -msgid "Choose which configuration to save" -msgstr "منتخب کریں کہ کون سی کنفیگریشن محفوظ کرنی ہے" - -#: lib/user_interaction/save_conf.py:59 -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "محفوظ کیے جانے والے کنفیگریشن کے لیے ایک ڈائرکٹری درج کریں:" - -#: lib/user_interaction/save_conf.py:63 -msgid "Not a valid directory: {}" -msgstr "درست ڈائریکٹری نہیں ہے: {}" - -#: lib/user_interaction/utils.py:32 -msgid "The password you are using seems to be weak," -msgstr "آپ جو پاس ورڈ استعمال کر رہے ہیں وہ کمزور لگ رہا ہے،" - -#: lib/user_interaction/utils.py:33 -msgid "are you sure you want to use it?" -msgstr "کیا آپ واقعی اسے استعمال کرنا چاہتے ہیں؟" - -#: lib/user_interaction/global_menu.py:134 lib/menu/selection_menu.py:555 lib/menu/global_menu.py:134 -msgid "Additional repositories to enable" -msgstr "اضافی ریپوزٹریزکو فعال" - -#: lib/user_interaction/global_menu.py:155 lib/menu/selection_menu.py:576 lib/menu/global_menu.py:155 -msgid "Save configuration" -msgstr "ترتیب کو محفوظ کریں" - -#: lib/user_interaction/global_menu.py:192 lib/menu/selection_menu.py:613 lib/menu/global_menu.py:192 -msgid "Missing configurations:\n" -msgstr "لاپتہ کنفیگریشنز:\n" - -#: lib/user_interaction/global_menu.py:210 lib/menu/selection_menu.py:631 lib/menu/global_menu.py:210 -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "روٹ پاس ورڈ یا کم از کم ۱ سپر یوزر کی وضاحت ہونی چاہیے" - -#: lib/user_interaction/global_menu.py:275 lib/menu/selection_menu.py:695 lib/menu/global_menu.py:275 -msgid "Manage superuser accounts: " -msgstr "سپر یوزر اکاؤنٹس کا نظم کریں:" - -#: lib/user_interaction/global_menu.py:279 lib/menu/selection_menu.py:699 lib/menu/global_menu.py:279 -msgid "Manage ordinary user accounts: " -msgstr "عام صارف اکاؤنٹس کا نظم کریں:" - -#: lib/user_interaction/subvolume_config.py:17 -msgid " Subvolume :{:16}" -msgstr "" - -#: lib/user_interaction/subvolume_config.py:19 lib/user_interaction/subvolume_config.py:22 -msgid " mounted at {:16}" -msgstr "" - -#: lib/user_interaction/subvolume_config.py:26 -msgid " with option {}" -msgstr "" - -#: lib/user_interaction/subvolume_config.py:46 -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" - -#: lib/user_interaction/subvolume_config.py:77 -msgid "Subvolume name " -msgstr "" - -#: lib/user_interaction/subvolume_config.py:81 -msgid "Subvolume mountpoint" -msgstr "" - -#: lib/user_interaction/subvolume_config.py:84 -msgid "Subvolume options" -msgstr "" - -#: lib/user_interaction/subvolume_config.py:87 -#, fuzzy -msgid "Save" -msgstr "سب کو محفوظ کریں" - -#: lib/user_interaction/subvolume_config.py:121 -msgid "Subvolume name :" -msgstr "" - -#: lib/user_interaction/subvolume_config.py:124 -#, fuzzy -msgid "Select a mount point :" -msgstr "ٹائم زون کا انتخاب کریں" - -#: lib/user_interaction/subvolume_config.py:128 -msgid "Select the desired subvolume options " -msgstr "" - -#: lib/user_interaction/manage_users_conf.py:161 -#, fuzzy -msgid "Define users with sudo privilege, by username: " -msgstr "sudo استحقاق کے ساتھ صارفین کی وضاحت کریں:" - -#: lib/installer.py:152 -#, fuzzy -msgid "[!] A log file has been created here: {}" -msgstr "[!] یہاں ایک لاگ فائل بنائی گئی ہے: {} {}" - -#~ msgid "Choose an object from the list" -#~ msgstr "فہرست سے ایک آبجیکٹ منتخب کریں۔" diff --git a/docs/installing/guided.rst b/docs/installing/guided.rst index ac6254f2..569b2d05 100644 --- a/docs/installing/guided.rst +++ b/docs/installing/guided.rst @@ -163,21 +163,20 @@ Options for ``--creds`` "!root-password" : "SecretSanta2022" } -+----------------------+-----------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+ -| Key | Values | Description | Required | -| | | | | -+======================+=====================================================+======================================================================================+===============================================+ -| !encryption-password | any | Password to encrypt disk, not encrypted if password not provided | No | -+----------------------+-----------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+ -| !root-password | any | The root account password | No | -+----------------------+-----------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+ -| !superusers | { "<username>": { "!password": "<password>"}, ..} | List of superuser credentials, see configuration for reference | Yes[1] | -+----------------------+-----------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+ -| !users | { "<username>": { "!password": "<password>"}, ..} | List of regular user credentials, see configuration for reference | No | -+----------------------+-----------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+ ++----------------------+--------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+ +| Key | Values | Description | Required | ++======================+========================================================+======================================================================================+===============================================+ +| !encryption-password | any | Password to encrypt disk, not encrypted if password not provided | No | ++----------------------+--------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+ +| !root-password | any | The root account password | No | ++----------------------+--------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+ +| !users | { "username": "<USERNAME>" | List of regular user credentials, see configuration for reference | No | +| | "!password": "<PASSWORD>", | | | +| | "sudo": false|true} | | | ++----------------------+--------------------------------------------------------+--------------------------------------------------------------------------------------+-----------------------------------------------+ .. note:: - [1] ``!superusers`` is optional only if ``!root-password`` was set. ``!superusers`` will be enforced otherwise and the minimum amount of superusers required will be set to 1. + [1] ``!users`` is optional only if ``!root-password`` was set. ``!users`` will be enforced otherwise and the minimum amount of users with sudo privileges required will be set to 1. Options for ``--disk_layouts`` ------------------------------ diff --git a/examples/creds-sample.json b/examples/creds-sample.json index 16aeb8cc..0681e16f 100644 --- a/examples/creds-sample.json +++ b/examples/creds-sample.json @@ -1,9 +1,15 @@ { "!root-password": "<root password>", - "!users": { - "username": {"!password": "<user password>"} - }, - "!superusers": { - "admin": {"!password": "<admin password>"} - } -}
\ No newline at end of file + "!users": [ + { + "username": "<USERNAME>", + "!password": "<PASSWORD>", + "sudo": false + }, + { + "username": "<SUDO_USERNAME>", + "!password": "<PASSWORD>", + "sudo": true + } + ] +} diff --git a/examples/guided.py b/examples/guided.py index 15226668..19b0d638 100644 --- a/examples/guided.py +++ b/examples/guided.py @@ -3,7 +3,7 @@ import os import time import archinstall -from archinstall import ConfigurationOutput +from archinstall import ConfigurationOutput, Menu from archinstall.lib.models.network_configuration import NetworkConfigurationHandler if archinstall.arguments.get('help'): @@ -45,9 +45,8 @@ def ask_user_questions(): # Set which region to download packages from during the installation global_menu.enable('mirror-region') - if archinstall.arguments.get('advanced', False): - global_menu.enable('sys-language', True) - global_menu.enable('sys-encoding', True) + global_menu.enable('sys-language') + global_menu.enable('sys-encoding') # Ask which harddrives/block-devices we will install to # and convert them into archinstall.BlockDevice() objects. @@ -58,6 +57,10 @@ def ask_user_questions(): # Get disk encryption password (or skip if blank) global_menu.enable('!encryption-password') + if archinstall.arguments.get('advanced', False) or archinstall.arguments.get('HSM', None): + # Enables the use of HSM + global_menu.enable('HSM') + # Ask which boot-loader to use (will only ask if we're in UEFI mode, otherwise will default to GRUB) global_menu.enable('bootloader') @@ -69,7 +72,6 @@ def ask_user_questions(): # Ask for a root password (optional, but triggers requirement for super-user if skipped) global_menu.enable('!root-password') - global_menu.enable('!superusers') global_menu.enable('!users') # Ask for archinstall-specific profiles (such as desktop environments etc) @@ -131,6 +133,7 @@ def perform_installation(mountpoint): Only requirement is that the block devices are formatted and setup prior to entering this function. """ + with archinstall.Installer(mountpoint, kernels=archinstall.arguments.get('kernels', ['linux'])) as installation: # Mount all the drives to the desired mountpoint # This *can* be done outside of the installation, but the installer can deal with it. @@ -216,13 +219,8 @@ def perform_installation(mountpoint): if archinstall.arguments.get('profile', None): installation.install_profile(archinstall.arguments.get('profile', None)) - if archinstall.arguments.get('!users',{}): - for user, user_info in archinstall.arguments.get('!users', {}).items(): - installation.user_create(user, user_info["!password"], sudo=False) - - if archinstall.arguments.get('!superusers',{}): - for superuser, user_info in archinstall.arguments.get('!superusers', {}).items(): - installation.user_create(superuser, user_info["!password"], sudo=True) + if users := archinstall.arguments.get('!users', None): + installation.create_users(users) if timezone := archinstall.arguments.get('timezone', None): installation.set_timezone(timezone) @@ -257,9 +255,9 @@ def perform_installation(mountpoint): installation.log("For post-installation tips, see https://wiki.archlinux.org/index.php/Installation_guide#Post-installation", fg="yellow") if not archinstall.arguments.get('silent'): - prompt = 'Would you like to chroot into the newly created installation and perform post-installation configuration?' - choice = archinstall.Menu(prompt, ['yes', 'no'], default_option='yes').run() - if choice == 'yes': + prompt = str(_('Would you like to chroot into the newly created installation and perform post-installation configuration?')) + choice = Menu(prompt, Menu.yes_no(), default_option=Menu.yes()).run() + if choice == Menu.yes(): try: installation.drop_to_shell() except: @@ -300,7 +298,8 @@ if archinstall.arguments.get('dry_run'): exit(0) if not archinstall.arguments.get('silent'): - input('Press Enter to continue.') + input(str(_('Press Enter to continue.'))) +archinstall.configuration_sanity_check() perform_filesystem_operations() perform_installation(archinstall.storage.get('MOUNT_POINT', '/mnt')) diff --git a/examples/minimal.py b/examples/minimal.py index d80c4045..8b4c847f 100644 --- a/examples/minimal.py +++ b/examples/minimal.py @@ -1,6 +1,8 @@ import archinstall # Select a harddrive and a disk password +from archinstall import User + archinstall.log("Minimal only supports:") archinstall.log(" * Being installed to a single disk") @@ -28,8 +30,8 @@ def install_on(mountpoint): installation.add_additional_packages(['nano', 'wget', 'git']) installation.install_profile('minimal') - installation.user_create('devel', 'devel') - installation.user_set_pw('root', 'airoot') + user = User('devel', 'devel', False) + installation.create_users(user) # Once this is done, we output some useful information to the user # And the installation is complete. diff --git a/examples/swiss.py b/examples/swiss.py index baf7b618..d0f02dc1 100644 --- a/examples/swiss.py +++ b/examples/swiss.py @@ -20,7 +20,7 @@ import pathlib from typing import TYPE_CHECKING, Any import archinstall -from archinstall import ConfigurationOutput, NetworkConfigurationHandler +from archinstall import ConfigurationOutput, NetworkConfigurationHandler, Menu if TYPE_CHECKING: _: Any @@ -38,8 +38,8 @@ TODO exec con return parameter """ def select_activate_NTP(): prompt = "Would you like to use automatic time synchronization (NTP) with the default time servers? [Y/n]: " - choice = archinstall.Menu(prompt, ['yes', 'no'], default_option='yes').run() - if choice == 'yes': + choice = Menu(prompt, Menu.yes_no(), default_option=Menu.yes()).run() + if choice == Menu.yes(): return True else: return False @@ -160,8 +160,8 @@ class SetupMenu(archinstall.GeneralMenu): def _setup_selection_menu_options(self): self.set_option('archinstall-language', archinstall.Selector( - _('Select Archinstall language'), - lambda x: self._select_archinstall_language('English'), + _('Archinstall language'), + lambda x: self._select_archinstall_language(x), default='English', enabled=True)) self.set_option('ntp', @@ -219,7 +219,7 @@ class MyMenu(archinstall.GlobalMenu): if self._execution_mode in ('full','lineal'): options_list = ['keyboard-layout', 'mirror-region', 'harddrives', 'disk_layouts', '!encryption-password','swap', 'bootloader', 'hostname', '!root-password', - '!superusers', '!users', 'profile', 'audio', 'kernels', 'packages','additional-repositories','nic', + '!users', 'profile', 'audio', 'kernels', 'packages','additional-repositories','nic', 'timezone', 'ntp'] if archinstall.arguments.get('advanced',False): options_list.extend(['sys-language','sys-encoding']) @@ -229,7 +229,7 @@ class MyMenu(archinstall.GlobalMenu): mandatory_list = ['harddrives'] elif self._execution_mode == 'only_os': options_list = ['keyboard-layout', 'mirror-region','bootloader', 'hostname', - '!root-password', '!superusers', '!users', 'profile', 'audio', 'kernels', + '!root-password', '!users', 'profile', 'audio', 'kernels', 'packages', 'additional-repositories', 'nic', 'timezone', 'ntp'] mandatory_list = ['hostname'] if archinstall.arguments.get('advanced',False): @@ -262,8 +262,12 @@ class MyMenu(archinstall.GlobalMenu): def check(s): return self.option(s).has_selection() + def has_superuser() -> bool: + users = self._menu_options['!users'].current_selection + return any([u.sudo for u in users]) + _, missing = self.mandatory_overview() - if mode in ('full','only_os') and (not check('!root-password') and not check('!superusers')): + if mode in ('full','only_os') and (not check('!root-password') and not has_superuser()): missing += 1 if mode in ('full', 'only_hd') and check('harddrives'): if not self.option('harddrives').is_empty() and not check('disk_layouts'): @@ -420,13 +424,8 @@ def os_setup(installation): if archinstall.arguments.get('profile', None): installation.install_profile(archinstall.arguments.get('profile', None)) - if archinstall.arguments.get('!users',{}): - for user, user_info in archinstall.arguments.get('!users', {}).items(): - installation.user_create(user, user_info["!password"], sudo=False) - - if archinstall.arguments.get('!superusers',{}): - for superuser, user_info in archinstall.arguments.get('!superusers', {}).items(): - installation.user_create(superuser, user_info["!password"], sudo=True) + if users := archinstall.arguments.get('!users', None): + installation.create_users(users) if timezone := archinstall.arguments.get('timezone', None): installation.set_timezone(timezone) @@ -480,8 +479,8 @@ def perform_installation(mountpoint, mode): installation.log("For post-installation tips, see https://wiki.archlinux.org/index.php/Installation_guide#Post-installation", fg="yellow") if not archinstall.arguments.get('silent'): prompt = 'Would you like to chroot into the newly created installation and perform post-installation configuration?' - choice = archinstall.Menu(prompt, ['yes', 'no'], default_option='yes').run() - if choice == 'yes': + choice = Menu(prompt, Menu.yes_no(), default_option=Menu.yes()).run() + if choice == Menu.yes(): try: installation.drop_to_shell() except: diff --git a/profiles/52-54-00-12-34-56.py b/profiles/52-54-00-12-34-56.py index 0a1626d9..3b074629 100644 --- a/profiles/52-54-00-12-34-56.py +++ b/profiles/52-54-00-12-34-56.py @@ -40,7 +40,8 @@ with archinstall.Filesystem(harddrive) as fs: installation.add_additional_packages(__packages__) installation.install_profile('awesome') - installation.user_create('devel', 'devel') + user = User('devel', 'devel', False) + installation.create_users(user) installation.user_set_pw('root', 'toor') print(f'Submitting {archinstall.__version__}: success') diff --git a/profiles/awesome.py b/profiles/awesome.py index 9648fc4a..11c8de3b 100644 --- a/profiles/awesome.py +++ b/profiles/awesome.py @@ -7,9 +7,6 @@ is_top_level_profile = False # New way of defining packages for a profile, which is iterable and can be used out side # of the profile to get a list of "what packages will be installed". __packages__ = [ - "nemo", - "gpicview", - "maim", "alacritty", ] @@ -51,8 +48,4 @@ if __name__ == 'awesome': with open(f"{archinstall.storage['installation_session'].target}/etc/xdg/awesome/rc.lua", 'w') as fh: fh.write(awesome_lua) - # TODO: Configure the right-click-menu to contain the above packages that were installed. (as a user config) - - # Remove some interfering nemo settings - archinstall.storage['installation_session'].arch_chroot("gsettings set org.nemo.desktop show-desktop-icons false") - archinstall.storage['installation_session'].arch_chroot("xdg-mime default nemo.desktop inode/directory application/x-gnome-saved-search") + # TODO: Configure the right-click-menu to contain the above packages that were installed. (as a user config)
\ No newline at end of file diff --git a/profiles/desktop.py b/profiles/desktop.py index bd3353e8..e94d3505 100644 --- a/profiles/desktop.py +++ b/profiles/desktop.py @@ -1,9 +1,16 @@ # A desktop environment selector. +from typing import Any, TYPE_CHECKING + import archinstall +from archinstall import log, Menu +from archinstall.lib.menu.menu import MenuSelectionType + +if TYPE_CHECKING: + _: Any is_top_level_profile = True -__description__ = 'Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway' +__description__ = str(_('Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway')) # New way of defining packages for a profile, which is iterable and can be used out side # of the profile to get a list of "what packages will be installed". @@ -38,29 +45,36 @@ __supported__ = [ ] -def _prep_function(*args, **kwargs): +def _prep_function(*args, **kwargs) -> bool: """ Magic function called by the importing installer before continuing any further. It also avoids executing any other code in this stage. So it's a safe way to ask the user for more input before any other installer steps start. """ - desktop = archinstall.Menu('Select your desired desktop environment', __supported__, skip=False).run() - - # Temporarily store the selected desktop profile - # in a session-safe location, since this module will get reloaded - # the next time it gets executed. - if not archinstall.storage.get('_desktop_profile', None): - archinstall.storage['_desktop_profile'] = desktop - if not archinstall.arguments.get('desktop-environment', None): - archinstall.arguments['desktop-environment'] = desktop - profile = archinstall.Profile(None, desktop) - # Loading the instructions with a custom namespace, ensures that a __name__ comparison is never triggered. - with profile.load_instructions(namespace=f"{desktop}.py") as imported: - if hasattr(imported, '_prep_function'): - return imported._prep_function() - else: - print(f"Deprecated (??): {desktop} profile has no _prep_function() anymore") + choice = Menu(str(_('Select your desired desktop environment')), __supported__).run() + + if choice.type_ != MenuSelectionType.Selection: + return False + + if choice.value: + # Temporarily store the selected desktop profile + # in a session-safe location, since this module will get reloaded + # the next time it gets executed. + if not archinstall.storage.get('_desktop_profile', None): + archinstall.storage['_desktop_profile'] = choice.value + if not archinstall.arguments.get('desktop-environment', None): + archinstall.arguments['desktop-environment'] = choice.value + profile = archinstall.Profile(None, choice.value) + # Loading the instructions with a custom namespace, ensures that a __name__ comparison is never triggered. + with profile.load_instructions(namespace=f"{choice.value}.py") as imported: + if hasattr(imported, '_prep_function'): + return imported._prep_function() + else: + log(f"Deprecated (??): {choice.value} profile has no _prep_function() anymore") + exit(1) + + return False if __name__ == 'desktop': diff --git a/profiles/i3.py b/profiles/i3.py index 24956209..37029a02 100644 --- a/profiles/i3.py +++ b/profiles/i3.py @@ -1,6 +1,8 @@ # Common package for i3, lets user select which i3 configuration they want. import archinstall +from archinstall import Menu +from archinstall.lib.menu.menu import MenuSelectionType is_top_level_profile = False @@ -27,20 +29,26 @@ def _prep_function(*args, **kwargs): supported_configurations = ['i3-wm', 'i3-gaps'] - desktop = archinstall.Menu('Select your desired configuration', supported_configurations, skip=False).run() + choice = Menu('Select your desired configuration', supported_configurations).run() - # Temporarily store the selected desktop profile - # in a session-safe location, since this module will get reloaded - # the next time it gets executed. - archinstall.storage['_i3_configuration'] = desktop + if choice.type_ != MenuSelectionType.Selection: + return False - # i3 requires a functioning Xorg installation. - profile = archinstall.Profile(None, 'xorg') - with profile.load_instructions(namespace='xorg.py') as imported: - if hasattr(imported, '_prep_function'): - return imported._prep_function() - else: - print('Deprecated (??): xorg profile has no _prep_function() anymore') + if choice.value: + # Temporarily store the selected desktop profile + # in a session-safe location, since this module will get reloaded + # the next time it gets executed. + archinstall.storage['_i3_configuration'] = choice.value + + # i3 requires a functioning Xorg installation. + profile = archinstall.Profile(None, 'xorg') + with profile.load_instructions(namespace='xorg.py') as imported: + if hasattr(imported, '_prep_function'): + return imported._prep_function() + else: + print('Deprecated (??): xorg profile has no _prep_function() anymore') + + return False if __name__ == 'i3': diff --git a/profiles/minimal.py b/profiles/minimal.py index c7df517c..a412aa81 100644 --- a/profiles/minimal.py +++ b/profiles/minimal.py @@ -1,8 +1,9 @@ # Used to do a minimal install +import archinstall is_top_level_profile = True -__description__ = 'A very basic installation that allows you to customize Arch Linux as you see fit.' +__description__ = str(_('A very basic installation that allows you to customize Arch Linux as you see fit.')) def _prep_function(*args, **kwargs): @@ -12,6 +13,7 @@ def _prep_function(*args, **kwargs): we don't need to do anything special here, but it needs to exist and return True. """ + archinstall.storage['profile_minimal'] = True return True # Do nothing and just return True diff --git a/profiles/qtile.py b/profiles/qtile.py index ae1409a6..ace13dcc 100644 --- a/profiles/qtile.py +++ b/profiles/qtile.py @@ -11,7 +11,6 @@ __packages__ = [ 'alacritty', 'lightdm-gtk-greeter', 'lightdm', - 'dmenu' ] def _prep_function(*args, **kwargs): diff --git a/profiles/server.py b/profiles/server.py index c4f35f7b..21681c2f 100644 --- a/profiles/server.py +++ b/profiles/server.py @@ -1,12 +1,18 @@ # Used to select various server application profiles on top of a minimal installation. import logging +from typing import Any, TYPE_CHECKING import archinstall +from archinstall import Menu +from archinstall.lib.menu.menu import MenuSelectionType + +if TYPE_CHECKING: + _: Any is_top_level_profile = True -__description__ = 'Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb' +__description__ = str(_('Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb')) available_servers = [ "cockpit", @@ -26,15 +32,21 @@ def _prep_function(*args, **kwargs): Magic function called by the importing installer before continuing any further. """ - if not archinstall.storage.get('_selected_servers', None): - servers = archinstall.Menu( - 'Choose which servers to install, if none then a minimal installation wil be done', available_servers, - multi=True - ).run() + choice = Menu(str(_( + 'Choose which servers to install, if none then a minimal installation wil be done')), + available_servers, + preset_values=kwargs['servers'], + multi=True + ).run() + + if choice.type_ != MenuSelectionType.Selection: + return False - archinstall.storage['_selected_servers'] = servers + if choice.value: + archinstall.storage['_selected_servers'] = choice.value + return True - return True + return False if __name__ == 'server': diff --git a/profiles/sway.py b/profiles/sway.py index 32d626d7..b7266da3 100644 --- a/profiles/sway.py +++ b/profiles/sway.py @@ -1,5 +1,6 @@ # A desktop environment using "Sway" import archinstall +from archinstall import Menu is_top_level_profile = False @@ -18,10 +19,13 @@ __packages__ = [ def _check_driver() -> bool: - if "nvidia" in archinstall.storage.get("gfx_driver_packages", None): + packages = archinstall.storage.get("gfx_driver_packages", []) + + if packages and "nvidia" in packages: prompt = 'The proprietary Nvidia driver is not supported by Sway. It is likely that you will run into issues, are you okay with that?' - choice = archinstall.Menu(prompt, ['yes', 'no'], default_option='no').run() - if choice == 'no': + choice = Menu(prompt, Menu.yes_no(), default_option=Menu.no(), skip=False).run() + + if choice.value == Menu.no(): return False return True @@ -34,11 +38,15 @@ def _prep_function(*args, **kwargs): other code in this stage. So it's a safe way to ask the user for more input before any other installer steps start. """ - archinstall.storage["gfx_driver_packages"] = archinstall.select_driver(force_ask=True) - if not _check_driver(): - return _prep_function(args, kwargs) + driver = archinstall.select_driver() - return True + if driver: + archinstall.storage["gfx_driver_packages"] = driver + if not _check_driver(): + return _prep_function(args, kwargs) + return True + + return False # Ensures that this code only gets executed if executed diff --git a/profiles/xorg.py b/profiles/xorg.py index 33d2aa4c..2ce8dcc2 100644 --- a/profiles/xorg.py +++ b/profiles/xorg.py @@ -6,7 +6,7 @@ from archinstall.lib.hardware import __packages__ as __hwd__packages__ is_top_level_profile = True -__description__ = 'Installs a minimal system as well as xorg and graphics drivers.' +__description__ = str(_('Installs a minimal system as well as xorg and graphics drivers.')) __packages__ = [ 'dkms', @@ -25,12 +25,16 @@ def _prep_function(*args, **kwargs): for more input before any other installer steps start. """ - archinstall.storage["gfx_driver_packages"] = archinstall.select_driver() + driver = archinstall.select_driver() + + if driver: + archinstall.storage["gfx_driver_packages"] = driver + return True # TODO: Add language section and/or merge it with the locale selected # earlier in for instance guided.py installer. - return True + return False # Ensures that this code only gets executed if executed diff --git a/schema.json b/schema.json index e6f73c6c..9269e8e8 100644 --- a/schema.json +++ b/schema.json @@ -167,7 +167,15 @@ }, { "required": [ - "!superusers" + "!users": { + "description": "User account", + "type": "object", + "properties": { + "username": "string", + "!password": "string", + "sudo": "boolean" + } + } ] } ] |