diff --git a/.github/workflows/bandit.yaml b/.github/workflows/bandit.yaml index 68072742..1b71ab69 100644 --- a/.github/workflows/bandit.yaml +++ b/.github/workflows/bandit.yaml @@ -6,7 +6,7 @@ jobs: container: image: archlinux/archlinux:latest steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - run: pacman --noconfirm -Syu bandit - name: Security checkup with Bandit run: bandit -r archinstall || exit 0 diff --git a/.github/workflows/flake8.yaml b/.github/workflows/flake8.yaml index 278a9840..80c086a0 100644 --- a/.github/workflows/flake8.yaml +++ b/.github/workflows/flake8.yaml @@ -6,7 +6,7 @@ jobs: container: image: archlinux/archlinux:latest steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - name: Prepare arch run: | pacman-key --init diff --git a/.github/workflows/github-pages.yml b/.github/workflows/github-pages.yml index 5f129d82..020ae6f7 100644 --- a/.github/workflows/github-pages.yml +++ b/.github/workflows/github-pages.yml @@ -21,8 +21,8 @@ jobs: image: archlinux/archlinux:latest options: --privileged steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 - - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7 - name: Install pre-dependencies run: | pacman -Sy --noconfirm tree git python-pyparted python-setuptools python-sphinx python-sphinx_rtd_theme python-build python-installer python-wheel diff --git a/.github/workflows/iso-build.yaml b/.github/workflows/iso-build.yaml index 0e6eaabc..6ed55478 100644 --- a/.github/workflows/iso-build.yaml +++ b/.github/workflows/iso-build.yaml @@ -26,7 +26,7 @@ jobs: image: archlinux/archlinux:latest options: --privileged steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - run: pwd - run: find . - run: cat /etc/os-release diff --git a/.github/workflows/mypy.yaml b/.github/workflows/mypy.yaml index 35909767..aab849cb 100644 --- a/.github/workflows/mypy.yaml +++ b/.github/workflows/mypy.yaml @@ -6,7 +6,7 @@ jobs: container: image: archlinux/archlinux:latest steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - name: Prepare arch run: | pacman-key --init diff --git a/.github/workflows/pylint.yaml b/.github/workflows/pylint.yaml index 0c6975c9..e3480de7 100644 --- a/.github/workflows/pylint.yaml +++ b/.github/workflows/pylint.yaml @@ -6,7 +6,7 @@ jobs: container: image: archlinux/archlinux:latest steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - name: Prepare arch run: | pacman-key --init diff --git a/.github/workflows/pytest.yaml b/.github/workflows/pytest.yaml index 0378544b..6f914de0 100644 --- a/.github/workflows/pytest.yaml +++ b/.github/workflows/pytest.yaml @@ -7,7 +7,7 @@ jobs: image: archlinux/archlinux:latest options: --privileged steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - name: Prepare arch run: | pacman-key --init diff --git a/.github/workflows/python-build.yml b/.github/workflows/python-build.yml index 313e63fb..ebcaaece 100644 --- a/.github/workflows/python-build.yml +++ b/.github/workflows/python-build.yml @@ -11,7 +11,7 @@ jobs: image: archlinux/archlinux:latest options: --privileged steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - name: Prepare arch run: | pacman-key --init diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index 8868cd38..3933c7ba 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -18,7 +18,7 @@ jobs: image: archlinux/archlinux:latest options: --privileged steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - name: Prepare arch run: | pacman-key --init diff --git a/.github/workflows/ruff-format.yaml b/.github/workflows/ruff-format.yaml index 6c0e99bf..04527763 100644 --- a/.github/workflows/ruff-format.yaml +++ b/.github/workflows/ruff-format.yaml @@ -4,6 +4,6 @@ jobs: ruff_format_check: runs-on: ubuntu-latest steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - uses: astral-sh/ruff-action@278981a28ce3188b1e39527901f38254bf3aac89 # v4.1.0 - run: ruff format --diff diff --git a/.github/workflows/ruff-lint.yaml b/.github/workflows/ruff-lint.yaml index 56ae13a6..12a7f88d 100644 --- a/.github/workflows/ruff-lint.yaml +++ b/.github/workflows/ruff-lint.yaml @@ -4,5 +4,5 @@ jobs: ruff: runs-on: ubuntu-latest steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - uses: astral-sh/ruff-action@278981a28ce3188b1e39527901f38254bf3aac89 # v4.1.0 diff --git a/.github/workflows/translation-check.yaml b/.github/workflows/translation-check.yaml index 927e8858..40cce6ee 100644 --- a/.github/workflows/translation-check.yaml +++ b/.github/workflows/translation-check.yaml @@ -15,7 +15,7 @@ jobs: name: Validate translations runs-on: ubuntu-latest steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - name: Install gettext run: sudo apt-get update && sudo apt-get install -y gettext - name: Run translation checks diff --git a/.github/workflows/uki-build.yaml b/.github/workflows/uki-build.yaml index 87e2feb0..e27b767a 100644 --- a/.github/workflows/uki-build.yaml +++ b/.github/workflows/uki-build.yaml @@ -26,7 +26,7 @@ jobs: image: archlinux/archlinux:latest options: --privileged steps: - - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - run: pwd - run: find . - run: cat /etc/os-release diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 188bbcf3..a26b0696 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,7 +1,7 @@ default_stages: ['pre-commit'] repos: - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.15.21 + rev: v0.15.22 hooks: # fix unused imports and sort them - id: ruff diff --git a/archinstall/lib/args.py b/archinstall/lib/args.py index 95869c2f..3d372625 100644 --- a/archinstall/lib/args.py +++ b/archinstall/lib/args.py @@ -35,7 +35,6 @@ from archinstall.lib.models.users import Password, User, UserSerialization from archinstall.lib.plugins import load_plugin from archinstall.lib.translationhandler import Language, tr, translation_handler from archinstall.lib.utils.format import as_key_value_pair -from archinstall.lib.utils.util import is_valid_path from archinstall.lib.version import get_version from archinstall.tui.components import tui @@ -404,7 +403,7 @@ class ArchConfig: ) -> None: save_path = dest_path or DEFAULT_SAVE_PATH - if not is_valid_path(save_path): + if not save_path.is_dir(): warn( f'Destination directory {save_path} does not exist or is not a directory\n.', 'Configuration files can not be saved', @@ -416,7 +415,7 @@ class ArchConfig: self.save_user_creds(save_path, password=password) def save_user_config(self, dest_path: Path) -> None: - if not is_valid_path(dest_path): + if not dest_path.is_dir(): error(f'Invalid path {dest_path}. User configuration could not be saved.') return @@ -430,7 +429,7 @@ class ArchConfig: dest_path: Path, password: str | None = None, ) -> None: - if not is_valid_path(dest_path): + if not dest_path.is_dir(): error(f'Invalid path {dest_path}. User credentials could not be saved.') return diff --git a/archinstall/lib/disk/utils.py b/archinstall/lib/disk/utils.py index 900445e1..5829164a 100644 --- a/archinstall/lib/disk/utils.py +++ b/archinstall/lib/disk/utils.py @@ -1,8 +1,9 @@ from pathlib import Path +from subprocess import CalledProcessError from pydantic import BaseModel -from archinstall.lib.command import SysCommand +from archinstall.lib.command import SysCommand, run from archinstall.lib.exceptions import DiskError, SysCallError from archinstall.lib.log import debug, info, warn from archinstall.lib.models.device import LsblkInfo @@ -29,19 +30,18 @@ def _fetch_lsblk_info( cmd.append(str(dev_path)) try: - worker = SysCommand(cmd) - except SysCallError as err: + result = run(cmd) + except CalledProcessError as err: # Get the output minus the message/info from lsblk if it returns a non-zero exit code. - if err.worker_log: - debug(f'Error calling lsblk: {err.worker_log.decode()}') + if stdout := err.stdout: + debug(f'Error calling lsblk: {stdout.decode().rstrip()}') if dev_path: raise DiskError(f'Failed to read disk "{dev_path}" with lsblk') raise err - output = worker.output(remove_cr=False) - return LsblkOutput.model_validate_json(output) + return LsblkOutput.model_validate_json(result.stdout) def get_lsblk_info( diff --git a/archinstall/lib/installer.py b/archinstall/lib/installer.py index 985e16cd..53f9841c 100644 --- a/archinstall/lib/installer.py +++ b/archinstall/lib/installer.py @@ -660,16 +660,12 @@ class Installer: # in the first column of the entry; check for both cases. entry_re = re.compile(rf'#{lang}(\.{encoding})?{modifier} {encoding}') - lang_value = None for index, line in enumerate(locale_gen_lines): if entry_re.match(line): - uncommented_line = line.removeprefix('#') - locale_gen_lines[index] = uncommented_line + locale_gen_lines[index] = line.removeprefix('#') locale_gen.write_text(''.join(locale_gen_lines)) - lang_value = uncommented_line.split()[0] break - - if lang_value is None: + else: error(f"Invalid locale: language '{locale_config.sys_lang}', encoding '{locale_config.sys_enc}'") return False @@ -679,7 +675,7 @@ class Installer: error(f'Failed to run locale-gen on target: {e}') return False - (self.target / 'etc/locale.conf').write_text(f'LANG={lang_value}\n') + (self.target / 'etc/locale.conf').write_text(f'LANG={lang}.{encoding}{modifier}\n') return True def set_timezone(self, zone: str) -> bool: @@ -1480,20 +1476,20 @@ class Installer: parent_dev_path = get_parent_device_path(efi_partition.safe_dev_path) + efi_dir_path = self.target / efi_partition.mountpoint.relative_to('/') / 'EFI' + efi_dir_path_target = efi_partition.mountpoint / 'EFI' + if bootloader_removable: + efi_dir_path = efi_dir_path / 'BOOT' + efi_dir_path_target = efi_dir_path_target / 'BOOT' + else: + efi_dir_path = efi_dir_path / 'arch-limine' + efi_dir_path_target = efi_dir_path_target / 'arch-limine' + + config_path = efi_dir_path / 'limine.conf' + + efi_dir_path.mkdir(parents=True, exist_ok=True) + try: - efi_dir_path = self.target / efi_partition.mountpoint.relative_to('/') / 'EFI' - efi_dir_path_target = efi_partition.mountpoint / 'EFI' - if bootloader_removable: - efi_dir_path = efi_dir_path / 'BOOT' - efi_dir_path_target = efi_dir_path_target / 'BOOT' - else: - efi_dir_path = efi_dir_path / 'arch-limine' - efi_dir_path_target = efi_dir_path_target / 'arch-limine' - - config_path = efi_dir_path / 'limine.conf' - - efi_dir_path.mkdir(parents=True, exist_ok=True) - for file in ('BOOTIA32.EFI', 'BOOTX64.EFI'): (limine_path / file).copy_into(efi_dir_path) except Exception as err: diff --git a/archinstall/lib/network/wifi_handler.py b/archinstall/lib/network/wifi_handler.py index bc068d2a..a0a3f05a 100644 --- a/archinstall/lib/network/wifi_handler.py +++ b/archinstall/lib/network/wifi_handler.py @@ -58,7 +58,7 @@ class WifiHandler(InstanceRunnable[bool]): async def _enable_supplicant(self, wifi_iface: str) -> bool: self._wpa_config.load_config() - result = self._wpa_cli('status') # if it it's running it will blow up + result = self._wpa_cli('status') if result.success: debug('wpa_supplicant already running') @@ -72,18 +72,19 @@ class WifiHandler(InstanceRunnable[bool]): try: SysCommand(f'wpa_supplicant -B -i {wifi_iface} -c {self._wpa_config.config_file}') - result = self._wpa_cli('status') # if it it's running it will blow up - - if result.success: - debug('successfully enabled wpa_supplicant') - return True - else: - debug(f'failed to enable wpa_supplicant: {result.error}') - return False except SysCallError as err: debug(f'failed to enable wpa_supplicant: {err}') return False + result = self._wpa_cli('status') + + if result.success: + debug('successfully enabled wpa_supplicant') + return True + else: + debug(f'failed to enable wpa_supplicant: {result.error}') + return False + def _find_wifi_interface(self) -> str | None: net_path = Path('/sys/class/net') @@ -197,15 +198,6 @@ class WifiHandler(InstanceRunnable[bool]): try: result = SysCommand(cmd).decode() - - if 'FAIL' in result: - debug(f'wpa_cli returned FAIL: {result}') - return WpaCliResult( - success=False, - error=f'wpa_cli returned a failure: {result}', - ) - - return WpaCliResult(success=True, response=result) except SysCallError as err: debug(f'error running wpa_cli command: {err}') return WpaCliResult( @@ -213,6 +205,15 @@ class WifiHandler(InstanceRunnable[bool]): error=f'Error running wpa_cli command: {err}', ) + if 'FAIL' in result: + debug(f'wpa_cli returned FAIL: {result}') + return WpaCliResult( + success=False, + error=f'wpa_cli returned a failure: {result}', + ) + + return WpaCliResult(success=True, response=result) + def _find_network_id(self, ssid: str, iface: str) -> int | None: result = self._wpa_cli('list_networks', iface) @@ -254,18 +255,18 @@ class WifiHandler(InstanceRunnable[bool]): try: result = self._wpa_cli('scan_results', iface) - - if not result.success: - debug(f'Failed to retrieve scan results: {result.error}') - return [] - - if not result.response: - debug('No wifi networks found') - return [] - - networks = WifiNetwork.from_wpa(result.response) - - return networks except SysCallError as err: debug('Unable to retrieve wifi results') raise err + + if not result.success: + debug(f'Failed to retrieve scan results: {result.error}') + return [] + + if not result.response: + debug('No wifi networks found') + return [] + + networks = WifiNetwork.from_wpa(result.response) + + return networks diff --git a/archinstall/lib/profile/profiles_handler.py b/archinstall/lib/profile/profiles_handler.py index 1e770de5..8430e001 100644 --- a/archinstall/lib/profile/profiles_handler.py +++ b/archinstall/lib/profile/profiles_handler.py @@ -258,6 +258,10 @@ class ProfileHandler: """ try: data = fetch_data_from_url(url) + except ValueError: + err = tr('Unable to fetch profile from specified url: {}').format(url) + error(err) + else: b_data = bytes(data, 'utf-8') with NamedTemporaryFile(delete=False, suffix='.py') as fp: @@ -266,10 +270,6 @@ class ProfileHandler: profiles = self._process_profile_file(filepath) self.remove_custom_profiles(profiles) - self.add_custom_profiles(profiles) - except ValueError: - err = tr('Unable to fetch profile from specified url: {}').format(url) - error(err) def _load_profile_class(self, module: ModuleType) -> list[Profile]: """ diff --git a/archinstall/lib/translationhandler.py b/archinstall/lib/translationhandler.py index c16452a8..8ce8f80c 100644 --- a/archinstall/lib/translationhandler.py +++ b/archinstall/lib/translationhandler.py @@ -102,13 +102,14 @@ class TranslationHandler: if not running_from_iso(): return + font_fd, font_path = tempfile.mkstemp(prefix='archinstall_font_') + cmap_fd, cmap_path = tempfile.mkstemp(prefix='archinstall_cmap_') + os.close(font_fd) + os.close(cmap_fd) + self._font_backup = Path(font_path) + self._cmap_backup = Path(cmap_path) + try: - font_fd, font_path = tempfile.mkstemp(prefix='archinstall_font_') - cmap_fd, cmap_path = tempfile.mkstemp(prefix='archinstall_cmap_') - os.close(font_fd) - os.close(cmap_fd) - self._font_backup = Path(font_path) - self._cmap_backup = Path(cmap_path) SysCommand(['setfont', '-O', str(self._font_backup), '-om', str(self._cmap_backup)]) except SysCallError as err: debug(f'Failed to save console font: {err}') @@ -158,21 +159,21 @@ class TranslationHandler: try: # get a translation for a specific language translation = gettext.translation('base', localedir=self._get_locales_dir(), languages=(abbr, lang)) - - # calculate the percentage of total translated text to total number of messages - if abbr == 'en': - percent = 100 - else: - num_translations = self._get_catalog_size(translation) - percent = int((num_translations / self._total_messages) * 100) - # prevent cases where the .pot file is out of date and the percentage is above 100 - percent = min(100, percent) - - language = Language(abbr, lang, translation, percent, translated_lang, console_font, sys_lang, default_timezone) - languages.append(language) except FileNotFoundError as err: raise FileNotFoundError(f"Could not locate language file for '{lang}': {err}") + # calculate the percentage of total translated text to total number of messages + if abbr == 'en': + percent = 100 + else: + num_translations = self._get_catalog_size(translation) + percent = int((num_translations / self._total_messages) * 100) + # prevent cases where the .pot file is out of date and the percentage is above 100 + percent = min(100, percent) + + language = Language(abbr, lang, translation, percent, translated_lang, console_font, sys_lang, default_timezone) + languages.append(language) + return languages def _load_language_mappings(self) -> list[dict[str, str]]: @@ -299,6 +300,15 @@ def tr(message: str) -> str: return str(_DeferredTranslation(message)) +def tr_noop(message: str) -> str: + """Mark a string for xgettext extraction without translating it here. + + Use for strings that are translated later from a variable, e.g. + binding descriptions passed through tr() at runtime. + """ + return message + + builtins._ = _DeferredTranslation # type: ignore[attr-defined] diff --git a/archinstall/lib/utils/format.py b/archinstall/lib/utils/format.py index 2ac8c377..1edfa3c6 100644 --- a/archinstall/lib/utils/format.py +++ b/archinstall/lib/utils/format.py @@ -9,6 +9,14 @@ if TYPE_CHECKING: from _typeshed import DataclassInstance +def _sentence_case(text: str) -> str: + # Only capitalize the first letter of the label. The source strings and + # their translations are already written with the correct casing for each + # language, so title-casing every word is wrong outside English (it turned + # "Ім'я хоста" into "Ім'Я Хоста" and "(NTP)" into "(Ntp)"). + return text[:1].upper() + text[1:] + + def as_key_value_pair( entries: dict[str, str | list[str] | bool], ignore_empty: bool = True, @@ -33,28 +41,11 @@ def as_key_value_pair( if isinstance(value, list): value = '\n '.join(str(val) for val in value) - table.add_row(label.title(), f': {value}') + table.add_row(_sentence_case(label), f': {value}') return table.stringify() -def as_columns(entries: list[str], cols: int) -> str: - """ - Will format a list into a given number of columns - """ - chunks: list[list[str]] = [] - output = '' - - for i in range(0, len(entries), cols): - chunks.append(entries[i : i + cols]) - - for row in chunks: - out_fmt = '{: <30} ' * len(row) - output += out_fmt.format(*row) + '\n' - - return output - - def _get_values( o: DataclassInstance, class_formatter: str | Callable | None = None, # type: ignore[type-arg] # pyright: ignore[reportMissingTypeArgument] diff --git a/archinstall/lib/utils/util.py b/archinstall/lib/utils/util.py index a0c34f5f..b90137c0 100644 --- a/archinstall/lib/utils/util.py +++ b/archinstall/lib/utils/util.py @@ -1,10 +1,8 @@ import secrets import string from datetime import UTC, datetime -from pathlib import Path from archinstall.lib.pathnames import ARCHISO_MOUNTPOINT -from archinstall.lib.utils.format import as_columns def timestamp() -> str: @@ -25,29 +23,3 @@ def running_from_iso() -> bool: def generate_password(length: int = 64) -> str: haystack = string.printable # digits, ascii_letters, punctuation (!"#$[] etc) and whitespace return ''.join(secrets.choice(haystack) for _ in range(length)) - - -def format_cols(items: list[str], header: str | None = None) -> str: - if header: - text = f'{header}:\n' - else: - text = '' - - nr_items = len(items) - if nr_items <= 4: - col = 1 - elif nr_items <= 8: - col = 2 - elif nr_items <= 12: - col = 3 - else: - col = 4 - - text += as_columns(items, col) - # remove whitespaces on each row - text = '\n'.join(t.strip() for t in text.split('\n')) - return text - - -def is_valid_path(path: Path) -> bool: - return path.exists() and path.is_dir() diff --git a/archinstall/locales/README.md b/archinstall/locales/README.md index da853e80..89b31e62 100644 --- a/archinstall/locales/README.md +++ b/archinstall/locales/README.md @@ -58,3 +58,17 @@ msgstr "Wollen sie wirklich abbrechen?" After the translations have been written, run the script once more `./locales_generator.sh ` and it will auto-generate the `base.mo` file with the included translations. After that you're all ready to go and enjoy Archinstall in the new language :) + +## Key binding descriptions + +`base.po` also contains the key binding descriptions shown in the footer and the help panel, for example `Scroll Up` or `Toggle option`. Translate them like any other string, but keep them short so they still fit in the footer. + +Most of them come from the `textual` library, where `xgettext` cannot see them, so they are listed with `tr_noop` in `archinstall/tui/binding_descriptions.py`, a module that exists only to make them extractable and is never imported at runtime. Archinstall's own descriptions are taken from the third positional argument of `Binding()`, so that argument must never be passed as a keyword. + +The list has to be verified after a `textual` upgrade, or after a new textual widget is introduced in `archinstall/tui/components.py` (the widget also has to be added to `TEXTUAL_CLASSES` in the checker). Nothing in CI checks it, so run the following from the repository root + +``` +python3 test_tooling/check_binding_descriptions.py +``` + +It prints every missing or stale entry, and an `OK` line when the list matches the installed `textual`. Fix `binding_descriptions.py` until it passes, then run `./locales_generator.sh ` again. diff --git a/archinstall/locales/base.pot b/archinstall/locales/base.pot index 05f3ebae..e6bb1c47 100644 --- a/archinstall/locales/base.pot +++ b/archinstall/locales/base.pot @@ -344,6 +344,10 @@ msgstr "" msgid "Iteration time" msgstr "" +msgid "" +"No disks were detected. A disk is required to be able to install Arch Linux" +msgstr "" + msgid "Select disks for the installation" msgstr "" @@ -1226,12 +1230,192 @@ msgstr "" msgid "Starting device modifications in " msgstr "" +msgid "Bottom" +msgstr "" + +msgid "Copy selected text" +msgstr "" + +msgid "Cursor down" +msgstr "" + +msgid "Cursor left" +msgstr "" + +msgid "Cursor right" +msgstr "" + +msgid "Cursor up" +msgstr "" + +msgid "Cut selected text" +msgstr "" + +msgid "Delete all to the left" +msgstr "" + +msgid "Delete all to the right" +msgstr "" + +msgid "Delete character left" +msgstr "" + +msgid "Delete character right" +msgstr "" + +msgid "Delete left to start of word" +msgstr "" + +msgid "Delete right to start of word" +msgstr "" + +msgid "Down" +msgstr "" + +msgid "End" +msgstr "" + +msgid "First" +msgstr "" + +msgid "Focus Next" +msgstr "" + +msgid "Focus Previous" +msgstr "" + +msgid "Go to end" +msgstr "" + +msgid "Go to start" +msgstr "" + +msgid "Home" +msgstr "" + +msgid "Last" +msgstr "" + +msgid "Move cursor left" +msgstr "" + +msgid "Move cursor left a word" +msgstr "" + +msgid "Move cursor left a word and select" +msgstr "" + +msgid "Move cursor left and select" +msgstr "" + +msgid "Move cursor right a word" +msgstr "" + +msgid "Move cursor right a word and select" +msgstr "" + +msgid "Move cursor right and select" +msgstr "" + +msgid "Move cursor right or accept the completion suggestion" +msgstr "" + +msgid "Page Down" +msgstr "" + +msgid "Page Left" +msgstr "" + +msgid "Page Right" +msgstr "" + +msgid "Page Up" +msgstr "" + +msgid "Page down" +msgstr "" + +msgid "Page up" +msgstr "" + +msgid "Paste text from the clipboard" +msgstr "" + +msgid "Press button" +msgstr "" + +msgid "Quit" +msgstr "" + +msgid "Scroll Down" +msgstr "" + +msgid "Scroll End" +msgstr "" + +msgid "Scroll Home" +msgstr "" + +msgid "Scroll Left" +msgstr "" + +msgid "Scroll Right" +msgstr "" + +msgid "Scroll Up" +msgstr "" + +msgid "Select" +msgstr "" + +msgid "Select all" +msgstr "" + +msgid "Select line end" +msgstr "" + +msgid "Select line start" +msgstr "" + +msgid "Submit" +msgstr "" + +msgid "Toggle option" +msgstr "" + +msgid "Top" +msgstr "" + +msgid "Up" +msgstr "" + +msgid "Reset" +msgstr "" + +msgid "Search" +msgstr "" + +msgid "Toggle" +msgstr "" + +msgid "Confirm" +msgstr "" + +msgid "Focus right" +msgstr "" + +msgid "Focus left" +msgstr "" + msgid "Ok" msgstr "" msgid "Input cannot be empty" msgstr "" +msgid "Show/Hide help" +msgstr "" + msgid "Yes" msgstr "" diff --git a/archinstall/locales/es/LC_MESSAGES/base.mo b/archinstall/locales/es/LC_MESSAGES/base.mo index 91060f90..063aa5b3 100644 Binary files a/archinstall/locales/es/LC_MESSAGES/base.mo and b/archinstall/locales/es/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/es/LC_MESSAGES/base.po b/archinstall/locales/es/LC_MESSAGES/base.po index 0c20d3ba..4a690720 100644 --- a/archinstall/locales/es/LC_MESSAGES/base.po +++ b/archinstall/locales/es/LC_MESSAGES/base.po @@ -221,12 +221,27 @@ msgstr "Imágenes del núcleo unificadas" msgid "Install to removable location" msgstr "Instalar a ubicación desmontable" +msgid "Plymouth" +msgstr "Plymouth" + msgid "Will install to /EFI/BOOT/ (removable location, safe default)" msgstr "Instalará a /EFI/BOOT/ (ubicación desmontable, segura por defecto)" msgid "Will install to custom location with NVRAM entry" msgstr "Instalará a ubicación personalizada con entrada NVRAM" +msgid "Plymouth adds a cosmetic boot splash but can cause boot problems on some setups:" +msgstr "Plymouth añade una pantalla de inicio cosmética, pero puede causar problemas de arranque en algunas configuraciones:" + +msgid "black screen with the NVIDIA driver" +msgstr "pantalla negra con el controlador NVIDIA" + +msgid "hidden password prompt with disk encryption (LUKS)" +msgstr "solicitud de contraseña oculta con cifrado de disco (LUKS)" + +msgid "Would you like to enable it?" +msgstr "¿Desea habilitarlo?" + msgid "Would you like to use unified kernel images?" msgstr "¿Le gustaría utilizar imágenes del núcleo unificadas?" @@ -254,6 +269,9 @@ msgstr "Seleccione el gestor de arranque que desea instalar" msgid "UEFI is not detected and some options are disabled" msgstr "No se detecta UEFI y algunas opciones están desactivadas" +msgid "Select Plymouth theme" +msgstr "Seleccionar tema Plymouth" + msgid "The specified configuration will be applied" msgstr "Se aplicará la configuración especificada" @@ -263,9 +281,6 @@ msgstr "¿Quiere continuar?" msgid "Configuration preview" msgstr "Vista previa de la configuración" -msgid "Warning: no network configuration selected. Network will need to be set up manually on the installed system." -msgstr "Advertencia: no se ha seleccionado ninguna configuración de red. La red deberá configurarse manualmente en el sistema instalado." - msgid "No configuration" msgstr "Sin configuración" @@ -332,6 +347,9 @@ msgstr "Contraseña" msgid "Iteration time" msgstr "Tiempo de iteración" +msgid "No disks were detected. A disk is required to be able to install Arch Linux" +msgstr "No se detectaron discos. Se requiere un disco para poder instalar Arch Linux" + msgid "Select disks for the installation" msgstr "Seleccione discos para la instalación" @@ -627,16 +645,21 @@ msgstr "Color" msgid "Kernel" msgstr "Núcleo" -msgid "Missing configurations:\n" -msgstr "Configuraciones que faltan:\n" +msgid "No network configuration selected. Network will need to be set up manually on the installed system." +msgstr "No se ha seleccionado ninguna configuración de red. La red deberá configurarse manualmente en el sistema instalado." -#, python-brace-format -msgid "Invalid configuration: {}" -msgstr "Configuración no válida: {}" +msgid "Missing configurations:" +msgstr "Configuraciones faltantes:" + +msgid "Invalid configuration:" +msgstr "Configuración no válida:" msgid "Ready to install" msgstr "Listo para instalar" +msgid "Warnings:" +msgstr "Advertencias:" + msgid "Profiles" msgstr "Perfiles" @@ -858,6 +881,10 @@ msgstr "UKI activado" msgid "Removable" msgstr "Desmontable" +#, python-brace-format +msgid "Plymouth \"{}\"" +msgstr "Plymouth «{}»" + msgid "Use a best-effort default partition layout" msgstr "Utlizar un diseño de partición predeterminado de mejor esfuerzo" @@ -965,8 +992,8 @@ msgstr "Grupo de paquetes:" msgid "Color enabled" msgstr "Color activado" -#, python-brace-format -msgid "{} grphics driver" +#, fuzzy, python-brace-format +msgid "{} graphics driver" msgstr "{} controlador de gráficos" #, python-brace-format @@ -1032,15 +1059,15 @@ msgstr "¿Desea conectarse al Wi-Fi?" msgid "No wifi interface found" msgstr "No se encontró ninguna interfaz Wi-Fi" +msgid "No wifi networks found" +msgstr "No se encontró redes Wi-Fi" + msgid "Select wifi network to connect to" msgstr "Seleccione una red Wi-Fi para conectarse" msgid "Scanning wifi networks..." msgstr "Buscando redes Wi-Fi..." -msgid "No wifi networks found" -msgstr "No se encontró redes Wi-Fi" - msgid "Failed setting up wifi" msgstr "Error al configurar el Wi-Fi" @@ -1608,9 +1635,6 @@ msgstr " (predeterminado)" #~ msgid "Subvolume name :" #~ msgstr "Nombre del subvolumen :" -#~ msgid "Select a mount point :" -#~ msgstr "Seleccione un punto de montaje :" - #~ msgid "Select the desired subvolume options " #~ msgstr "Seleccione las opciones de subvolumen deseadas " diff --git a/archinstall/locales/gl/LC_MESSAGES/base.mo b/archinstall/locales/gl/LC_MESSAGES/base.mo index c65c9006..22504fd5 100644 Binary files a/archinstall/locales/gl/LC_MESSAGES/base.mo and b/archinstall/locales/gl/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/gl/LC_MESSAGES/base.po b/archinstall/locales/gl/LC_MESSAGES/base.po index 746e3fc6..ab23c2f6 100644 --- a/archinstall/locales/gl/LC_MESSAGES/base.po +++ b/archinstall/locales/gl/LC_MESSAGES/base.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: \n" "POT-Creation-Date: \n" "PO-Revision-Date: \n" -"Last-Translator: gaelgnz \n" +"Last-Translator: cachelous \n" "Language-Team: \n" "Language: gl\n" "MIME-Version: 1.0\n" @@ -11,1539 +11,499 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.8\n" -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] Se ha creado un archivo de registro aquí: {} {}" +msgid "Recommended" +msgstr "Recomendado" -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Por favor envíe este problema (e archivo) a https://github.com/archlinux/archinstall/issues" +msgid "Package" +msgstr "Paquete" -msgid "Do you really want to abort?" -msgstr "¿Realmente desexas abortar?" +msgid "Curated selection of KDE Plasma packages" +msgstr "Selección curada de paquetes de KDE Plasma" -msgid "And one more time for verification: " -msgstr "E unha vez mais para verificar: " +msgid "Dependencies" +msgstr "Dependencias" -msgid "Would you like to use swap on zram?" -msgstr "¿Gustarialle usar swap en zram?" +msgid "Package group" +msgstr "Grupo de paquetes" -msgid "Desired hostname for the installation: " -msgstr "Nome do host desexado para a instalación: " +msgid "Extensive KDE Plasma installation" +msgstr "Instalación extensiva de KDE Plasma" -msgid "Username for required superuser with sudo privileges: " -msgstr "Nome de usuario para o superusuario con privilegios sudo: " +msgid "Packages in group" +msgstr "Paquetes no grupo" -msgid "Any additional users to install (leave blank for no users): " -msgstr "Algún usuario adicional a instalar (dexalo en blanco para non agregar ninguno): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "Debería este usuario ser un superusuario (sudoer)?" - -msgid "Select a timezone" -msgstr "Seleccione unha zona horaria" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "Gustarialle usar GRUB como xestor de arranque en lugar de systemd-boot?" - -msgid "Choose a bootloader" -msgstr "Elixa un xestor de arranque" - -msgid "Choose an audio server" -msgstr "Elixa un servidor de audio" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "So paquetes como base, base-devel, linux, linux-firmware, efibootmgr e paquetes opcionales de perfil instalaranse." - -msgid "Note: base-devel is no longer installed by default. Add it here if you need build tools." -msgstr "Nota: base-devel xa non veñe instalado por defecto. Agreguelo aquí se necesita herramientas de build." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "Si deseaxa un navegador web, como firefox o chromium, pode especificalo non seguiente mensaxe." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "Escriba paquetes adicionais para instalar (separados por espazos, dexe en blanco para omitir): " - -msgid "Copy ISO network configuration to installation" -msgstr "Copiar a configuración de red ISO a instalación" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "Usar NetworkManager (necesario para configurar internet gráficamente en GNOME y KDE)" - -msgid "Select one network interface to configure" -msgstr "Seleccione unha interfaz de red para configurar" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "Seleccione qué modo configurar para \"{}\" ou omita para usar o modo predeterminado \"{}\"" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "Escriba a IP e subred para {} (ejemplo: 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "Escriba a IP de a sua porta de enlace (enrutador) ou dexelo en branco para non usar ningunha: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "Ingrese os seus servidores DNS (separados por espazos, en branco para ningun): " - -msgid "Select which filesystem your main partition should use" -msgstr "Seleccione qué sistema de archivos debe usar a sua partición principal" - -msgid "Current partition layout" -msgstr "Distribución actual das particions" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"Seleccione qué hacer con\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "Ingrese un tipo de sistema de arquivos desexado para a partición" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "Ingrese a ubicación de inicio (en unidades divididas: s, GB, %, etc. ; predeterminado: {}): " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "Ingrese a ubicación final (en unidades divididas: s, GB, %, etc. ; ej.: {}): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} contén particions en cola, esto eliminará esas particións, ¿está seguro?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"Seleccione por índice qué particions eliminar" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"Seleccione por índice qué partición montar en qué ubicación" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * Os puntos de montaxe da partición son relativos ao interior da instalación, por exemplo: o arranque sería /boot." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "Seleccione onde montar a partición (dexela en branco para eliminar o punto de montaje): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"Seleccione cal partición enmascarar para formatear" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"Seleccione cal partición marcar como encriptada" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"Seleccione cal partición marcar como de arranque" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"Seleccione en cal partición establecer un sistema de arquivos" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "Ingrese un tipo de sistema de arquivos desexado para a partición: " - -msgid "Archinstall language" -msgstr "Idioma de Archinstall" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Borrar todas as unidades seleccionadas e usar un diseño de partición predeterminado de mellor esforzo" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Seleccione qué hacer con cada unidad individual (seguido do uso da partición)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "Seleccione o que desexa hacer con os dispositivos de bloque seleccionados" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "Esta es unha lista de perfils preprogramados que podrían facilitarche a instalación de cousas como entornos de escritorio" - -msgid "Select keyboard layout" -msgstr "Seleccione a distribución do teclado" - -msgid "Select one of the regions to download packages from" -msgstr "Seleccione qué rexión usar para descargar paquetes" - -msgid "Select one or more hard drives to use and configure" -msgstr "Seleccione uno o mais discos duros 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 obtener a mellor compatibilidade con o seu hardware AMD, e posible que desexe utilizar as opcions de código aberto ou AMD / ATI." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "Para obtener a mellor compatibilidade con o seu hardware Intel, e posible que desexe utilizar as opciones de código abierto ou de Intel.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Para obtener a mellor compatibilidade con o seu hardware de Nvidia, e posible que desexe utilizar o controlador patentado de Nvidia.\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Seleccione un controlador de gráficos ou dexelo en branco para instalar todos os controladores de código abierto" - -msgid "All open-source (default)" -msgstr "Todos de código aberto (predeterminado)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "Escoxa qué kernel usar o déjelo en branco para usar o kernel \"{}\" predeterminado" - -msgid "Choose which locale language to use" -msgstr "Escoxa qué idioma local usar" - -msgid "Choose which locale encoding to use" -msgstr "Escoxa qué codificación local usar" - -msgid "Select one of the values shown below: " -msgstr "Seleccione uno de os valores que se muestran a continuación: " - -msgid "Select one or more of the options below: " -msgstr "Seleccione unha o más das siguientes opciones: " - -msgid "Adding partition...." -msgstr "Añadiendo partición..." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "Debe ingresar un tipo de sistema de archivos (fs-type) válido para continuar. Consulte `man parted` para conocer os tipos válidos." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Error: Listar perfiles na URL \"{}\" resultó en:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "Error: No se pudo decodificar el resultado \"{}\" como JSON:" - -msgid "Keyboard layout" -msgstr "Distribución do teclado" - -msgid "Mirror region" -msgstr "Región do servidor" - -msgid "Locale language" -msgstr "Idioma local" - -msgid "Locale encoding" -msgstr "Codificación local" - -msgid "Drive(s)" -msgstr "Disco(s)" - -# not sure about this one... we've been saying distribución instead of diseño up to now... -msgid "Disk layout" -msgstr "Diseño do disco" - -msgid "Encryption password" -msgstr "Contraseña de cifrado" - -msgid "Swap" -msgstr "Swap" - -msgid "Bootloader" -msgstr "xestor de arranque" - -msgid "Root password" -msgstr "Contraseña de root" - -msgid "Superuser account" -msgstr "Conta de superusuario" - -msgid "User account" -msgstr "Conta de usuario" - -msgid "Profile" -msgstr "Perfil" - -msgid "Audio" -msgstr "Audio" - -msgid "Kernels" -msgstr "Núcleos" - -msgid "Additional packages" -msgstr "Paquetes adicionais" - -msgid "Network configuration" -msgstr "Configuración da red" - -msgid "Automatic time sync (NTP)" -msgstr "Sincronización automática de hora (NTP)" - -# are you installing missing configs or are there missing configs -msgid "Install ({} config(s) missing)" -msgstr "Instalar ({} ajuste(s) faltante(s))" - -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 "" -"Ha decidido saltar a selección de discos duros\n" -"y usar a configuración montada en {} (experimental)\n" -"ADVERTENCIA: Archinstall no verificará a idoneidad de esta configuración\n" -"¿Desexa continuar?" - -msgid "Re-using partition instance: {}" -msgstr "Reutilizando instancia de partición: {}" - -msgid "Create a new partition" -msgstr "Crear unha nueva partición" - -msgid "Delete a partition" -msgstr "Eliminar unha partición" - -msgid "Clear/Delete all partitions" -msgstr "Limpiar/Eliminar todas as particións" - -msgid "Assign mount-point for a partition" -msgstr "Asignar punto de montaje para unha partición" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "Marcar/Desmarcar unha partición para ser formateada (borra os datos)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "Marcar/Desmarcar unha partición como encriptada" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "Marcar/Desmarcar unha partición como arrancable (automática para /boot)" - -msgid "Set desired filesystem for a partition" -msgstr "Establecer el sistema de archivos deseado para unha partición" - -msgid "Abort" -msgstr "Abortar" - -msgid "Hostname" -msgstr "Nome de host" - -msgid "Not configured, unavailable unless setup manually" -msgstr "No configurado, no disponible a menos que se configure manualmente" - -msgid "Timezone" -msgstr "Zona horaria" - -msgid "Set/Modify the below options" -msgstr "Establecer/Modificar as opciones siguientes" - -msgid "Install" -msgstr "Instalar" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"Usar ESC para saltar\n" -"\n" - -msgid "Suggest partition layout" -msgstr "Sugerir el diseño de partición" - -msgid "Enter a password: " -msgstr "Ingrese unha contraseña: " - -msgid "Enter a encryption password for {}" -msgstr "Ingrese unha contraseña de cifrado para {}" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "Ingrese a contraseña de cifrado de disco (deje en blanco para no cifrar): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "Crear un super-usuario requerido con privilexios sudo: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "Ingrese a contraseña de root (deje en blanco para deshabilitar root): " - -msgid "Password for user \"{}\": " -msgstr "Contraseña para o usuario “{}”: " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "Verificando que os paquetes adicionais existen (esto pode tardar unos segundos)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "¿Gustarialle utilizar a sincronización automática de hora (NTP) con os servidores de hora predeterminados?\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 do hardware y otros pasos post-configuración poden ser necesarios para que NTP funcione. \n" -"Para más información, por favor, consulte a wiki de Arch" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "Introduzca un nome de usuario para crear un usuario adicional (deje en blanco para saltar): " - -msgid "Use ESC to skip\n" -msgstr "Use ESC para omitir\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -"Escoxa un objeto da lista y seleccione unha das acciones disponibles para ejecutar" - -msgid "Cancel" -msgstr "Cancelar" - -msgid "Confirm and exit" -msgstr "Confirmar e salir" - -msgid "Add" -msgstr "Añadir" - -msgid "Copy" -msgstr "Copiar" - -msgid "Edit" -msgstr "Editar" - -msgid "Delete" -msgstr "Eliminar" - -msgid "Select an action for '{}'" -msgstr "Seleccione unha acción para '{}'" - -msgid "Copy to new key:" -msgstr "Copiar a nueva clave:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "Tipo de nic desconocido: {}. os valores posibles son {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"Esta es su configuración elegida:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Pacman ya se está ejecutando, esperando un máximo de 10 minutos para que finalice." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "o bloqueo de pacman preexistente nunca se cerró. Limpie cualquier sesión de pacman existente antes de usar archinstall." - -msgid "Choose which optional additional repositories to enable" -msgstr "Escoxa qué repositorios adicionais opcionales habilitar" - -msgid "Add a user" -msgstr "Añadir un usuario" - -msgid "Change password" -msgstr "Cambiar contraseña" - -# maybe ascender/descender here? -msgid "Promote/Demote user" -msgstr "Promocionar/Degradar usuario" - -msgid "Delete User" -msgstr "Eliminar usuario" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"Definir un nuevo usuario\n" - -msgid "User Name : " -msgstr "Nome de usuario : " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "¿Debe {} ser un superusuario (sudoer)?" - -msgid "Define users with sudo privilege: " -msgstr "Defina usuarios con privilegio sudo: " - -msgid "No network configuration" -msgstr "Sin configuración de red" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "Establecer os subvolúmenes deseados en unha partición btrfs" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"Seleccione en qué partición configurar os subvolúmenes" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "Administrar subvolúmenes btrfs para la partición actual" - -msgid "No configuration" -msgstr "Sin configuración" - -msgid "Save user configuration" -msgstr "Guardar configuración de usuario" - -msgid "Save user credentials" -msgstr "Guardar credenciales de usuario" - -msgid "Save disk layout" -msgstr "Guardar diseño de disco" - -msgid "Save all" -msgstr "Guardar todo" - -msgid "Choose which configuration to save" -msgstr "Escoxa qué configuración guardar" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "Ingrese un directorio para guardar a(s) configuración(es): " - -msgid "Not a valid directory: {}" -msgstr "No es un directorio válido: {}" - -msgid "The password you are using seems to be weak," -msgstr "A contraseña que está utilizando parece ser débil," - -msgid "are you sure you want to use it?" -msgstr "¿Está seguro de querer usarlo?" - -msgid "Optional repositories" -msgstr "Repositorios opcionales" - -msgid "Save configuration" -msgstr "Guardar configuración" - -msgid "Missing configurations:\n" -msgstr "Configuraciones que faltan:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "Debe especificar unha contraseña de root o al menos 1 superusuario" - -msgid "Manage superuser accounts: " -msgstr "Administrar cuentas de superusuario: " - -msgid "Manage ordinary user accounts: " -msgstr "Administrar cuentas de usuario ordinarias: " - -msgid " Subvolume :{:16}" -msgstr " Subvolumen :{:16}" - -msgid " mounted at {:16}" -msgstr " montado en {:16}" - -msgid " with option {}" -msgstr " con opción {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -"Complete os valores deseados para un nuevo subvolumen\n" - -msgid "Subvolume name " -msgstr "Nome do subvolumen " - -msgid "Subvolume mountpoint" -msgstr "Punto de montaje do subvolumen" - -msgid "Subvolume options" -msgstr "Opciones do subvolumen" - -msgid "Save" -msgstr "Guardar" - -msgid "Subvolume name :" -msgstr "Nome do subvolumen :" - -msgid "Select a mount point :" -msgstr "Seleccione un punto de montaje :" - -msgid "Select the desired subvolume options " -msgstr "Seleccione as opciones de subvolumen deseadas " - -msgid "Define users with sudo privilege, by username: " -msgstr "Defina usuarios con privilexio sudo, por nome de usuario: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -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 unha estructura predeterminada?" - -msgid "Would you like to use BTRFS compression?" -msgstr "¿Le gustaría usar a compresión BTRFS?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "¿Le gustaría crear unha partición separada para /home?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "As unidades seleccionadas no tienna capacidad mínima requerida para unha sugerencia automática\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "Capacidad mínima para a partición /home: {}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Capacidad mínima para a 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 "A configuración manual debe ser unha lista." - -msgid "No iface specified for manual configuration" -msgstr "No se especificó iface para a configuración manual" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "A configuración manual da NIC sin DHCP automático requiere unha 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 a interfaz para agregar" - -msgid "Manual configuration" -msgstr "Configuración manual" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "Marcar/Desmarcar unha 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 "A 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 unha 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 "unha 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 unha 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 will be done" -msgstr "Escoxa qué servidores instalar, si no hay ninguno, se realizará unha 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 "¿Gustarialle acceder a la instalación recién creada e realizar a configuración posterior á 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 ou miss discos duros para usar e configurar\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "¡Cualquier modificación a a configuración existente restablecerá el diseño do disco!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "Se restablece a selección do disco duro, esto tamén restablecerá o diseño actual do 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 particións en cola, esto as 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 omitir" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"Use CTRL+C para restablecer a 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 "pode omitir a selección de unha unidad y a 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 os discos u omita y use /mnt como predeterminado" - -msgid "Select which partitions to mark for formatting:" -msgstr "Seleccione qué particións marcar para formatear:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "Usar HSM para desbloquear a 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 "Debe especificar unha 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 "o 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 which partitions to encrypt" -msgstr "Seleccione qué particións cifrar" - -msgid "very weak" -msgstr "muy débil" - -msgid "weak" -msgstr "débil" - -msgid "moderate" -msgstr "moderado" - -msgid "strong" -msgstr "fuerte" - -msgid "Add subvolume" -msgstr "Agregar subvolumen" - -msgid "Edit subvolume" -msgstr "Editar subvolumen" - -msgid "Delete subvolume" -msgstr "Eliminar subvolumen" - -msgid "Configured {} interfaces" -msgstr "Interfaces {} configuradas" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "Esta opción habilita a cantidad de descargas paralelas que poden ocurrir durante a instalación" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"Ingrese el número de descargas paralelas que se habilitarán.\n" -" (Ingrese un valor entre 1 y {})\n" -"Nota:" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - Valor máximo : {} ( Habilita {} descargas paralelas, permite {} descargas simultáneas )" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - Valor mínimo : 1 ( Habilita 1 descarga paralela, permite 2 descargas simultáneas )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - Deshabilitar/Predeterminado : 0 ( Deshabilita a descarga paralea, permite solo 1 descarga simultánea )" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "¡Entrada no válida! Intente nuevamente con unha entrada válida [1 a {max_downloads}, o 0 para deshabilitar]" - -msgid "Parallel Downloads" -msgstr "Descargas paralelas" - -msgid "Pacman" -msgstr "" - -msgid "Color" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Enter the number of parallel downloads (1-{})" -msgstr "" -"Ingrese el número de descargas paralelas que se habilitarán.\n" -"\n" -"Nota:\n" - -msgid "Enable colored output for pacman" -msgstr "" - -msgid "ESC to skip" -msgstr "ESC para omitir" - -msgid "CTRL+C to reset" -msgstr "CTRL+C para restablecer" - -msgid "TAB to select" -msgstr "TAB para seleccionar" - -msgid "[Default value: 0] > " -msgstr "[Valor predeterminado: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "Para poder usar esta traducción, instale manualmente unha fonte que admita el idioma." - -msgid "The font should be stored as {}" -msgstr "A fonte debe almacenarse como {}" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "Archinstall require privilegios de root para ejecutarse. Consulte --help para más información." - -msgid "Select an execution mode" -msgstr "Seleccione un modo de execución" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "No se pode recuperar el perfil da URL especificada: {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "os perfiles deben tener un nombre único, pero se encontraron definiciones de perfil con nombre duplicado: {}" - -msgid "Select one or more devices to use and configure" -msgstr "Seleccione uno o más dispositivos para usar y configurar" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "Si restablece la selección do dispositivo, esto también restablecerá el diseño actual do disco. ¿Está seguro?" - -msgid "Existing Partitions" -msgstr "particións existentes" - -msgid "Select a partitioning option" -msgstr "Seleccione unha opción de partición" - -msgid "Enter the root directory of the mounted devices: " -msgstr "Ingrese el directorio raíz de os dispositivos montados: " - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "Capacidad mínima para la partición /home: {}GiB\n" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "Capacidad mínima para la partición Arch Linux: {}GiB" - -msgid "This is a list of pre-programmed profiles_bck, they might make it easier to install things like desktop environments" -msgstr "Esta es unha lista de profiles_bck preprogramados que podrían facilitar la instalación de cosas como entornos de escritorio" - -msgid "Current profile selection" -msgstr "Selección de perfil actual" - -msgid "Remove all newly added partitions" -msgstr "Eliminar todas las particións recién agregadas" - -msgid "Assign mountpoint" -msgstr "Asignar punto de montaje" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "Marcar/Desmarcar para formatear (borra datos)" - -msgid "Mark/Unmark as bootable" -msgstr "Marcar/Desmarcar como arrancable" - -msgid "Change filesystem" -msgstr "Cambiar el sistema de archivos" - -msgid "Mark/Unmark as compressed" -msgstr "Marcar/Desmarcar como comprimido" - -msgid "Set subvolumes" -msgstr "Establecer subvolúmenes" - -msgid "Delete partition" -msgstr "Eliminar partición" - -msgid "Partition" -msgstr "Partición" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "Esta partición está actualmente cifrada, para formatearla se debe especificar un sistema de archivos" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "os puntos de montaje da partición son relativos al interior da instalación; el arranque sería /boot como ejemplo." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "Si se establece el punto de montaje /boot, la partición también se marcará como arrancable." - -msgid "Mountpoint: " -msgstr "Punto de montaje: " - -msgid "Current free sectors on device {}:" -msgstr "Sectores libres actuales en el dispositivo {}:" - -msgid "Total sectors: {}" -msgstr "Sectores totales: {}" - -msgid "Enter the start sector (default: {}): " -msgstr "Introduzca el sector de inicio (predeterminado: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "Ingrese el sector final da partición (porcentaje o número de bloque, predeterminado: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "Esto eliminará todas las particións recientemente agregadas, ¿continuar?" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "Gestión de particións: {}" - -#, python-brace-format -msgid "Total length: {}" -msgstr "Largo total: {}" - -msgid "Encryption type" -msgstr "Tipo de cifrado" - -msgid "Iteration time" -msgstr "Tiempo de iteración" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "Ingrese el tiempo de iteración para cifrado LUKS (en milisegundos)" - -msgid "Higher values increase security but slow down boot time" -msgstr "Valores más grandes mejoran la seguridad pero aumentan el tiempo de arranque" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "Por defecto: 10000ms, Rango recomendado 1000-60000" - -msgid "Iteration time cannot be empty" -msgstr "Tiempo de iteración no pode estar vacío" - -msgid "Iteration time must be at least 100ms" -msgstr "Tiempo de iteración no pode menor a 100ms" - -msgid "Iteration time must be at most 120000ms" -msgstr "Tiempo de iteración no pode ser mayor a 120000ms" - -msgid "Please enter a valid number" -msgstr "Por favor ingrese un número válido" - -msgid "Partitions" -msgstr "particións" - -msgid "No HSM devices available" -msgstr "Non hai dispositivos HSM disponibles" - -msgid "Partitions to be encrypted" -msgstr "particións a cifrar" - -msgid "Select disk encryption option" -msgstr "Seleccione la opción de cifrado de disco" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "Seleccione un dispositivo FIDO2 para usar con HSM" - -msgid "Use a best-effort default partition layout" -msgstr "Utlizar un diseño de partición predeterminado de mejor esfuerzo" - -msgid "Manual Partitioning" -msgstr "Partición manual" - -msgid "Pre-mounted configuration" -msgstr "Configuración premontada" - -msgid "Unknown" -msgstr "Desconocido" - -msgid "Partition encryption" -msgstr "Cifrado de partición" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr " ! Formateando {} en " - -msgid "← Back" -msgstr "← Regresar" - -msgid "Disk encryption" -msgstr "Cifrado de disco" - -msgid "Configuration" -msgstr "Configuración" - -msgid "Password" -msgstr "Contraseña" - -msgid "All settings will be reset, are you sure?" -msgstr "Todos os ajustes se restablecerán, ¿está seguro?" - -msgid "Back" -msgstr "Regresar" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "Por favor, elixa qué xestor de inicio de sesión instalar para os perfiles elegidos: {}" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "Tipo de entorno: {}" - -msgid "The proprietary Nvidia driver is not supported by Sway. It is likely that you will run into issues, are you okay with that?" -msgstr "O controlador propietario de Nvidia no es compatible con Sway. Es probable que encuentre problemas, ¿Desexar continuar?" - -msgid "Installed packages" -msgstr "Paquetes instalados" - -msgid "Add profile" -msgstr "Agregar perfil" - -msgid "Edit profile" -msgstr "Editar perfil" - -msgid "Delete profile" -msgstr "Eliminar perfil" - -msgid "Profile name: " -msgstr "Nome de perfil: " - -msgid "The profile name you entered is already in use. Try again" -msgstr "El nombre de perfil que ingresó ya está en uso. Intente nuevamente" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "Paquetes que se instalarasen con este perfil (separados por espacios, déjelo en blanco para omitir): " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "Servicios que se habilitarán con este perfil (separados por espacios, deje en blanco para omitir): " - -msgid "Should this profile be enabled for installation?" -msgstr "¿Debería habilitarse este perfil para la instalación?" - -msgid "Create your own" -msgstr "Crear tu propio" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"Seleccione un controlador de gráficos o deje en blanco para instalar todos os controladores de código abierto" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway necesita acceso a sus dispositivos de hardware (teclado, mouse, etc.)" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Escoxa unha opción para darle a Sway acceso a su hardware" - -msgid "Graphics driver" -msgstr "Controlador de gráficos" - -msgid "Greeter" -msgstr "xestor de inicio de sesión" - -msgid "Please chose which greeter to install" -msgstr "Por favor, elixa qué xestor de inicio de sesión instalar" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "Esta es unha lista de default_profiles preprogramados" - -msgid "Disk configuration" -msgstr "Configuración do disco" - -msgid "Profiles" -msgstr "Perfiles" - -msgid "Finding possible directories to save configuration files ..." -msgstr "Encontrar posibles directorios para guardar archivos de configuración..." - -msgid "Select directory (or directories) for saving configuration files" -msgstr "Seleccione el directorio (o directorios) para guardar os archivos de configuración" - -msgid "Add a custom mirror" -msgstr "Agregar un espejo personalizado" - -msgid "Change custom mirror" -msgstr "Cambiar espejo personalizado" - -msgid "Delete custom mirror" -msgstr "Eliminar espejo personalizado" - -msgid "Enter name (leave blank to skip): " -msgstr "Ingrese el nombre (deje en blanco para omitir): " - -msgid "Enter url (leave blank to skip): " -msgstr "Ingrese la URL (deje en blanco para omitir): " - -msgid "Select signature check option" -msgstr "Seleccione la opción de verificación de firma" - -msgid "Select signature option" -msgstr "Seleccione la opción de firma" - -msgid "Custom mirrors" -msgstr "Espejos personalizados" - -msgid "Defined" -msgstr "Definido" - -msgid "Save user configuration (including disk layout)" -msgstr "Guardar la configuración do usuario (incluido el diseño do disco)" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"Ingrese un directorio para guardar las configuraciones (completar con tabulación habilitado)\n" -"Guardar directorio: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"¿Desexa guardar {} archivo(s) de configuración na siguiente ubicación?\n" -"\n" -"{}" - -msgid "Saving {} configuration files to {}" -msgstr "Guardar {} archivos de configuración en {}" - -msgid "Mirrors" -msgstr "Espellos" - -msgid "Mirror regions" -msgstr "Rexions de espejos" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - Valor máximo : {} ( Habilita {} descargas paralelas, permite {max_downloads+1} descargas simultáneas )" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "¡Entrada no válida! Intente nuevamente con unha entrada válida [1 a {}, o 0 para deshabilitar]" - -msgid "Locales" -msgstr "Localidades" - -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)" - -msgid "Total: {} / {}" -msgstr "Total: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "Todos os valores ingresados poden tener unha unidad como sufijo: B, KB, KiB, MB, MiB ..." - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "Se non se proporciona ningunha unidad, o valor se interpreta como sectores" - -msgid "Enter start (default: sector {}): " -msgstr "Ingrese el inicio (predeterminado: sector {}): " - -msgid "Enter end (default: {}): " -msgstr "Ingrese el final (predeterminado: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "Non se pode determinar os dispositivos fido2. ¿Está instalado libfido2?" - -msgid "Path" -msgstr "Ruta" - -msgid "Manufacturer" -msgstr "Fabricante" - -msgid "Product" -msgstr "Producto" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "Configuración no válida: {error}" +msgid "Minimal KDE Plasma installation" +msgstr "Instalación mínima de KDE Plasma" msgid "Type" msgstr "Tipo" -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "Esta opción habilita a cantidade de descargas paralelas que poden ocurrir durante as descargas de paquetes" +msgid "Description" +msgstr "Descrición" -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"Ingrese el número de descargas paralelas que se habilitarán.\n" -"\n" -"Nota:\n" +msgid "Select a flavor of KDE Plasma to install" +msgstr "Selecciona a variante de KDE Plasma que instalar" #, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - Valor máximo recomendado : {} ( Permite {} descargas paralelas simultáneas )" +msgid "{} needs access to your seat" +msgstr "{} necesita acceso ao teu posto (seat)" -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - Deshabilitar/Predeterminado : 0 ( Deshabilita la descarga paralela, permite solo 1 descarga simultánea )\n" +msgid "collection of hardware devices i.e. keyboard, mouse" +msgstr "conxunto de dispositivos de hardware, p. ex. teclado e rato" -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "¡Entrada non válida! Intente novamente con unha entrada válida [ou 0 para deshabilitar]" +#, python-brace-format +msgid "Choose an option how to give {} access to your hardware" +msgstr "Escolle como darlle acceso a {} ao teu hardware" -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Hyprland necesita acceso ao seu asiento (colección de dispositivos de hardware, es decir, teclado, mouse, etc.)" +#, python-brace-format +msgid "Environment type: {} {}" +msgstr "Tipo de contorno: {} {}" -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Escoxa unha opción para darle acceso a Hyprland a su hardware" +#, python-brace-format +msgid "Environment type: {}" +msgstr "Tipo de contorno: {}" -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "Todos os valores introducidos poden tener como sufijo unha unidad: %, B, KB, KiB, MB, MiB..." +msgid "Installed packages" +msgstr "Paquetes instalados" -msgid "Would you like to use unified kernel images?" -msgstr "¿Gustarialle utilizar imágenes do kernel unificadas?" +msgid "Bluetooth" +msgstr "Bluetooth" + +msgid "Audio" +msgstr "Son" + +msgid "Print service" +msgstr "Servizo de impresión" + +msgid "Power management" +msgstr "Xestión de enerxía" + +msgid "Firewall" +msgstr "Devasa" + +msgid "Additional fonts" +msgstr "Tipos de letra adicionais" + +msgid "Enabled" +msgstr "Activado" + +msgid "Disabled" +msgstr "Desactivado" + +msgid "Would you like to configure Bluetooth?" +msgstr "Queres configurar o Bluetooth?" + +msgid "Would you like to configure the print service?" +msgstr "Queres configurar o servizo de impresión?" + +msgid "Select audio configuration" +msgstr "Selecciona a configuración de son" + +msgid "Select font packages to install" +msgstr "Selecciona os paquetes de tipos de letra que instalar" + +msgid "ArchInstall Language" +msgstr "Idioma de ArchInstall" + +msgid "Version" +msgstr "Versión" + +msgid "Installation Script" +msgstr "Script de instalación" + +msgid "Locales" +msgstr "Configuración rexional" + +msgid "Disk configuration" +msgstr "Configuración de discos" + +msgid "Profile" +msgstr "Perfil" + +msgid "Mirrors and repositories" +msgstr "Réplicas e repositorios" + +msgid "Network" +msgstr "Rede" + +msgid "Bootloader" +msgstr "Cargador de arranque" + +msgid "Application" +msgstr "Aplicación" + +msgid "Authentication" +msgstr "Autenticación" + +msgid "Swap" +msgstr "Swap" + +msgid "Hostname" +msgstr "Nome de host" + +msgid "Kernels" +msgstr "Núcleos" + +msgid "Automatic time sync (NTP)" +msgstr "Sincronización automática da hora (NTP)" + +msgid "Timezone" +msgstr "Fuso horario" + +msgid "Services" +msgstr "Servizos" + +msgid "Additional packages" +msgstr "Paquetes adicionais" + +msgid "Pacman" +msgstr "Pacman" + +msgid "Custom commands" +msgstr "Ordes personalizadas" + +msgid "Users" +msgstr "Usuarios" + +msgid "Root encrypted password" +msgstr "Contrasinal cifrado de root" + +msgid "Disk encryption password" +msgstr "Contrasinal de cifrado do disco" + +msgid "Incorrect credentials file decryption password" +msgstr "O contrasinal de descifrado do ficheiro de credenciais é incorrecto" + +msgid "Enter credentials file decryption password" +msgstr "Introduce o contrasinal de descifrado do ficheiro de credenciais" + +msgid "Incorrect password" +msgstr "Contrasinal incorrecto" + +#, python-brace-format +msgid "Setting up U2F login: {}" +msgstr "Configurando o inicio de sesión U2F: {}" + +#, python-brace-format +msgid "Setting up U2F device for user: {}" +msgstr "Configurando o dispositivo U2F para o usuario: {}" + +msgid "You may need to enter the PIN and then touch your U2F device to register it" +msgstr "Pode que teñas que introducir o PIN e despois tocar o teu dispositivo U2F para rexistralo" + +msgid "Root password" +msgstr "Contrasinal de root" + +msgid "User account" +msgstr "Conta de usuario" + +msgid "U2F login setup" +msgstr "Configuración do inicio de sesión U2F" + +msgid "U2F login method: " +msgstr "Método de inicio de sesión U2F: " + +msgid "Passwordless sudo: " +msgstr "Sudo sen contrasinal: " + +msgid "No U2F devices found" +msgstr "Non se atopou ningún dispositivo U2F" + +msgid "Enter root password" +msgstr "Introduce o contrasinal de root" + +msgid "Enable passwordless sudo?" +msgstr "Queres activar sudo sen contrasinal?" msgid "Unified kernel images" -msgstr "Imaxes do kernel unificadas" +msgstr "Imaxes de núcleo unificadas" -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "Esperando a que se complete la sincronización da hora (timedatectl show)." +msgid "Install to removable location" +msgstr "Instalar nunha localización extraíble" -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "A sincronización de hora no se completa mientras espera - consulte os documentos para encontrar soluciones: https://archinstall.readthedocs.io/" +msgid "Plymouth" +msgstr "Plymouth" -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "Saltarse la espera de sincronización automática da hora (esto pode causar problemas si la hora no está sincronizada durante la instalación)" +msgid "Will install to /EFI/BOOT/ (removable location, safe default)" +msgstr "Instalarase en /EFI/BOOT/ (localización extraíble, opción predeterminada segura)" -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "Esperando a que se complete la sincronización do llavero de Arch Linux (archlinux-keyring-wkd-sync)." +msgid "Will install to custom location with NVRAM entry" +msgstr "Instalarase nunha localización personalizada cunha entrada NVRAM" -msgid "Selected profiles: " -msgstr "Perfiles seleccionados: " +msgid "Plymouth adds a cosmetic boot splash but can cause boot problems on some setups:" +msgstr "Plymouth engade unha pantalla de arranque decorativa, pero pode causar problemas de arranque nalgunhas configuracións:" -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "A sincronización de hora no se completa mientras espera - consulte os documentos para encontrar soluciones: https://archinstall.readthedocs.io/" +msgid "black screen with the NVIDIA driver" +msgstr "pantalla en negro co controlador de NVIDIA" -msgid "Mark/Unmark as nodatacow" -msgstr "Marcar/Desmarcar como nodatacow" +msgid "hidden password prompt with disk encryption (LUKS)" +msgstr "petición de contrasinal oculta co cifrado de disco (LUKS)" -msgid "Would you like to use compression or disable CoW?" -msgstr "¿Le gustaría utilizar compresión o desactivar CoW?" +msgid "Would you like to enable it?" +msgstr "Queres activalo?" -msgid "Use compression" -msgstr "Usar compresión" +msgid "Would you like to use unified kernel images?" +msgstr "Queres usar imaxes de núcleo unificadas?" -msgid "Disable Copy-on-Write" -msgstr "Desactivar copia en escritura" +msgid "Would you like to install the bootloader to the default removable media search location?" +msgstr "Queres instalar o cargador de arranque na localización predeterminada de busca de medios extraíbles?" -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "Proporciona unha selección de entornos de escritorio y administradores de ventanas en mosaico, p.e. GNOME, KDE Plasma, Sway" +msgid "This installs the bootloader to /EFI/BOOT/BOOTX64.EFI (or similar) which is useful for:" +msgstr "Isto instala o cargador de arranque en /EFI/BOOT/BOOTX64.EFI (ou similar), o cal é útil para:" + +msgid "Firmware that does not properly support NVRAM boot entries like most MSI motherboards," +msgstr "Firmware que non admite correctamente as entradas de arranque NVRAM, como a maioría das placas base de MSI," + +msgid "most Apple Macs, many laptops..." +msgstr "a maioría dos Mac de Apple, moitos portátiles..." + +msgid "USB drives or other portable external media." +msgstr "unidades USB ou outros medios externos portátiles." + +msgid "Systems where you want the disk to be bootable on any computer." +msgstr "Sistemas nos que queiras que o disco arranque en calquera computador." + +msgid "Select bootloader to install" +msgstr "Selecciona o cargador de arranque que instalar" + +msgid "UEFI is not detected and some options are disabled" +msgstr "Non se detectou UEFI e algunhas opcións están desactivadas" + +msgid "Select Plymouth theme" +msgstr "Selecciona o tema de Plymouth" + +msgid "The specified configuration will be applied" +msgstr "Aplicarase a configuración especificada" + +msgid "Would you like to continue?" +msgstr "Queres continuar?" + +msgid "Configuration preview" +msgstr "Vista previa da configuración" + +msgid "No configuration" +msgstr "Sen configuración" + +msgid "Save user configuration (including disk layout)" +msgstr "Gardar a configuración do usuario (incluída a disposición dos discos)" + +msgid "Save user credentials" +msgstr "Gardar as credenciais do usuario" + +msgid "Save all" +msgstr "Gardar todo" + +msgid "Enter a directory for the configuration(s) to be saved" +msgstr "Introduce un directorio onde gardar as configuracións" + +#, python-brace-format +msgid "Do you want to save the configuration file(s) to {}?" +msgstr "Queres gardar os ficheiros de configuración en {}?" + +msgid "Do you want to encrypt the user_credentials.json file?" +msgstr "Queres cifrar o ficheiro user_credentials.json?" + +msgid "Credentials file encryption password" +msgstr "Contrasinal de cifrado do ficheiro de credenciais" + +msgid "Partitioning" +msgstr "Particionado" + +msgid "Disk encryption" +msgstr "Cifrado de disco" #, python-brace-format msgid "Configuration type: {}" msgstr "Tipo de configuración: {}" -msgid "LVM configuration type" -msgstr "Tipo de configuración LVM" +msgid "Mountpoint" +msgstr "Punto de montaxe" -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "Actualmente no se admite el cifrado de disco LVM con más de 2 particións" +msgid "Configuration" +msgstr "Configuración" -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "Usar NetworkManager (necesario para configurar internet gráficamente en GNOME y KDE Plasma)" - -msgid "Select a LVM option" -msgstr "Seleccione unha opción LVM" - -msgid "Partitioning" -msgstr "Particionamiento" - -msgid "Logical Volume Management (LVM)" -msgstr "Gestión de volúmenes lógicos (LVM)" +msgid "Wipe" +msgstr "Borrar" msgid "Physical volumes" -msgstr "Volúmenes físicos" +msgstr "Volumes físicos" msgid "Volumes" -msgstr "Volúmenes" +msgstr "Volumes" + +#, python-brace-format +msgid "Snapshot type: {}" +msgstr "Tipo de instantánea: {}" + +msgid "LVM disk encryption with more than 2 partitions is currently not supported" +msgstr "Actualmente non se admite o cifrado de disco LVM con máis de 2 particións" + +msgid "Encryption type" +msgstr "Tipo de cifrado" + +msgid "Password" +msgstr "Contrasinal" + +msgid "Iteration time" +msgstr "Tempo de iteración" + +msgid "No disks were detected. A disk is required to be able to install Arch Linux" +msgstr "Non se detectou ningún disco. Fai falta un disco para poder instalar Arch Linux" + +msgid "Select disks for the installation" +msgstr "Selecciona os discos para a instalación" + +msgid "Partitions" +msgstr "Particións" + +msgid "Select a disk configuration" +msgstr "Selecciona unha configuración de discos" + +msgid "Enter root mount directory" +msgstr "Introduce o directorio de montaxe raíz" + +msgid "You will use whatever drive-setup is mounted at the specified directory" +msgstr "Usarase a configuración de unidades que estea montada no directorio especificado" + +msgid "WARNING: Archinstall won't check the suitability of this setup" +msgstr "AVISO: Archinstall non comprobará a idoneidade desta configuración" + +msgid "Select main filesystem" +msgstr "Selecciona o sistema de ficheiros principal" + +msgid "Would you like to use compression or disable CoW?" +msgstr "Queres usar compresión ou desactivar o CoW?" + +msgid "Use compression" +msgstr "Usar compresión" + +msgid "Disable Copy-on-Write" +msgstr "Desactivar o Copy-on-Write" + +msgid "Would you like to use BTRFS subvolumes with a default structure?" +msgstr "Queres usar subvolumes de BTRFS cunha estrutura predeterminada?" + +msgid "Would you like to create a separate partition for /home?" +msgstr "Queres crear unha partición separada para /home?" + +msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" +msgstr "As unidades seleccionadas non teñen a capacidade mínima necesaria para unha suxestión automática\n" + +#, python-brace-format +msgid "Minimum capacity for /home partition: {}GiB\n" +msgstr "Capacidade mínima para a partición /home: {}GiB\n" + +#, python-brace-format +msgid "Minimum capacity for Arch Linux partition: {}GiB" +msgstr "Capacidade mínima para a partición de Arch Linux: {}GiB" + +msgid "Encryption password" +msgstr "Contrasinal de cifrado" msgid "LVM volumes" -msgstr "Volúmenes LVM" - -msgid "LVM volumes to be encrypted" -msgstr "Volúmenes LVM a cifrar" - -msgid "Select which LVM volumes to encrypt" -msgstr "Seleccione qué volúmenes LVM cifrar" - -msgid "Default layout" -msgstr "Diseño predeterminado" - -msgid "No Encryption" -msgstr "Sen cifrado" - -msgid "LUKS" -msgstr "LUKS" - -msgid "LVM on LUKS" -msgstr "LVM en LUKS" - -msgid "LUKS on LVM" -msgstr "LUKS en LVM" - -msgid "Yes" -msgstr "Sí" - -msgid "No" -msgstr "No" - -msgid "Archinstall help" -msgstr "axuda de archinstall" - -msgid " (default)" -msgstr " (predeterminado)" - -msgid "Press Ctrl+h for help" -msgstr "Presione Ctrl+h para obtener axuda" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "Escoxa unha opción para darle a Sway acceso a su hardware" - -# maybe "Acceso a la estación" or "Gestión de puestos (seats)" could be better? -msgid "Seat access" -msgstr "Acceso al asiento" - -msgid "Mountpoint" -msgstr "Punto de montaje" +msgstr "Volumes LVM" msgid "HSM" msgstr "HSM" -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "Ingrese la contraseña de cifrado do disco (deje en blanco si no desea cifrar)" +msgid "Partitions to be encrypted" +msgstr "Particións a cifrar" -msgid "Disk encryption password" -msgstr "Contraseña de cifrado de disco" +msgid "LVM volumes to be encrypted" +msgstr "Volumes LVM a cifrar" + +msgid "HSM device" +msgstr "Dispositivo HSM" + +msgid "Select encryption type" +msgstr "Selecciona o tipo de cifrado" + +msgid "Enter disk encryption password (leave blank for no encryption)" +msgstr "Introduce o contrasinal de cifrado do disco (déixao en branco para non cifrar)" + +msgid "Select a FIDO2 device to use for HSM" +msgstr "Selecciona un dispositivo FIDO2 para usar como HSM" + +msgid "Enter iteration time for LUKS encryption (in milliseconds)" +msgstr "Introduce o tempo de iteración para o cifrado LUKS (en milisegundos)" + +msgid "Higher values increase security but slow down boot time" +msgstr "Valores máis altos aumentan a seguridade, pero fan o arranque máis lento" + +#, python-brace-format +msgid "Default: {}ms, Recommended range: 1000-60000" +msgstr "Por defecto: {}ms; intervalo recomendado: 1000-60000" + +msgid "Iteration time must be at least 100ms" +msgstr "O tempo de iteración debe ser de polo menos 100ms" + +msgid "Iteration time must be at most 120000ms" +msgstr "O tempo de iteración debe ser como máximo de 120000ms" + +msgid "Please enter a valid number" +msgstr "Introduce un número válido" + +msgid "Suggest partition layout" +msgstr "Suxerir unha disposición de particións" + +msgid "Remove all newly added partitions" +msgstr "Eliminar todas as particións engadidas recentemente" + +msgid "Assign mountpoint" +msgstr "Asignar punto de montaxe" + +msgid "Mark/Unmark to be formatted (wipes data)" +msgstr "Marcar/Desmarcar para formatar (borra os datos)" + +msgid "Mark/Unmark as bootable" +msgstr "Marcar/Desmarcar como arrancable" + +msgid "Mark/Unmark as ESP" +msgstr "Marcar/Desmarcar como ESP" + +msgid "Mark/Unmark as XBOOTLDR" +msgstr "Marcar/Desmarcar como XBOOTLDR" + +msgid "Change filesystem" +msgstr "Cambiar o sistema de ficheiros" + +msgid "Mark/Unmark as compressed" +msgstr "Marcar/Desmarcar como comprimida" + +msgid "Mark/Unmark as nodatacow" +msgstr "Marcar/Desmarcar como nodatacow" + +msgid "Set subvolumes" +msgstr "Definir os subvolumes" + +msgid "Delete partition" +msgstr "Eliminar a partición" + +#, python-brace-format +msgid "Partition management: {}" +msgstr "Xestión de particións: {}" + +#, python-brace-format +msgid "Total length: {}" +msgstr "Lonxitude total: {}" msgid "Partition - New" -msgstr "Partición - nova" +msgstr "Partición - Nova" -msgid "Filesystem" -msgstr "Sistema de archivos" +msgid "Partition" +msgstr "Partición" + +msgid "This partition is currently encrypted, to format it a filesystem has to be specified" +msgstr "Esta partición está cifrada actualmente; para formatala hai que especificar un sistema de ficheiros" + +msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." +msgstr "Os puntos de montaxe das particións son relativos ao interior da instalación; por exemplo, o de arranque sería /boot." + +msgid "Enter a mountpoint" +msgstr "Introduce un punto de montaxe" msgid "Invalid size" -msgstr "Tamaño no válido" - -msgid "Start (default: sector {}): " -msgstr "Inicio (predeterminado: sector {}): " - -msgid "End (default: {}): " -msgstr "Fin (predeterminado: {}): " - -msgid "Subvolume name" -msgstr "Nome do subvolumen" - -msgid "Disk configuration type" -msgstr "Tipo de configuración do disco" - -msgid "Root mount directory" -msgstr "Directorio de montaxe raíz" - -msgid "Select language" -msgstr "Seleccionar idioma" - -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "Escriba paquetes adicionais para instalar (separados por espacios, déxelo en blanco para omitir)" - -msgid "Invalid download number" -msgstr "Número de descarga no válido" - -msgid "Number downloads" -msgstr "Número de descargas" - -msgid "The username you entered is invalid" -msgstr "O nome de usuario ingresado no es válido" - -msgid "Username" -msgstr "Nome de usuario" - -#, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "¿\"{}\" debería ser un superusuario (sudo)?\n" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "Debe ingresar unha IP válida en el modo de configuración de IP" - -msgid "Modes" -msgstr "Modos" - -msgid "IP address" -msgstr "Dirección IP" - -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "Ingrese la dirección IP de su puerta de enlace (enrutador) (deje en blanco si no hay ninguna)" - -msgid "Gateway address" -msgstr "Dirección de puerta de enlace" - -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "Ingrese sus servidores DNS separados por espacios (deje en blanco si no hay ninguno)" - -msgid "DNS servers" -msgstr "Servidores DNS" - -msgid "Configure interfaces" -msgstr "Configurar interfaces" - -msgid "Kernel" -msgstr "Núcleo" - -msgid "UEFI is not detected and some options are disabled" -msgstr "No se detecta UEFI ou algunhas opciones están deshabilitadas" - -msgid "Info" -msgstr "Info" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "O controlador patentado de Nvidia non e compatible con Sway." - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "Es probable que tengas problemas. ¿Te parece bien?" - -msgid "Main profile" -msgstr "Perfil principal" - -msgid "Confirm password" -msgstr "Confirmar contraseña" - -msgid "The confirmation password did not match, please try again" -msgstr "A contraseña de confirmación no coincide, por favor intente nuevamente" - -msgid "Not a valid directory" -msgstr "No es un directorio válido" - -msgid "Would you like to continue?" -msgstr "¿Quiere continuar?" - -msgid "Directory" -msgstr "Directorio" - -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "Ingrese un directorio para guardar las configuraciones (autocompletado de tabulación habilitado)" - -#, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "¿Desexa guardar os archivos de configuración en {}?" - -msgid "Enabled" -msgstr "Habilitado" - -msgid "Disabled" -msgstr "Deshabilitado" - -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "Envíe este problema (y archivo) a https://github.com/archlinux/archinstall/issues" - -msgid "Mirror name" -msgstr "Nome do espejo" - -msgid "Url" -msgstr "Url" - -msgid "Select signature check" -msgstr "Seleccionar verificación de firma" - -msgid "Select execution mode" -msgstr "Seleccionar modo de execución" - -msgid "Press ? for help" -msgstr "Presione ? para obtener axuda" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "Escoxa unha opción para darle a Hyprland acceso a su hardware" - -msgid "Additional repositories" -msgstr "Repositorios adicionais" - -msgid "NTP" -msgstr "NTP" - -msgid "Swap on zram" -msgstr "Swap en zram" - -msgid "Name" -msgstr "Nome" - -msgid "Signature check" -msgstr "Comprobación de firma" +msgstr "Tamaño non válido" #, python-brace-format msgid "Selected free space segment on device {}:" @@ -1553,699 +513,693 @@ msgstr "Segmento de espazo libre seleccionado no dispositivo {}:" msgid "Size: {} / {}" msgstr "Tamaño: {} / {}" +msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." +msgstr "Todos os valores introducidos poden levar como sufixo unha unidade: %, B, KB, KiB, MB, MiB..." + +msgid "If no unit is provided, the value is interpreted as sectors" +msgstr "Se non se indica unha unidade, o valor interprétase como sectores" + #, python-brace-format -msgid "Size (default: {}): " -msgstr "Tamaño (predeterminado: {}): " +msgid "Enter a size (default: {}): " +msgstr "Introduce un tamaño (por defecto: {}): " -msgid "HSM device" -msgstr "Dispositivo HSM" +msgid "This will remove all newly added partitions, continue?" +msgstr "Isto eliminará todas as particións engadidas recentemente. Queres continuar?" -msgid "Some packages could not be found in the repository" -msgstr "No se pudieron encontrar algunos paquetes en el repositorio" +msgid "Add subvolume" +msgstr "Engadir subvolume" -msgid "User" -msgstr "Usuario" +msgid "Edit subvolume" +msgstr "Editar subvolume" -msgid "The specified configuration will be applied" -msgstr "Aplicarase la configuración especificada" +msgid "Delete subvolume" +msgstr "Eliminar subvolume" -msgid "Wipe" -msgstr "Borrar" +msgid "Value cannot be empty" +msgstr "O valor non pode estar baleiro" -msgid "Mark/Unmark as XBOOTLDR" -msgstr "Marcar/Desmarcar como XBOOTLDR" +msgid "Enter subvolume name" +msgstr "Introduce o nome do subvolume" -msgid "Loading packages..." -msgstr "Cargando paquetes..." +msgid "Subvolume name" +msgstr "Nome do subvolume" -msgid "Select any packages from the below list that should be installed additionally" -msgstr "Seleccione cualquier paquete da lista a continuación que deba instalarse adicionalmente" +msgid "Enter subvolume mountpoint" +msgstr "Introduce o punto de montaxe do subvolume" -msgid "Add a custom repository" -msgstr "Agregar un repositorio personalizado" +msgid "Exit archinstall" +msgstr "Saír de archinstall" -msgid "Change custom repository" -msgstr "Cambiar el repositorio personalizado" +msgid "Reboot system" +msgstr "Reiniciar o sistema" -msgid "Delete custom repository" -msgstr "Eliminar repositorio personalizado" +msgid "chroot into installation for post-installation configurations" +msgstr "facer chroot na instalación para configuracións posteriores á instalación" -msgid "Repository name" -msgstr "Nome do repositorio" +msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" +msgstr "Queres usar a sincronización automática da hora (NTP) cos servidores de hora predeterminados?\n" -msgid "Add a custom server" -msgstr "Agregar un servidor personalizado" +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 do hardware e outros pasos posteriores á configuración poden ser necesarios para que NTP funcione.\n" +"Para máis información, consulta a wiki de Arch" -msgid "Change custom server" -msgstr "Cambiar servidor personalizado" +msgid "Enter a hostname" +msgstr "Introduce un nome de host" -msgid "Delete custom server" -msgstr "Eliminar servidor personalizado" +msgid "Select timezone" +msgstr "Selecciona o fuso horario" -msgid "Server url" -msgstr "URL do servidor" +msgid "What would you like to do next?" +msgstr "Que queres facer a continuación?" -msgid "Select regions" -msgstr "Seleccione regiones" +msgid "Select which kernel(s) to install" +msgstr "Selecciona que núcleo(s) instalar" -msgid "Add custom servers" -msgstr "Agregar servidores personalizados" +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 a mellor compatibilidade co teu hardware de AMD, quizais queiras usar a opción de só código aberto ou a de AMD / ATI." -msgid "Add custom repository" -msgstr "Agregar repositorio personalizado" +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 a mellor compatibilidade co teu hardware de Intel, quizais queiras usar a opción de só código aberto ou a de Intel.\n" -msgid "Loading mirror regions..." -msgstr "Cargando regiones de espejo..." +msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" +msgstr "Para a mellor compatibilidade co teu hardware de Nvidia, quizais queiras usar o controlador privativo de Nvidia.\n" -msgid "Mirrors and repositories" -msgstr "Espejos y repositorios" +msgid "Would you like to use swap on zram?" +msgstr "Queres usar swap en zram?" + +msgid "Select zram compression algorithm:" +msgstr "Selecciona o algoritmo de compresión de zram:" + +msgid "Archinstall language" +msgstr "Idioma de Archinstall" + +msgid "Applications" +msgstr "Aplicacións" + +msgid "Network configuration" +msgstr "Configuración de rede" + +msgid "Save configuration" +msgstr "Gardar a configuración" + +msgid "Install" +msgstr "Instalar" + +msgid "Abort" +msgstr "Abortar" + +msgid "Either root-password or at least 1 user with sudo privileges must be specified" +msgstr "Hai que especificar o contrasinal de root ou polo menos 1 usuario con privilexios de sudo" + +msgid "The selected desktop profile requires a regular user to log in via the greeter" +msgstr "O perfil de escritorio seleccionado require un usuario normal para iniciar sesión mediante o xestor de inicio de sesión" + +msgid "Language" +msgstr "Idioma" + +msgid "NTP" +msgstr "NTP" + +msgid "LVM configuration type" +msgstr "Tipo de configuración LVM" + +#, python-brace-format +msgid "Btrfs snapshot type: {}" +msgstr "Tipo de instantánea de Btrfs: {}" + +msgid "Swap on zram" +msgstr "Swap en zram" + +msgid "Compression algorithm" +msgstr "Algoritmo de compresión" + +msgid "Parallel Downloads" +msgstr "Descargas paralelas" + +msgid "Color" +msgstr "Cor" + +msgid "Kernel" +msgstr "Núcleo" + +msgid "No network configuration selected. Network will need to be set up manually on the installed system." +msgstr "Non se seleccionou ningunha configuración de rede. Haberá que configurar a rede manualmente no sistema instalado." + +msgid "Missing configurations:" +msgstr "Configuracións que faltan:" + +msgid "Invalid configuration:" +msgstr "Configuración non válida:" + +msgid "Ready to install" +msgstr "Listo para instalar" + +msgid "Warnings:" +msgstr "Avisos:" + +msgid "Profiles" +msgstr "Perfís" + +msgid "Graphics driver" +msgstr "Controlador gráfico" + +msgid "Greeter" +msgstr "Xestor de inicio de sesión" msgid "Selected mirror regions" -msgstr "Regiones de espejo seleccionadas" +msgstr "Rexións de réplicas seleccionadas" msgid "Custom servers" msgstr "Servidores personalizados" +msgid "Optional repositories" +msgstr "Repositorios opcionais" + msgid "Custom repositories" msgstr "Repositorios personalizados" -msgid "Only ASCII characters are supported" -msgstr "Sólo admitense caracteres ASCII" +#, python-brace-format +msgid "[!] A log file has been created here: {}" +msgstr "[!] Creouse un ficheiro de rexistro aquí: {}" -msgid "Show help" -msgstr "Mostrar axuda" +msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" +msgstr "Por favor, envía este problema (e o ficheiro) a https://github.com/archlinux/archinstall/issues" -msgid "Exit help" -msgstr "Axuda para salir" +msgid "Syncing the system..." +msgstr "Sincronizando o sistema..." -msgid "Preview scroll up" -msgstr "Subir en vista previa" +msgid "Waiting for time sync (timedatectl show) to complete." +msgstr "Agardando a que remate a sincronización da hora (timedatectl show)." -msgid "Preview scroll down" -msgstr "Bajar en vista previa" +msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" +msgstr "A sincronización da hora aínda non rematou; mentres agardas, consulta a documentación para posibles solucións: https://archinstall.readthedocs.io/" -msgid "Move up" -msgstr "Subir" +msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" +msgstr "Omítese a espera da sincronización automática da hora (isto pode causar problemas se a hora está desincronizada durante a instalación)" -msgid "Move down" -msgstr "Bajar" +msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." +msgstr "Agardando a que remate a sincronización do chaveiro de Arch Linux (archlinux-keyring-wkd-sync)." -msgid "Move right" -msgstr "Mover a la dereita" +msgid "Keyboard layout" +msgstr "Disposición do teclado" -msgid "Move left" -msgstr "Mover a la esquerda" +msgid "Locale language" +msgstr "Idioma da configuración rexional" -msgid "Jump to entry" -msgstr "Saltar á entrada" +msgid "Locale encoding" +msgstr "Codificación da configuración rexional" -msgid "Skip selection (if available)" -msgstr "Saltar selección (si está disponible)" +msgid "Console font" +msgstr "Tipo de letra da consola" -msgid "Reset selection (if available)" -msgstr "Restablecer selección (si está disponible)" +msgid "Back" +msgstr "Volver" -msgid "Select on single select" -msgstr "Seleccionar en selección única" +msgid "Are you sure you want to reset this setting?" +msgstr "Seguro que queres restablecer esta opción?" -msgid "Select on multi select" -msgstr "Seleccionar en selección múltiple" +msgid "Confirm and exit" +msgstr "Confirmar e saír" -msgid "Reset" -msgstr "Restablecer" +msgid "Cancel" +msgstr "Cancelar" -msgid "Skip selection menu" -msgstr "Saltar el menú de selección" +msgid "Password strength: Weak" +msgstr "Forza do contrasinal: débil" -msgid "Start search mode" -msgstr "Iniciar modo de búsqueda" +msgid "Password strength: Moderate" +msgstr "Forza do contrasinal: moderada" -msgid "Exit search mode" -msgstr "Salir do modo de búsqueda" +msgid "Password strength: Strong" +msgstr "Forza do contrasinal: forte" -msgid "General" -msgstr "" +msgid "Confirm password" +msgstr "Confirma o contrasinal" -#, fuzzy -msgid "Navigation" -msgstr "Guardar configuración" +msgid "The password did not match, please try again" +msgstr "O contrasinal non coincide; téntao de novo" -#, fuzzy -msgid "Selection" -msgstr "Seleccione regiones" +msgid "Not a valid directory" +msgstr "Non é un directorio válido" -msgid "Search" -msgstr "" +msgid "Do you really want to abort?" +msgstr "Seguro que queres abortar?" -msgid "Down" -msgstr "" +msgid "Add a custom repository" +msgstr "Engadir un repositorio personalizado" -msgid "Up" -msgstr "" +msgid "Change custom repository" +msgstr "Cambiar o repositorio personalizado" -#, fuzzy -msgid "Confirm" -msgstr "Confirmar e salir" +msgid "Delete custom repository" +msgstr "Eliminar o repositorio personalizado" -#, fuzzy -msgid "Focus right" -msgstr "Mover a la dereita" +msgid "Enter a repository name" +msgstr "Introduce un nome para o repositorio" -#, fuzzy -msgid "Focus left" -msgstr "Mover a la esquerda" +msgid "Name" +msgstr "Nome" -msgid "Toggle" -msgstr "" +msgid "Enter the repository url" +msgstr "Introduce o URL do repositorio" -#, fuzzy -msgid "Show/Hide help" -msgstr "Mostrar axuda" +msgid "Url" +msgstr "URL" -msgid "Quit" -msgstr "" +msgid "Select signature check" +msgstr "Selecciona a comprobación de sinatura" -msgid "First" -msgstr "" +msgid "Signature check" +msgstr "Comprobación de sinatura" -msgid "Last" -msgstr "" +msgid "Select signature option" +msgstr "Selecciona a opción de sinatura" -#, fuzzy -msgid "Select" -msgstr "Seleccione regiones" +msgid "Add a custom server" +msgstr "Engadir un servidor personalizado" -msgid "Page Up" -msgstr "" +msgid "Change custom server" +msgstr "Cambiar o servidor personalizado" -msgid "Page Down" -msgstr "" +msgid "Delete custom server" +msgstr "Eliminar o servidor personalizado" -#, fuzzy -msgid "Page up" -msgstr "Grupo de paquetes:" +msgid "Enter server url" +msgstr "Introduce o URL do servidor" -#, fuzzy -msgid "Page down" -msgstr "Bajar" +msgid "Select regions" +msgstr "Selecciona as rexións" -msgid "Page Left" -msgstr "" +msgid "Add custom servers" +msgstr "Engadir servidores personalizados" -#, fuzzy -msgid "Page Right" -msgstr "Mover a la dereita" +msgid "Add custom repository" +msgstr "Engadir repositorio personalizado" -msgid "Cursor up" -msgstr "" +msgid "Additional repositories" +msgstr "Repositorios adicionais" -#, fuzzy -msgid "Cursor down" -msgstr "Bajar" +msgid "Loading mirror regions..." +msgstr "Cargando as rexións de réplicas..." -#, fuzzy -msgid "Cursor right" -msgstr "Mover a la dereita" +msgid "Select mirror regions to be enabled" +msgstr "Selecciona as rexións de réplicas que activar" -#, fuzzy -msgid "Cursor left" -msgstr "Mover a la esquerda" +msgid "Select optional repositories to be enabled" +msgstr "Selecciona os repositorios opcionais que activar" -msgid "Top" -msgstr "" +msgid "Unicode font coverage for most languages" +msgstr "cobertura Unicode para a maioría dos idiomas" -msgid "Bottom" -msgstr "" +msgid "color emoji for browsers and apps" +msgstr "emojis a cor para navegadores e aplicacións" -msgid "Home" -msgstr "" +msgid "Chinese, Japanese, Korean characters" +msgstr "caracteres chineses, xaponeses e coreanos" -#, fuzzy -msgid "End" -msgstr "Habilitado" +msgid "Arial/Times/Courier replacement, Cyrillic support for Steam/games" +msgstr "substituto de Arial/Times/Courier, compatibilidade co cirílico para Steam/xogos" -#, fuzzy -msgid "Toggle option" -msgstr "Opciones do subvolumen" +msgid "wide Unicode coverage, good fallback font" +msgstr "ampla cobertura Unicode, bo tipo de letra de reserva" -msgid "Scroll Up" -msgstr "" +msgid "Zram enabled" +msgstr "Zram activado" -#, fuzzy -msgid "Scroll Down" -msgstr "Bajar en vista previa" +#, python-brace-format +msgid "Zram algorithm {}" +msgstr "Algoritmo de zram {}" -msgid "Scroll Left" -msgstr "" +msgid "Bluetooth enabled" +msgstr "Bluetooth activado" -msgid "Scroll Right" -msgstr "" +#, python-brace-format +msgid "Audio server \"{}\"" +msgstr "Servidor de son \"{}\"" -msgid "Scroll Home" -msgstr "" +#, python-brace-format +msgid "Power management \"{}\"" +msgstr "Xestión de enerxía \"{}\"" -msgid "Scroll End" -msgstr "" +msgid "Print service enabled" +msgstr "Servizo de impresión activado" -msgid "Focus Next" -msgstr "" +#, python-brace-format +msgid "Firewall \"{}\"" +msgstr "Devasa \"{}\"" -msgid "Focus Previous" -msgstr "" +#, python-brace-format +msgid "Extra fonts \"{}\"" +msgstr "Tipos de letra adicionais \"{}\"" -msgid "Copy selected text" -msgstr "" +msgid "Passwordless login" +msgstr "Inicio de sesión sen contrasinal" -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "labwc necesita acceso a o seu asiento (colección de dispositivos de hardware, es decir, teclado, ratón, etc.)" +msgid "Second factor login" +msgstr "Inicio de sesión con segundo factor" -msgid "Choose an option to give labwc access to your hardware" -msgstr "Escoxa unha opción para darle a labwc acceso a su hardware" +msgid "Root password set" +msgstr "Contrasinal de root definido" -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "niri necesita acceso a su asiento (colección de dispositivos de hardware, es decir, teclado, ratón, etc.)" +#, python-brace-format +msgid "Configured {} user(s)" +msgstr "{} usuario(s) configurado(s)" -msgid "Choose an option to give niri access to your hardware" -msgstr "Escoxa unha opción para darle a niri acceso a su hardware" +msgid "U2F set up" +msgstr "U2F configurado" -msgid "Mark/Unmark as ESP" -msgstr "Marcar/Desmarcar como ESP" +#, python-brace-format +msgid "Bootloader \"{}\"" +msgstr "Cargador de arranque \"{}\"" + +msgid "UKI enabled" +msgstr "UKI activado" + +msgid "Removable" +msgstr "Extraíble" + +#, python-brace-format +msgid "Plymouth \"{}\"" +msgstr "Plymouth \"{}\"" + +msgid "Use a best-effort default partition layout" +msgstr "Usar a mellor disposición de particións predeterminada posible" + +msgid "Manual Partitioning" +msgstr "Particionado manual" + +msgid "Pre-mounted configuration" +msgstr "Configuración premontada" + +msgid "Default" +msgstr "Predeterminada" + +msgid "Manual" +msgstr "Manual" + +msgid "Pre-mount" +msgstr "Premontaxe" + +#, python-brace-format +msgid "{} layout" +msgstr "Disposición {}" + +#, python-brace-format +msgid "Devices {}" +msgstr "Dispositivos {}" + +msgid "LVM set up" +msgstr "LVM configurado" + +#, python-brace-format +msgid "{} encryption" +msgstr "Cifrado {}" + +#, python-brace-format +msgid "Btrfs snapshot \"{}\"" +msgstr "Instantánea de Btrfs \"{}\"" + +msgid "Unknown" +msgstr "Descoñecido" + +msgid "Default layout" +msgstr "Disposición predeterminada" + +msgid "No Encryption" +msgstr "Sen cifrado" + +msgid "LUKS" +msgstr "LUKS" + +msgid "LVM on LUKS" +msgstr "LVM sobre LUKS" + +msgid "LUKS on LVM" +msgstr "LUKS sobre LVM" + +#, python-brace-format +msgid "Keyboard layout \"{}\"" +msgstr "Disposición do teclado \"{}\"" + +#, python-brace-format +msgid "Locale language \"{}\"" +msgstr "Idioma da configuración rexional \"{}\"" + +#, python-brace-format +msgid "Locale encoding \"{}\"" +msgstr "Codificación da configuración rexional \"{}\"" + +#, python-brace-format +msgid "Console font \"{}\"" +msgstr "Tipo de letra da consola \"{}\"" + +#, python-brace-format +msgid "Mirror regions \"{}\"" +msgstr "Rexións de réplicas \"{}\"" + +#, python-brace-format +msgid "Optional repositories \"{}\"" +msgstr "Repositorios opcionais \"{}\"" + +msgid "Custom servers set up" +msgstr "Servidores personalizados configurados" + +msgid "Custom repositories set up" +msgstr "Repositorios personalizados configurados" + +msgid "Copy ISO network configuration to installation" +msgstr "Copiar a configuración de rede da ISO á instalación" + +msgid "Use Network Manager (default backend)" +msgstr "Usar Network Manager (backend predeterminado)" + +msgid "Use Network Manager (iwd backend)" +msgstr "Usar Network Manager (backend iwd)" + +msgid "Use standalone iwd" +msgstr "Usar iwd de forma independente" + +msgid "Manual configuration" +msgstr "Configuración manual" msgid "Package group:" msgstr "Grupo de paquetes:" -msgid "Exit archinstall" -msgstr "Salir de archinstall" +msgid "Color enabled" +msgstr "Cor activada" -msgid "Reboot system" -msgstr "Reiniciar el sistema" +#, python-brace-format +msgid "{} graphics driver" +msgstr "Controlador gráfico {}" -msgid "chroot into installation for post-installation configurations" -msgstr "chroot na instalación para configuraciones posteriores a la instalación" +#, python-brace-format +msgid "{} greeter" +msgstr "Xestor de inicio de sesión {}" -msgid "Installation completed" -msgstr "Instalación completada" +msgid "very weak" +msgstr "moi débil" -msgid "What would you like to do next?" -msgstr "¿Qué lle gustaría hacer a continuación?" +msgid "weak" +msgstr "débil" + +msgid "moderate" +msgstr "moderada" + +msgid "strong" +msgstr "forte" + +msgid "Add interface" +msgstr "Engadir interface" + +msgid "Edit interface" +msgstr "Editar interface" + +msgid "Delete interface" +msgstr "Eliminar interface" + +msgid "Select an interface" +msgstr "Selecciona unha interface" + +msgid "You need to enter a valid IP in IP-config mode" +msgstr "Debes introducir unha IP válida no modo de configuración IP" #, python-brace-format msgid "Select which mode to configure for \"{}\"" -msgstr "Seleccione qué modo configurar para \"{}\"" +msgstr "Selecciona que modo configurar para \"{}\"" -msgid "Incorrect credentials file decryption password" -msgstr "Contraseña incorrecta para descifrar el archivo de credenciales" +#, python-brace-format +msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " +msgstr "Introduce a IP e a subrede para {} (exemplo: 192.168.0.5/24): " -msgid "Incorrect password" -msgstr "Contraseña incorrecta" +msgid "Enter your gateway (router) IP address (leave blank for none)" +msgstr "Introduce o enderezo IP da túa pasarela (router) (déixao en branco se non hai)" -msgid "Credentials file decryption password" -msgstr "Contraseña para descifrar el archivo de credenciales" +msgid "Enter your DNS servers with space separated (leave blank for none)" +msgstr "Introduce os teus servidores DNS separados por espazos (déixao en branco se non hai)" -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "¿Desexa encriptar el archivo user_credentials.json?" +msgid "Choose network configuration" +msgstr "Escolle a configuración de rede" -msgid "Credentials file encryption password" -msgstr "Contraseña para cifrar el archivo de credenciales" +msgid "Recommended: Network Manager for desktop, Manual for server" +msgstr "Recomendado: Network Manager para escritorio, Manual para servidor" + +msgid "Configure interfaces" +msgstr "Configurar as interfaces" + +msgid "No network connection found" +msgstr "Non se atopou ningunha conexión de rede" + +msgid "Would you like to connect to a Wifi?" +msgstr "Queres conectarte a unha wifi?" + +msgid "No wifi interface found" +msgstr "Non se atopou ningunha interface wifi" + +msgid "No wifi networks found" +msgstr "Non se atopou ningunha rede wifi" + +msgid "Select wifi network to connect to" +msgstr "Selecciona a rede wifi á que conectarte" + +msgid "Scanning wifi networks..." +msgstr "Buscando redes wifi..." + +msgid "Failed setting up wifi" +msgstr "Produciuse un erro ao configurar a wifi" + +msgid "Enter wifi password" +msgstr "Introduce o contrasinal da wifi" #, python-brace-format msgid "Repositories: {}" msgstr "Repositorios: {}" -msgid "New version available" -msgstr "Nova versión disponible" +msgid "Loading packages..." +msgstr "Cargando os paquetes..." -msgid "Passwordless login" -msgstr "Inicio de sesión sin contraseña" - -msgid "Second factor login" -msgstr "Inicio de sesión con factor secundario" - -msgid "Bluetooth" -msgstr "Bluetooth" - -msgid "Would you like to configure Bluetooth?" -msgstr "¿Desexa configurar Bluetooth?" - -msgid "Print service" -msgstr "Servicio de impresión" - -msgid "Would you like to configure the print service?" -msgstr "¿Desexa configurar el servicio de impresión?" - -msgid "Power management" -msgstr "Administración de energía" - -msgid "Authentication" -msgstr "Autenticación" - -msgid "Applications" -msgstr "Aplicacións" - -msgid "U2F login method: " -msgstr "Método de inicio de sesión U2F: " - -msgid "Passwordless sudo: " -msgstr "Sudo sen contraseña: " - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "Tipo de snapshot Btrfs: {}" - -msgid "Syncing the system..." -msgstr "Sincronizando o sistema..." - -msgid "Value cannot be empty" -msgstr "O valor no pode estár vacío" - -msgid "Snapshot type" -msgstr "Tipo de snapshot" - -#, python-brace-format -msgid "Snapshot type: {}" -msgstr "Tipo de snapshot: {}" - -msgid "U2F login setup" -msgstr "Configuración de inicio de sesión U2F" - -msgid "No U2F devices found" -msgstr "No se encontró dispositivos U2F" - -msgid "U2F Login Method" -msgstr "Método de inicio de sesión U2F" - -msgid "Enable passwordless sudo?" -msgstr "Habilitar sudo sin contraseña?" - -#, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "Configurando dispositivo U2F para usuario: {}" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "pode que deba ingresar su PIN antes de tocar su dispositivo U2F para registrarlo" - -msgid "Starting device modifications in " -msgstr "Iniciando modificaciones en dispositivo en " - -msgid "No network connection found" -msgstr "No se encontró unha conección de red" - -msgid "Would you like to connect to a Wifi?" -msgstr "¿Desexa conectarse a Wifi?" - -msgid "No wifi interface found" -msgstr "No se encontró ningunha interfaz de wifi" - -msgid "Select wifi network to connect to" -msgstr "Seleccione unha red de wifi para conectarse" - -msgid "Scanning wifi networks..." -msgstr "Buscando redes de wifi..." - -msgid "No wifi networks found" -msgstr "No se encontró redes de wifi" - -msgid "Failed setting up wifi" -msgstr "Error configurando wifi" - -msgid "Enter wifi password" -msgstr "Ingrese contraseña de wifi" - -msgid "Ok" -msgstr "Ok" - -msgid "Removable" -msgstr "Desmontable" - -msgid "Install to removable location" -msgstr "Instalar a ubicación desmontable" - -msgid "Will install to /EFI/BOOT/ (removable location)" -msgstr "Se instalarase en /EFI/BOOT/ (ubicación desmontable)" - -msgid "Will install to standard location with NVRAM entry" -msgstr "Se instalarase en ubicación estandar con entrada NVRAM" - -msgid "Would you like to install the bootloader to the default removable media search location?" -msgstr "¿Desexa instalar el xestor de arranque na ubicación predeterminada de búsqueda de medios desmontables?" - -msgid "This installs the bootloader to /EFI/BOOT/BOOTX64.EFI (or similar) which is useful for:" -msgstr "Esto instala el xestor de arranque en /EFI/BOOT/BOOTX64.EFI (o similar) lo cual es útil para:" - -msgid "USB drives or other portable external media." -msgstr "Disco USB u otros medios portátiles externos." - -msgid "Systems where you want the disk to be bootable on any computer." -msgstr "Sistemas donde quiere que el disco sea arrancable en cualquier computadora." - -msgid "Firmware that does not properly support NVRAM boot entries." -msgstr "Firmware que non soporta entradas arrancables NVRAM." - -msgid "Will install to /EFI/BOOT/ (removable location, safe default)" -msgstr "Instalarase a /EFI/BOOT/ (ubicación desmontable, segura por defecto)" - -msgid "Will install to custom location with NVRAM entry" -msgstr "Instalarase a ubicación personalizada con entrada NVRAM" - -msgid "Firmware that does not properly support NVRAM boot entries like most MSI motherboards," -msgstr "Firmware que non soporta entradas arrancables NVRAM como la mayoría das placas MSI," - -msgid "most Apple Macs, many laptops..." -msgstr "A mayoría das Macs Apple, moitas laptops..." - -msgid "Language" -msgstr "Idioma local" - -msgid "Compression algorithm" -msgstr "Algoritmo de compresión" +msgid "No packages found" +msgstr "Non se atopou ningún paquete" msgid "Only packages such as base, sudo, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Solo paquetes como base, base-devel, linux, linux-firmware, efibootmgr y paquetes opcionales de perfil se instalan." +msgstr "Só se instalan paquetes como base, sudo, linux, linux-firmware, efibootmgr e os paquetes opcionais do perfil." -msgid "Select zram compression algorithm:" -msgstr "Seleccione algorimto de compresión zram:" +msgid "Note: base-devel is no longer installed by default. Add it here if you need build tools." +msgstr "Nota: base-devel xa non se instala por defecto. Engádeo aquí se necesitas ferramentas de compilación." -msgid "Use Network Manager (default backend)" -msgstr "Usar xestor de Red (backend por defecto)" +msgid "Select any packages from the below list that should be installed additionally" +msgstr "Selecciona da seguinte lista os paquetes adicionais que queiras instalar" -msgid "Use Network Manager (iwd backend)" -msgstr "Usar xestor de Red (backend iwd)" - -msgid "Firewall" -msgstr "" - -#, fuzzy -msgid "Select audio configuration" -msgstr "Guardar configuración de usuario" - -#, fuzzy -msgid "Enter credentials file decryption password" -msgstr "Contraseña para descifrar el archivo de credenciales" - -#, fuzzy -msgid "Enter root password" -msgstr "Ingrese unha contraseña: " - -msgid "Select bootloader to install" -msgstr "" - -#, fuzzy -msgid "Configuration preview" -msgstr "Configuración" - -#, fuzzy -msgid "Enter a directory for the configuration(s) to be saved" -msgstr "Ingrese un directorio para guardar a(s) configuración(es): " - -#, fuzzy -msgid "Select encryption type" -msgstr "Tipo de cifrado" - -#, fuzzy -msgid "Select disks for the installation" -msgstr "Nome do host desexado para a instalación: " - -#, fuzzy -msgid "Enter a mountpoint" -msgstr "Seleccione un punto de montaje :" - -#, fuzzy, python-brace-format -msgid "Enter a size (default: {}): " -msgstr "Ingrese el final (predeterminado: {}): " - -#, fuzzy -msgid "Enter subvolume name" -msgstr "Nome do subvolumen" - -#, fuzzy -msgid "Enter subvolume mountpoint" -msgstr "Punto de montaje do subvolumen" - -#, fuzzy -msgid "Select a disk configuration" -msgstr "Configuración do disco" - -#, fuzzy -msgid "Enter root mount directory" -msgstr "Directorio de montaxe raíz" - -msgid "You will use whatever drive-setup is mounted at the specified directory" -msgstr "" - -msgid "WARNING: Archinstall won't check the suitability of this setup" -msgstr "" - -#, fuzzy -msgid "Select main filesystem" -msgstr "Cambiar el sistema de archivos" - -msgid "Enter a hostname" -msgstr "" - -#, fuzzy -msgid "Select timezone" -msgstr "Seleccione unha zona horaria" - -#, fuzzy -msgid "Enter the number of parallel downloads to be enabled" -msgstr "" -"Ingrese el número de descargas paralelas que se habilitarán.\n" -"\n" -"Nota:\n" +#, python-brace-format +msgid "Enter the number of parallel downloads (1-{})" +msgstr "Introduce o número de descargas paralelas (1-{})" #, python-brace-format msgid "Value must be between 1 and {}" -msgstr "" +msgstr "O valor debe estar entre 1 e {}" -#, fuzzy -msgid "Select which kernel(s) to install" -msgstr "Por favor, elixa qué xestor de inicio de sesión instalar" +msgid "Enable colored output for pacman" +msgstr "Activar a saída con cores para pacman" -#, fuzzy -msgid "Enter a respository name" -msgstr "Nome do repositorio" +msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." +msgstr "Pacman xa se está a executar; agardarase un máximo de 10 minutos a que remate." -#, fuzzy -msgid "Enter the repository url" -msgstr "Cambiar el repositorio personalizado" +msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." +msgstr "O bloqueo preexistente de pacman nunca rematou. Limpa calquera sesión de pacman existente antes de usar archinstall." -#, fuzzy -msgid "Enter server url" -msgstr "URL do servidor" +msgid "The proprietary Nvidia driver is not supported by Sway." +msgstr "Sway non admite o controlador privativo de Nvidia." -#, fuzzy -msgid "Select mirror regions to be enabled" -msgstr "Regiones de espejo seleccionadas" +msgid "It is likely that you will run into issues, are you okay with that?" +msgstr "É probable que teñas problemas. Estás de acordo?" -#, fuzzy -msgid "Select optional repositories to be enabled" -msgstr "Escoxa qué repositorios adicionais opcionales habilitar" +msgid "Selected profiles: " +msgstr "Perfís seleccionados: " -#, fuzzy -msgid "Select an interface" -msgstr "Eliminar intefaz" - -#, fuzzy -msgid "Choose network configuration" -msgstr "Sin configuración de red" - -#, fuzzy -msgid "No packages found" -msgstr "No se encontró dispositivos U2F" - -#, fuzzy msgid "Select which greeter to install" -msgstr "Por favor, elixa qué xestor de inicio de sesión instalar" +msgstr "Selecciona que xestor de inicio de sesión instalar" -#, fuzzy msgid "Select a profile type" -msgstr "Perfiles seleccionados: " - -#, fuzzy -msgid "Enter new password" -msgstr "Ingrese contraseña de wifi" - -msgid "Enter a username" -msgstr "" - -#, fuzzy -msgid "Enter a password" -msgstr "Ingrese unha contraseña: " - -#, fuzzy -msgid "The password did not match, please try again" -msgstr "A contraseña de confirmación no coincide, por favor intente nuevamente" - -msgid "Password strength: Weak" -msgstr "" - -msgid "Password strength: Moderate" -msgstr "" - -msgid "Password strength: Strong" -msgstr "" - -msgid "The selected desktop profile requires a regular user to log in via the greeter" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Environment type: {} {}" -msgstr "Tipo de entorno: {}" - -#, fuzzy -msgid "Input cannot be empty" -msgstr "O valor no pode estár vacío" - -msgid "Recommended" -msgstr "" - -#, fuzzy -msgid "Package" -msgstr "Grupo de paquetes:" - -msgid "Curated selection of KDE Plasma packages" -msgstr "" - -msgid "Dependencies" -msgstr "" - -#, fuzzy -msgid "Package group" -msgstr "Grupo de paquetes:" - -msgid "Extensive KDE Plasma installation" -msgstr "" - -#, fuzzy -msgid "Packages in group" -msgstr "Grupo de paquetes:" - -msgid "Minimal KDE Plasma installation" -msgstr "" - -#, fuzzy -msgid "Description" -msgstr "Cifrado de disco" - -#, fuzzy -msgid "Select a flavor of KDE Plasma to install" -msgstr "Por favor, elixa qué xestor de inicio de sesión instalar" - -#~ msgid "Add :" -#~ msgstr "Añadir :" - -#~ msgid "Value :" -#~ msgstr "Valor :" +msgstr "Selecciona un tipo de perfil" #, python-brace-format -#~ msgid "Edit {origkey} :" -#~ msgstr "Editar {origkey} :" +msgid "Unable to fetch profile from specified url: {}" +msgstr "Non se puido obter o perfil do URL especificado: {}" -#~ msgid "Copy to :" -#~ msgstr "Copiar a :" +#, python-brace-format +msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" +msgstr "Os perfís deben ter un nome único, pero atopáronse definicións de perfil con nomes duplicados: {}" -#~ msgid "Edite :" -#~ msgstr "Editar :" +msgid "Add a user" +msgstr "Engadir un usuario" -#~ msgid "Key :" -#~ msgstr "Clave :" +msgid "Change password" +msgstr "Cambiar o contrasinal" + +msgid "Promote/Demote user" +msgstr "Ascender/Degradar usuario" + +msgid "Delete User" +msgstr "Eliminar usuario" + +msgid "User" +msgstr "Usuario" + +msgid "Enter new password" +msgstr "Introduce o novo contrasinal" + +msgid "The username you entered is invalid" +msgstr "O nome de usuario que introduciches non é válido" + +msgid "Enter a username" +msgstr "Introduce un nome de usuario" + +msgid "Username" +msgstr "Nome de usuario" + +msgid "Enter a password" +msgstr "Introduce un contrasinal" + +#, python-brace-format +msgid "Should \"{}\" be a superuser (sudo)?\n" +msgstr "Debería \"{}\" ser superusuario (sudo)?\n" + +#, python-brace-format +msgid "About to upload \"{}\" to the publicly accessible {}" +msgstr "Vaise subir \"{}\" a {}, que é accesible publicamente" + +msgid "Do you want to continue?" +msgstr "Queres continuar?" + +#, python-brace-format +msgid "Log uploaded successfully. URL: {}" +msgstr "O rexistro subiuse correctamente. URL: {}" + +msgid "Failed to upload log." +msgstr "Produciuse un erro ao subir o rexistro." + +msgid "Archinstall requires root privileges to run. See --help for more." +msgstr "Archinstall precisa privilexios de root para executarse. Consulta --help para máis información." + +msgid "New version available" +msgstr "Hai unha nova versión dispoñible" + +msgid "Starting device modifications in " +msgstr "Comezando as modificacións nos dispositivos en " + +msgid "Ok" +msgstr "Aceptar" + +msgid "Input cannot be empty" +msgstr "A entrada non pode estar baleira" + +msgid "Yes" +msgstr "Si" + +msgid "No" +msgstr "Non" + +msgid " (default)" +msgstr " (predeterminado)" diff --git a/archinstall/locales/locales_generator.sh b/archinstall/locales/locales_generator.sh index cc8d1b02..90818eb4 100755 --- a/archinstall/locales/locales_generator.sh +++ b/archinstall/locales/locales_generator.sh @@ -14,8 +14,14 @@ usage() { } generate_pot() { + # tr - regular translation calls + # tr_noop - extraction-only marker for strings translated later from a variable + # Binding:3 - the description argument of textual Binding() definitions, + # translated at runtime by _translate_bindings(). The description + # must be passed positionally - xgettext cannot see keyword arguments. find . -type f -iname '*.py' | sort \ - | xargs xgettext --no-location --omit-header --keyword='tr' \ + | xargs xgettext --no-location --omit-header \ + --keyword='tr' --keyword='tr_noop' --keyword='Binding:3' \ -d base -o locales/base.pot } diff --git a/archinstall/locales/sr/LC_MESSAGES/base.mo b/archinstall/locales/sr/LC_MESSAGES/base.mo new file mode 100644 index 00000000..59cc1559 Binary files /dev/null and b/archinstall/locales/sr/LC_MESSAGES/base.mo differ diff --git a/archinstall/locales/sr/LC_MESSAGES/base.po b/archinstall/locales/sr/LC_MESSAGES/base.po new file mode 100644 index 00000000..489eebd2 --- /dev/null +++ b/archinstall/locales/sr/LC_MESSAGES/base.po @@ -0,0 +1,1203 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Ksan Đorđe \n" +"Language-Team: \n" +"Language: sr\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" + +msgid "Recommended" +msgstr "Preporučeno" + +msgid "Package" +msgstr "Paket" + +msgid "Curated selection of KDE Plasma packages" +msgstr "Odabrani skup KDE Plasma paketa" + +msgid "Dependencies" +msgstr "Zavisnosti" + +msgid "Package group" +msgstr "Grupa paketa" + +msgid "Extensive KDE Plasma installation" +msgstr "Opsežna KDE Plasma instalacija" + +msgid "Packages in group" +msgstr "Paketi u grupi" + +msgid "Minimal KDE Plasma installation" +msgstr "Minimalna KDE Plasma instalacija" + +msgid "Type" +msgstr "Tip" + +msgid "Description" +msgstr "Opis" + +msgid "Select a flavor of KDE Plasma to install" +msgstr "Izaberite varijantu KDE Plasma za instalaciju" + +#, python-brace-format +msgid "{} needs access to your seat" +msgstr "{} zahteva pristup vašem sedištu (seat)" + +msgid "collection of hardware devices i.e. keyboard, mouse" +msgstr "skup hardverskih uređaja tj. tastatura, miš" + +#, python-brace-format +msgid "Choose an option how to give {} access to your hardware" +msgstr "Izaberite opciju kako da date {} pristup vašem hardveru" + +#, python-brace-format +msgid "Environment type: {} {}" +msgstr "Tip okruženja: {} {}" + +#, python-brace-format +msgid "Environment type: {}" +msgstr "Tip okruženja: {}" + +msgid "Installed packages" +msgstr "Instalirani paketi" + +msgid "Bluetooth" +msgstr "Bluetooth" + +msgid "Audio" +msgstr "Audio" + +msgid "Print service" +msgstr "Servis štampanja" + +msgid "Power management" +msgstr "Upravljanje napajanjem" + +msgid "Firewall" +msgstr "Zaštitni zid" + +msgid "Additional fonts" +msgstr "Dodatni fontovi" + +msgid "Enabled" +msgstr "Upaljeno" + +msgid "Disabled" +msgstr "Ugašeno" + +msgid "Would you like to configure Bluetooth?" +msgstr "Da li bi željeli da podesite Bluetooth?" + +msgid "Would you like to configure the print service?" +msgstr "Da li bi željeli da podesite servis štampanja?" + +msgid "Select audio configuration" +msgstr "Izaberite audio konfiguraciju" + +msgid "Select font packages to install" +msgstr "Izaberite pakete fontova za instalaciju" + +msgid "ArchInstall Language" +msgstr "ArchInstall jezik" + +msgid "Version" +msgstr "Verzija" + +msgid "Installation Script" +msgstr "Instalaciona skripta" + +msgid "Locales" +msgstr "Lokali" + +msgid "Disk configuration" +msgstr "Konfiguracija diska" + +msgid "Profile" +msgstr "Profil" + +msgid "Mirrors and repositories" +msgstr "Mirori i repozitorijumi" + +msgid "Network" +msgstr "Mreža" + +msgid "Bootloader" +msgstr "Bootloader" + +msgid "Application" +msgstr "Aplikacija" + +msgid "Authentication" +msgstr "Autentifikacija" + +msgid "Swap" +msgstr "Swap" + +msgid "Hostname" +msgstr "Ime hosta" + +msgid "Kernels" +msgstr "Kerneli" + +msgid "Automatic time sync (NTP)" +msgstr "Automatska sinhronizacija vremena (NTP)" + +msgid "Timezone" +msgstr "Vremenska zona" + +msgid "Services" +msgstr "Servisi" + +msgid "Additional packages" +msgstr "Dodatni paketi" + +msgid "Pacman" +msgstr "Pacman" + +msgid "Custom commands" +msgstr "Prilagođene komande" + +msgid "Users" +msgstr "Korisnici" + +msgid "Root encrypted password" +msgstr "Šifrovana root lozinka" + +msgid "Disk encryption password" +msgstr "Lozinka za šifrovanje diska" + +msgid "Incorrect credentials file decryption password" +msgstr "Neispravna lozinka za dešifrovanje datoteke sa podacima za prijavu" + +msgid "Enter credentials file decryption password" +msgstr "Unesite lozinku za dešifrovanje datoteke sa podacima za prijavu" + +msgid "Incorrect password" +msgstr "Netačna lozinka" + +#, python-brace-format +msgid "Setting up U2F login: {}" +msgstr "Podešavanje U2F prijave: {}" + +#, python-brace-format +msgid "Setting up U2F device for user: {}" +msgstr "Podešavanje U2F uređaja za korisnika: {}" + +msgid "You may need to enter the PIN and then touch your U2F device to register it" +msgstr "Možda ćete morati da unesete PIN i zatim dodirnete vaš U2F uređaj da biste ga registrovali" + +msgid "Root password" +msgstr "Root lozinka" + +msgid "User account" +msgstr "Korisnički nalog" + +msgid "U2F login setup" +msgstr "Podešavanje U2F prijave" + +msgid "U2F login method: " +msgstr "Metod U2F prijave: " + +msgid "Passwordless sudo: " +msgstr "Sudo bez lozinke: " + +msgid "No U2F devices found" +msgstr "Nije pronađen nijedan U2F uređaj" + +msgid "Enter root password" +msgstr "Unesite root lozinku" + +msgid "Enable passwordless sudo?" +msgstr "Omogućiti sudo bez lozinke?" + +msgid "Unified kernel images" +msgstr "Objedinjene slike kernela (UKI)" + +msgid "Install to removable location" +msgstr "Instaliraj na prenosivu lokaciju" + +msgid "Plymouth" +msgstr "Plymouth" + +msgid "Will install to /EFI/BOOT/ (removable location, safe default)" +msgstr "Instaliraće se u /EFI/BOOT/ (prenosiva lokacija, bezbedna podrazumevana opcija)" + +msgid "Will install to custom location with NVRAM entry" +msgstr "Instaliraće se na prilagođenu lokaciju sa NVRAM unosom" + +msgid "Plymouth adds a cosmetic boot splash but can cause boot problems on some setups:" +msgstr "Plymouth dodaje kozmetički ekran pri pokretanju, ali može izazvati probleme pri pokretanju na nekim konfiguracijama:" + +msgid "black screen with the NVIDIA driver" +msgstr "crn ekran sa NVIDIA drajverom" + +msgid "hidden password prompt with disk encryption (LUKS)" +msgstr "skriven upit za lozinku pri šifrovanju diska (LUKS)" + +msgid "Would you like to enable it?" +msgstr "Da li želite da ga omogućite?" + +msgid "Would you like to use unified kernel images?" +msgstr "Da li želite da koristite ujedinjene slike kernela (UKI)?" + +msgid "Would you like to install the bootloader to the default removable media search location?" +msgstr "Da li želite da instalirate bootloader na podrazumevanu lokaciju za pretragu prenosivih medija?" + +msgid "This installs the bootloader to /EFI/BOOT/BOOTX64.EFI (or similar) which is useful for:" +msgstr "Ovo instalira bootloader u /EFI/BOOT/BOOTX64.EFI (ili slično) što je korisno za:" + +msgid "Firmware that does not properly support NVRAM boot entries like most MSI motherboards," +msgstr "Firmver koji ne podržava pravilno NVRAM unose za pokretanje, kao većina MSI matičnih ploča," + +msgid "most Apple Macs, many laptops..." +msgstr "većina Apple Mac računara, mnogi laptopovi..." + +msgid "USB drives or other portable external media." +msgstr "USB diskovi ili drugi prenosivi spoljni mediji." + +msgid "Systems where you want the disk to be bootable on any computer." +msgstr "Sistemi gde želite da disk bude pokretljiv na bilo kom računaru." + +msgid "Select bootloader to install" +msgstr "Izaberite bootloader za instalaciju" + +msgid "UEFI is not detected and some options are disabled" +msgstr "UEFI nije detektovan i neke opcije su ugašene" + +msgid "Select Plymouth theme" +msgstr "Izaberite Plymouth temu" + +msgid "The specified configuration will be applied" +msgstr "Navedena konfiguracija će biti primjenjena" + +msgid "Would you like to continue?" +msgstr "Da li želite da nastavite?" + +msgid "Configuration preview" +msgstr "Pregled konfiguracije" + +msgid "No configuration" +msgstr "Bez konfiguracije" + +msgid "Save user configuration (including disk layout)" +msgstr "Sačuvaj korisničku konfiguraciju (uključujući raspored diska)" + +msgid "Save user credentials" +msgstr "Sačuvaj podatke za prijavu korisnika" + +msgid "Save all" +msgstr "Sačuvaj sve" + +msgid "Enter a directory for the configuration(s) to be saved" +msgstr "Unesite direktorijum u koji će konfiguracija(e) biti sačuvana(e)" + +#, python-brace-format +msgid "Do you want to save the configuration file(s) to {}?" +msgstr "Da li želite da sačuvate konfiguracionu datoteku(e) u {}?" + +msgid "Do you want to encrypt the user_credentials.json file?" +msgstr "Da li želite da šifrujete datoteku user_credentials.json?" + +msgid "Credentials file encryption password" +msgstr "Lozinka za šifrovanje datoteke sa podacima za prijavu" + +msgid "Partitioning" +msgstr "Particionisanje" + +msgid "Disk encryption" +msgstr "Šifrovanje diska" + +#, python-brace-format +msgid "Configuration type: {}" +msgstr "Tip konfiguracije: {}" + +msgid "Mountpoint" +msgstr "Tačka montiranja" + +msgid "Configuration" +msgstr "Konfiguracija" + +msgid "Wipe" +msgstr "Obriši" + +msgid "Physical volumes" +msgstr "Fizički volumeni" + +msgid "Volumes" +msgstr "Volumeni" + +#, python-brace-format +msgid "Snapshot type: {}" +msgstr "Tip snimka: {}" + +msgid "LVM disk encryption with more than 2 partitions is currently not supported" +msgstr "LVM šifrovanje diska sa više od 2 particije trenutno nije podržano" + +msgid "Encryption type" +msgstr "Tip šifrovanja" + +msgid "Password" +msgstr "Lozinka" + +msgid "Iteration time" +msgstr "Vrijeme iteracije" + +msgid "No disks were detected. A disk is required to be able to install Arch Linux" +msgstr "Nijedan disk nije detektovan. Disk je neophodan da biste mogli da instalirate Arch Linux" + +msgid "Select disks for the installation" +msgstr "Izaberite diskove za instalaciju" + +msgid "Partitions" +msgstr "Particije" + +msgid "Select a disk configuration" +msgstr "Izaberite konfiguraciju diska" + +msgid "Enter root mount directory" +msgstr "Unesite root direktorijum montiranja" + +msgid "You will use whatever drive-setup is mounted at the specified directory" +msgstr "Koristićete podešavanje diskova koje je montirano na navedenoj putanji" + +msgid "WARNING: Archinstall won't check the suitability of this setup" +msgstr "UPOZORENJE: Archinstall neće proveravati prikladnost ovog podešavanja" + +msgid "Select main filesystem" +msgstr "Izaberite glavni fajl sistem" + +msgid "Would you like to use compression or disable CoW?" +msgstr "Da li želite da koristite kompresiju ili da ugasite CoW?" + +msgid "Use compression" +msgstr "Koristi kompresiju" + +msgid "Disable Copy-on-Write" +msgstr "Ugasi Copy-on-Write" + +msgid "Would you like to use BTRFS subvolumes with a default structure?" +msgstr "Da li želite da koristite BTRFS podvolumene sa podrazumevanom strukturom?" + +msgid "Would you like to create a separate partition for /home?" +msgstr "Da li želite da kreirate posebnu particiju za /home?" + +msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" +msgstr "Izabrani diskovi nemaju minimalni kapacitet potreban za automatski prijedlog\n" + +#, python-brace-format +msgid "Minimum capacity for /home partition: {}GiB\n" +msgstr "Minimalni kapacitet za /home particiju: {}GiB\n" + +#, python-brace-format +msgid "Minimum capacity for Arch Linux partition: {}GiB" +msgstr "Minimalni kapacitet za Arch Linux particiju: {}GiB" + +msgid "Encryption password" +msgstr "Lozinka za šifrovanje" + +msgid "LVM volumes" +msgstr "LVM volumeni" + +msgid "HSM" +msgstr "HSM" + +msgid "Partitions to be encrypted" +msgstr "Particije koje treba šifrovati" + +msgid "LVM volumes to be encrypted" +msgstr "LVM volumeni koje treba šifrovati" + +msgid "HSM device" +msgstr "HSM uređaj" + +msgid "Select encryption type" +msgstr "Izaberite tip šifrovanja" + +msgid "Enter disk encryption password (leave blank for no encryption)" +msgstr "Unesite lozinku za šifrovanje diska (ostavite prazno ako ne želite šifrovanje)" + +msgid "Select a FIDO2 device to use for HSM" +msgstr "Izaberite FIDO2 uređaj za korišćenje kao HSM" + +msgid "Enter iteration time for LUKS encryption (in milliseconds)" +msgstr "Unesite vrijeme iteracije za LUKS šifrovanje (u milisekundama)" + +msgid "Higher values increase security but slow down boot time" +msgstr "Veće vrijednosti povećavaju bezbednost ali usporavaju pokretanje sistema" + +#, python-brace-format +msgid "Default: {}ms, Recommended range: 1000-60000" +msgstr "Podrazumevano: {}ms, Preporučeni opseg: 1000-60000" + +msgid "Iteration time must be at least 100ms" +msgstr "Vrijeme iteracije mora biti najmanje 100ms" + +msgid "Iteration time must be at most 120000ms" +msgstr "Vrijeme iteracije mora biti najviše 120000ms" + +msgid "Please enter a valid number" +msgstr "Molimo unesite ispravan broj" + +msgid "Suggest partition layout" +msgstr "Predloži raspored particija" + +msgid "Remove all newly added partitions" +msgstr "Ukloni sve novododate particije" + +msgid "Assign mountpoint" +msgstr "Dodjeli tačku montiranja" + +msgid "Mark/Unmark to be formatted (wipes data)" +msgstr "Označi/odznači za formatiranje (briše podatke)" + +msgid "Mark/Unmark as bootable" +msgstr "Označi/odznači kao pokretljivo" + +msgid "Mark/Unmark as ESP" +msgstr "Označi/odznači kao ESP" + +msgid "Mark/Unmark as XBOOTLDR" +msgstr "Označi/odznači kao XBOOTLDR" + +msgid "Change filesystem" +msgstr "Promjeni fajl sistem" + +msgid "Mark/Unmark as compressed" +msgstr "Označi/odznači kao komprimovano" + +msgid "Mark/Unmark as nodatacow" +msgstr "Označi/odznači kao nodatacow" + +msgid "Set subvolumes" +msgstr "Postavi podvolumene" + +msgid "Delete partition" +msgstr "Obriši particiju" + +#, python-brace-format +msgid "Partition management: {}" +msgstr "Upravljanje particijama: {}" + +#, python-brace-format +msgid "Total length: {}" +msgstr "Ukupna dužina: {}" + +msgid "Partition - New" +msgstr "Particija - Nova" + +msgid "Partition" +msgstr "Particija" + +msgid "This partition is currently encrypted, to format it a filesystem has to be specified" +msgstr "Ova particija je trenutno šifrovana, da biste je formatirali morate navesti fajl sistem" + +msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." +msgstr "Tačke montiranja particija su relativne u odnosu na instalaciju, na primer boot bi bio /boot." + +msgid "Enter a mountpoint" +msgstr "Unesite tačku montiranja" + +msgid "Invalid size" +msgstr "Neispravna veličina" + +#, python-brace-format +msgid "Selected free space segment on device {}:" +msgstr "Izabrani segment slobodnog prostora na uređaju {}:" + +#, python-brace-format +msgid "Size: {} / {}" +msgstr "Veličina: {} / {}" + +msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." +msgstr "Sve unjete vrijednosti mogu imati sufiks jedinice: %, B, KB, KiB, MB, MiB..." + +msgid "If no unit is provided, the value is interpreted as sectors" +msgstr "Ako jedinica nije navedena, vrijednost se tumači kao sektori" + +#, python-brace-format +msgid "Enter a size (default: {}): " +msgstr "Unesite veličinu (podrazumevano: {}): " + +msgid "This will remove all newly added partitions, continue?" +msgstr "Ovo će ukloniti sve novododate particije, nastaviti?" + +msgid "Add subvolume" +msgstr "Dodaj podvolumen" + +msgid "Edit subvolume" +msgstr "Izmeni podvolumen" + +msgid "Delete subvolume" +msgstr "Obriši podvolumen" + +msgid "Value cannot be empty" +msgstr "Vrijednost ne može biti prazna" + +msgid "Enter subvolume name" +msgstr "Unesite ime podvolumena" + +msgid "Subvolume name" +msgstr "Ime podvolumena" + +msgid "Enter subvolume mountpoint" +msgstr "Unesite tačku montiranja podvolumena" + +msgid "Exit archinstall" +msgstr "Izađi iz archinstall-a" + +msgid "Reboot system" +msgstr "Ponovo pokreni sistem" + +msgid "chroot into installation for post-installation configurations" +msgstr "chroot u instalaciju radi post-instalacionih podešavanja" + +msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" +msgstr "Da li želite da koristite automatsku sinhronizaciju vremena (NTP) sa podrazumevanim serverima vremena?\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 "Hardversko vreme i drugi post-konfiguracioni koraci mogu biti potrebni da bi NTP radio.\nZa više informacija, molimo pogledajte Arch wiki" + +msgid "Enter a hostname" +msgstr "Unesite ime hosta" + +msgid "Select timezone" +msgstr "Izaberite vremensku zonu" + +msgid "What would you like to do next?" +msgstr "Šta biste željeli da uradite sljedeće?" + +msgid "Select which kernel(s) to install" +msgstr "Izaberite koje kernel(e) instalirati" + +msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." +msgstr "Za najbolju kompatibilnost sa vašim AMD hardverom, možda ćete željeti da koristite ili potpuno open-source ili AMD / ATI opcije." + +msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" +msgstr "Za najbolju kompatibilnost sa vašim Intel hardverom, možda ćete željeti da koristite ili potpuno open-source ili Intel opcije.\n" + +msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" +msgstr "Za najbolju kompatibilnost sa vašim Nvidia hardverom, možda ćete željeti da koristite Nvidia vlasnički drajver.\n" + +msgid "Would you like to use swap on zram?" +msgstr "Da li želite da koristite swap na zram-u?" + +msgid "Select zram compression algorithm:" +msgstr "Izaberite zram algoritam kompresije:" + +msgid "Archinstall language" +msgstr "Archinstall jezik" + +msgid "Applications" +msgstr "Aplikacije" + +msgid "Network configuration" +msgstr "Konfiguracija mreže" + +msgid "Save configuration" +msgstr "Sačuvaj konfiguraciju" + +msgid "Install" +msgstr "Instaliraj" + +msgid "Abort" +msgstr "Prekini" + +msgid "Either root-password or at least 1 user with sudo privileges must be specified" +msgstr "Mora biti navedena ili root lozinka ili najmanje 1 korisnik sa sudo privilegijama" + +msgid "The selected desktop profile requires a regular user to log in via the greeter" +msgstr "Izabrani desktop profil zahtjeva običnog korisnika za prijavu preko greeter-a" + +msgid "Language" +msgstr "Jezik" + +msgid "NTP" +msgstr "NTP" + +msgid "LVM configuration type" +msgstr "Tip LVM konfiguracije" + +#, python-brace-format +msgid "Btrfs snapshot type: {}" +msgstr "Tip Btrfs snimka: {}" + +msgid "Swap on zram" +msgstr "Swap na zram-u" + +msgid "Compression algorithm" +msgstr "Algoritam kompresije" + +msgid "Parallel Downloads" +msgstr "Paralelna preuzimanja" + +msgid "Color" +msgstr "Boja" + +msgid "Kernel" +msgstr "Kernel" + +msgid "No network configuration selected. Network will need to be set up manually on the installed system." +msgstr "Nijedna konfiguracija mreže nije izabrana. Mrežu će biti potrebno ručno podesiti na instaliranom sistemu." + +msgid "Missing configurations:" +msgstr "Nedostajuće konfiguracije:" + +msgid "Invalid configuration:" +msgstr "Neispravna konfiguracija:" + +msgid "Ready to install" +msgstr "Spremno za instalaciju" + +msgid "Warnings:" +msgstr "Upozorenja:" + +msgid "Profiles" +msgstr "Profili" + +msgid "Graphics driver" +msgstr "Grafički drajver" + +msgid "Greeter" +msgstr "Greeter" + +msgid "Selected mirror regions" +msgstr "Izabrani regioni mirora" + +msgid "Custom servers" +msgstr "Prilagođeni serveri" + +msgid "Optional repositories" +msgstr "Opcioni repozitorijumi" + +msgid "Custom repositories" +msgstr "Prilagođeni repozitorijumi" + +#, python-brace-format +msgid "[!] A log file has been created here: {}" +msgstr "[!] Ovde je kreirana log datoteka: {}" + +msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" +msgstr "Molimo prijavite ovaj problem (i datoteku) na https://github.com/archlinux/archinstall/issues" + +msgid "Syncing the system..." +msgstr "Sinhronizacija sistema..." + +msgid "Waiting for time sync (timedatectl show) to complete." +msgstr "Čekanje da se sinhronizacija vremena (timedatectl show) završi." + +msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" +msgstr "Sinhronizacija vremena se ne završava, dok čekate - pogledajte dokumentaciju za zaobilazna rješenja: https://archinstall.readthedocs.io/" + +msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" +msgstr "Preskakanje čekanja na automatsku sinhronizaciju vremena (ovo može izazvati probleme ako vreme nije sinhronizovano tokom instalacije)" + +msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." +msgstr "Čekanje da se sinhronizacija Arch Linux keyring-a (archlinux-keyring-wkd-sync) završi." + +msgid "Keyboard layout" +msgstr "Raspored tastature" + +msgid "Locale language" +msgstr "Jezik lokala" + +msgid "Locale encoding" +msgstr "Kodiranje lokala" + +msgid "Console font" +msgstr "Font konzole" + +msgid "Back" +msgstr "Nazad" + +msgid "Are you sure you want to reset this setting?" +msgstr "Da li ste sigurni da želite da resetujete ovo podešavanje?" + +msgid "Confirm and exit" +msgstr "Potvrdi i izađi" + +msgid "Cancel" +msgstr "Otkaži" + +msgid "Password strength: Weak" +msgstr "Jačina lozinke: Slaba" + +msgid "Password strength: Moderate" +msgstr "Jačina lozinke: Umjerena" + +msgid "Password strength: Strong" +msgstr "Jačina lozinke: Jaka" + +msgid "Confirm password" +msgstr "Potvrdite lozinku" + +msgid "The password did not match, please try again" +msgstr "Lozinke se ne poklapaju, molimo pokušajte ponovo" + +msgid "Not a valid directory" +msgstr "Nije ispravan direktorijum" + +msgid "Do you really want to abort?" +msgstr "Da li zaista želite da prekinete?" + +msgid "Add a custom repository" +msgstr "Dodaj prilagođeni repozitorijum" + +msgid "Change custom repository" +msgstr "Izmeni prilagođeni repozitorijum" + +msgid "Delete custom repository" +msgstr "Obriši prilagođeni repozitorijum" + +msgid "Enter a repository name" +msgstr "Unesite ime repozitorijuma" + +msgid "Name" +msgstr "Ime" + +msgid "Enter the repository url" +msgstr "Unesite URL repozitorijuma" + +msgid "Url" +msgstr "URL" + +msgid "Select signature check" +msgstr "Izaberite proveru potpisa" + +msgid "Signature check" +msgstr "Provera potpisa" + +msgid "Select signature option" +msgstr "Izaberite opciju potpisa" + +msgid "Add a custom server" +msgstr "Dodaj prilagođeni server" + +msgid "Change custom server" +msgstr "Izmeni prilagođeni server" + +msgid "Delete custom server" +msgstr "Obriši prilagođeni server" + +msgid "Enter server url" +msgstr "Unesite URL servera" + +msgid "Select regions" +msgstr "Izaberite regione" + +msgid "Add custom servers" +msgstr "Dodaj prilagođene servere" + +msgid "Add custom repository" +msgstr "Dodaj prilagođeni repozitorijum" + +msgid "Additional repositories" +msgstr "Dodatni repozitorijumi" + +msgid "Loading mirror regions..." +msgstr "Učitavanje regiona mirora..." + +msgid "Select mirror regions to be enabled" +msgstr "Izaberite regione mirora koje treba omogućiti" + +msgid "Select optional repositories to be enabled" +msgstr "Izaberite opcione repozitorijume koje treba omogućiti" + +msgid "Unicode font coverage for most languages" +msgstr "Unicode pokrivenost fontova za većinu jezika" + +msgid "color emoji for browsers and apps" +msgstr "emoji u boji za pregledače i aplikacije" + +msgid "Chinese, Japanese, Korean characters" +msgstr "kineski, japanski, korejski znakovi" + +msgid "Arial/Times/Courier replacement, Cyrillic support for Steam/games" +msgstr "zamena za Arial/Times/Courier, podrška za ćirilicu u Steam-u/igrama" + +msgid "wide Unicode coverage, good fallback font" +msgstr "široka Unicode pokrivenost, dobar rezervni font" + +msgid "Zram enabled" +msgstr "Zram omogućen" + +#, python-brace-format +msgid "Zram algorithm {}" +msgstr "Zram algoritam {}" + +msgid "Bluetooth enabled" +msgstr "Bluetooth omogućen" + +#, python-brace-format +msgid "Audio server \"{}\"" +msgstr "Audio server \"{}\"" + +#, python-brace-format +msgid "Power management \"{}\"" +msgstr "Upravljanje napajanjem \"{}\"" + +msgid "Print service enabled" +msgstr "Servis štampanja omogućen" + +#, python-brace-format +msgid "Firewall \"{}\"" +msgstr "Zaštitni zid \"{}\"" + +#, python-brace-format +msgid "Extra fonts \"{}\"" +msgstr "Dodatni fontovi \"{}\"" + +msgid "Passwordless login" +msgstr "Prijava bez lozinke" + +msgid "Second factor login" +msgstr "Prijava sa drugim faktorom" + +msgid "Root password set" +msgstr "Root lozinka postavljena" + +#, python-brace-format +msgid "Configured {} user(s)" +msgstr "Konfigurisano {} korisnik(a)" + +msgid "U2F set up" +msgstr "U2F podešen" + +#, python-brace-format +msgid "Bootloader \"{}\"" +msgstr "Bootloader \"{}\"" + +msgid "UKI enabled" +msgstr "UKI omogućen" + +msgid "Removable" +msgstr "Prenosivo" + +#, python-brace-format +msgid "Plymouth \"{}\"" +msgstr "Plymouth \"{}\"" + +msgid "Use a best-effort default partition layout" +msgstr "Koristi podrazumjevani raspored particija (best-effort)" + +msgid "Manual Partitioning" +msgstr "Ručno particionisanje" + +msgid "Pre-mounted configuration" +msgstr "Prethodno montirana konfiguracija" + +msgid "Default" +msgstr "Podrazumevano" + +msgid "Manual" +msgstr "Ručno" + +msgid "Pre-mount" +msgstr "Prethodno montiranje" + +#, python-brace-format +msgid "{} layout" +msgstr "{} raspored" + +#, python-brace-format +msgid "Devices {}" +msgstr "Uređaji {}" + +msgid "LVM set up" +msgstr "LVM podešen" + +#, python-brace-format +msgid "{} encryption" +msgstr "{} šifrovanje" + +#, python-brace-format +msgid "Btrfs snapshot \"{}\"" +msgstr "Btrfs snimak \"{}\"" + +msgid "Unknown" +msgstr "Nepoznato" + +msgid "Default layout" +msgstr "Podrazumjevani raspored" + +msgid "No Encryption" +msgstr "Bez šifrovanja" + +msgid "LUKS" +msgstr "LUKS" + +msgid "LVM on LUKS" +msgstr "LVM na LUKS-u" + +msgid "LUKS on LVM" +msgstr "LUKS na LVM-u" + +#, python-brace-format +msgid "Keyboard layout \"{}\"" +msgstr "Raspored tastature \"{}\"" + +#, python-brace-format +msgid "Locale language \"{}\"" +msgstr "Jezik lokala \"{}\"" + +#, python-brace-format +msgid "Locale encoding \"{}\"" +msgstr "Kodiranje lokala \"{}\"" + +#, python-brace-format +msgid "Console font \"{}\"" +msgstr "Font konzole \"{}\"" + +#, python-brace-format +msgid "Mirror regions \"{}\"" +msgstr "Regioni mirora \"{}\"" + +#, python-brace-format +msgid "Optional repositories \"{}\"" +msgstr "Opcioni repozitorijumi \"{}\"" + +msgid "Custom servers set up" +msgstr "Prilagođeni serveri podešeni" + +msgid "Custom repositories set up" +msgstr "Prilagođeni repozitorijumi podešeni" + +msgid "Copy ISO network configuration to installation" +msgstr "Kopiraj mrežnu konfiguraciju sa ISO-a u instalaciju" + +msgid "Use Network Manager (default backend)" +msgstr "Koristi Network Manager (podrazumevani backend)" + +msgid "Use Network Manager (iwd backend)" +msgstr "Koristi Network Manager (iwd backend)" + +msgid "Use standalone iwd" +msgstr "Koristi samostalni iwd" + +msgid "Manual configuration" +msgstr "Ručna konfiguracija" + +msgid "Package group:" +msgstr "Grupa paketa:" + +msgid "Color enabled" +msgstr "Boja omogućena" + +#, python-brace-format +msgid "{} graphics driver" +msgstr "{} grafički drajver" + +#, python-brace-format +msgid "{} greeter" +msgstr "{} greeter" + +msgid "very weak" +msgstr "veoma slaba" + +msgid "weak" +msgstr "slaba" + +msgid "moderate" +msgstr "umerena" + +msgid "strong" +msgstr "jaka" + +msgid "Add interface" +msgstr "Dodaj interfejs" + +msgid "Edit interface" +msgstr "Izmeni interfejs" + +msgid "Delete interface" +msgstr "Obriši interfejs" + +msgid "Select an interface" +msgstr "Izaberite interfejs" + +msgid "You need to enter a valid IP in IP-config mode" +msgstr "Morate uneti ispravnu IP adresu u režimu IP konfiguracije" + +#, python-brace-format +msgid "Select which mode to configure for \"{}\"" +msgstr "Izaberite koji režim da konfigurišete za \"{}\"" + +#, python-brace-format +msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " +msgstr "Unesite IP i podmrežu za {} (primer: 192.168.0.5/24): " + +msgid "Enter your gateway (router) IP address (leave blank for none)" +msgstr "Unesite IP adresu vašeg gateway-a (rutera) (ostavite prazno za nijedan)" + +msgid "Enter your DNS servers with space separated (leave blank for none)" +msgstr "Unesite vaše DNS servere razdvojene razmakom (ostavite prazno za nijedan)" + +msgid "Choose network configuration" +msgstr "Izaberite konfiguraciju mreže" + +msgid "Recommended: Network Manager for desktop, Manual for server" +msgstr "Preporučeno: Network Manager za desktop, Ručno za server" + +msgid "Configure interfaces" +msgstr "Konfiguriši interfejse" + +msgid "No network connection found" +msgstr "Nije pronađena mrežna veza" + +msgid "Would you like to connect to a Wifi?" +msgstr "Da li želite da se povežete na WiFi?" + +msgid "No wifi interface found" +msgstr "Nije pronađen WiFi interfejs" + +msgid "No wifi networks found" +msgstr "Nije pronađena nijedna WiFi mreža" + +msgid "Select wifi network to connect to" +msgstr "Izaberite WiFi mrežu za povezivanje" + +msgid "Scanning wifi networks..." +msgstr "Skeniranje WiFi mreža..." + +msgid "Failed setting up wifi" +msgstr "Podešavanje WiFi-ja nije uspjelo" + +msgid "Enter wifi password" +msgstr "Unesite WiFi lozinku" + +#, python-brace-format +msgid "Repositories: {}" +msgstr "Repozitorijumi: {}" + +msgid "Loading packages..." +msgstr "Učitavanje paketa..." + +msgid "No packages found" +msgstr "Nije pronađen nijedan paket" + +msgid "Only packages such as base, sudo, linux, linux-firmware, efibootmgr and optional profile packages are installed." +msgstr "Instalirani su samo paketi kao što su base, sudo, linux, linux-firmware, efibootmgr i opcioni paketi profila." + +msgid "Note: base-devel is no longer installed by default. Add it here if you need build tools." +msgstr "Napomena: base-devel se više ne instalira podrazumevano. Dodajte ga ovde ako su vam potrebni alati za kompajliranje." + +msgid "Select any packages from the below list that should be installed additionally" +msgstr "Izaberite bilo koje pakete sa donje liste koje treba dodatno instalirati" + +msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." +msgstr "Pacman je već pokrenut, čeka se najviše 10 minuta da se završi." + +msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." +msgstr "Postojeće pacman zaključavanje nikada nije završeno. Molimo očistite sve postojeće pacman sesije pre korišćenja archinstall-a." + +#, python-brace-format +msgid "Enter the number of parallel downloads (1-{})" +msgstr "Unesite broj paralelnih preuzimanja (1-{})" + +#, python-brace-format +msgid "Value must be between 1 and {}" +msgstr "Vrijednost mora biti između 1 i {}" + +msgid "Enable colored output for pacman" +msgstr "Omogući obojeni ispis za pacman" + +msgid "The proprietary Nvidia driver is not supported by Sway." +msgstr "Vlasnički Nvidia drajver nije podržan od strane Sway-a." + +msgid "It is likely that you will run into issues, are you okay with that?" +msgstr "Vjerovatno ćete naići na probleme, da li vam to odgovara?" + +msgid "Selected profiles: " +msgstr "Izabrani profili: " + +msgid "Select which greeter to install" +msgstr "Izaberite koji greeter da instalirate" + +msgid "Select a profile type" +msgstr "Izaberite tip profila" + +#, python-brace-format +msgid "Unable to fetch profile from specified url: {}" +msgstr "Nije moguće preuzeti profil sa navedenog URL-a: {}" + +#, python-brace-format +msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" +msgstr "Profili moraju imati jedinstveno ime, ali su pronađene definicije profila sa imenom duplikatom: {}" + +msgid "Add a user" +msgstr "Dodaj korisnika" + +msgid "Change password" +msgstr "Promeni lozinku" + +msgid "Promote/Demote user" +msgstr "Unapredi/degradiraj korisnika" + +msgid "Delete User" +msgstr "Obriši korisnika" + +msgid "User" +msgstr "Korisnik" + +msgid "Enter new password" +msgstr "Unesite novu lozinku" + +msgid "The username you entered is invalid" +msgstr "Korisničko ime koje ste uneli je neispravno" + +msgid "Enter a username" +msgstr "Unesite korisničko ime" + +msgid "Username" +msgstr "Korisničko ime" + +msgid "Enter a password" +msgstr "Unesite lozinku" + +#, python-brace-format +msgid "Should \"{}\" be a superuser (sudo)?\n" +msgstr "Da li \"{}\" treba da bude superkorisnik (sudo)?\n" + +#, python-brace-format +msgid "About to upload \"{}\" to the publicly accessible {}" +msgstr "Sprema se otpremanje \"{}\" na javno dostupni {}" + +msgid "Do you want to continue?" +msgstr "Da li želite da nastavite?" + +#, python-brace-format +msgid "Log uploaded successfully. URL: {}" +msgstr "Log je uspešno otpremljen. URL: {}" + +msgid "Failed to upload log." +msgstr "Otpremanje log-a nije uspelo." + +msgid "Archinstall requires root privileges to run. See --help for more." +msgstr "Archinstall zahteva root privilegije za pokretanje. Pogledajte --help za više." + +msgid "New version available" +msgstr "Dostupna je nova verzija" + +msgid "Starting device modifications in " +msgstr "Pokretanje izmena uređaja za " + +msgid "Ok" +msgstr "U redu" + +msgid "Input cannot be empty" +msgstr "Unos ne može biti prazan" + +msgid "Yes" +msgstr "Da" + +msgid "No" +msgstr "Ne" + +msgid " (default)" +msgstr " (podrazumevano)" diff --git a/archinstall/tui/binding_descriptions.py b/archinstall/tui/binding_descriptions.py new file mode 100644 index 00000000..288ce70d --- /dev/null +++ b/archinstall/tui/binding_descriptions.py @@ -0,0 +1,77 @@ +"""Textual's built-in key binding descriptions, listed for xgettext. + +These strings live inside the textual package, so xgettext cannot find them +when scanning this code base. At runtime _translate_bindings() in +components.py translates every binding description with tr(), including the +ones inherited from textual widgets - this module only makes those strings +visible to the extraction in locales_generator.sh (via the tr_noop keyword). + +The list covers the MRO-merged bindings of the textual classes used in +components.py: _translate_bindings() operates on the merged bindings map, so +descriptions inherited from ancestors (e.g. Scroll Up from ScrollView) are +translated at runtime too and must be listed here. + +Verify or regenerate the list after a textual upgrade or after introducing +a new textual widget in components.py: + + python3 test_tooling/check_binding_descriptions.py +""" + +from archinstall.lib.translationhandler import tr_noop + +# textual 8.2.8 +TEXTUAL_BINDING_DESCRIPTIONS: tuple[str, ...] = ( + tr_noop('Bottom'), + tr_noop('Copy selected text'), + tr_noop('Cursor down'), + tr_noop('Cursor left'), + tr_noop('Cursor right'), + tr_noop('Cursor up'), + tr_noop('Cut selected text'), + tr_noop('Delete all to the left'), + tr_noop('Delete all to the right'), + tr_noop('Delete character left'), + tr_noop('Delete character right'), + tr_noop('Delete left to start of word'), + tr_noop('Delete right to start of word'), + tr_noop('Down'), + tr_noop('End'), + tr_noop('First'), + tr_noop('Focus Next'), + tr_noop('Focus Previous'), + tr_noop('Go to end'), + tr_noop('Go to start'), + tr_noop('Home'), + tr_noop('Last'), + tr_noop('Move cursor left'), + tr_noop('Move cursor left a word'), + tr_noop('Move cursor left a word and select'), + tr_noop('Move cursor left and select'), + tr_noop('Move cursor right a word'), + tr_noop('Move cursor right a word and select'), + tr_noop('Move cursor right and select'), + tr_noop('Move cursor right or accept the completion suggestion'), + tr_noop('Page Down'), + tr_noop('Page Left'), + tr_noop('Page Right'), + tr_noop('Page Up'), + tr_noop('Page down'), + tr_noop('Page up'), + tr_noop('Paste text from the clipboard'), + tr_noop('Press button'), + tr_noop('Quit'), + tr_noop('Scroll Down'), + tr_noop('Scroll End'), + tr_noop('Scroll Home'), + tr_noop('Scroll Left'), + tr_noop('Scroll Right'), + tr_noop('Scroll Up'), + tr_noop('Select'), + tr_noop('Select all'), + tr_noop('Select line end'), + tr_noop('Select line start'), + tr_noop('Submit'), + tr_noop('Toggle option'), + tr_noop('Top'), + tr_noop('Up'), +) diff --git a/archinstall/tui/components.py b/archinstall/tui/components.py index a2e6b132..03349c90 100644 --- a/archinstall/tui/components.py +++ b/archinstall/tui/components.py @@ -150,6 +150,19 @@ class LoadingScreen(BaseScreen[ValueT]): _ = self.dismiss() +class _Input(Input): + @override + def on_mount(self) -> None: + _translate_bindings(self._merged_bindings, self._bindings) + + +class _Button(Button): + # no @override: Button has no on_mount in its MRO, + # textual dispatches the handler by naming convention + def on_mount(self) -> None: + _translate_bindings(self._merged_bindings, self._bindings) + + class _OptionList(OptionList): BINDINGS: ClassVar = [ Binding('down', 'cursor_down', 'Down', show=True), @@ -309,7 +322,7 @@ class OptionListScreen(BaseScreen[ValueT]): yield ScrollableContainer(preview_label) if self._filter: - yield Input(placeholder='/filter', id='filter-input') + yield _Input(placeholder='/filter', id='filter-input') yield Footer() @@ -540,7 +553,7 @@ class SelectListScreen(BaseScreen[ValueT]): yield ScrollableContainer(preview_label) if self._filter: - yield Input(placeholder='/filter', id='filter-input') + yield _Input(placeholder='/filter', id='filter-input') yield Footer() @@ -702,12 +715,12 @@ class ConfirmationScreen(BaseScreen[ValueT]): with Vertical(classes='content-container'): with Horizontal(classes='buttons-container'): for item in self._group.items: - yield Button(item.text, id=item.key) + yield _Button(item.text, id=item.key) else: with Vertical(): with Horizontal(classes='buttons-container'): for item in self._group.items: - yield Button(item.text, id=item.key) + yield _Button(item.text, id=item.key) yield Rule(orientation='horizontal') if self._preview_header is not None: @@ -848,7 +861,7 @@ class InputScreen(BaseScreen[str]): with Center(classes='container-wrapper'): with Vertical(classes='input-content'): - yield Input( + yield _Input( placeholder=self._placeholder, password=self._password, value=self._default_value, diff --git a/pyproject.toml b/pyproject.toml index 6c6ac0c2..cd86b61c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,7 +22,7 @@ dependencies = [ "pydantic==2.13.4", "cryptography==49.0.0", "textual==8.2.8", - "markdown-it-py==4.0.0", + "markdown-it-py==4.2.0", "linkify-it-py==2.1.0", ] @@ -36,8 +36,8 @@ log = ["systemd_python==236"] dev = [ "mypy==2.3.0", "flake8==7.3.0", - "pre-commit==4.6.0", - "ruff==0.15.21", + "pre-commit==4.6.1", + "ruff==0.15.22", "pylint==4.0.6", "pytest==9.1.1", "hypothesis>=6.152.4", diff --git a/test_tooling/check_binding_descriptions.py b/test_tooling/check_binding_descriptions.py new file mode 100755 index 00000000..0354f15a --- /dev/null +++ b/test_tooling/check_binding_descriptions.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python3 +"""Verify archinstall/tui/binding_descriptions.py against the installed textual. + +Run manually after a textual upgrade or after introducing a new textual +widget in archinstall/tui/components.py: + + python3 test_tooling/check_binding_descriptions.py + +The script parses the tr_noop() entries from binding_descriptions.py (no +archinstall import needed) and compares them with the MRO-merged binding +descriptions of the textual classes used in components.py. Exits non-zero +on any difference and prints the exact missing/stale entries. +""" + +import re +import sys +from pathlib import Path + +from textual.app import App +from textual.screen import Screen +from textual.widgets import Button, DataTable, HelpPanel, Input, OptionList, SelectionList + +# Must mirror the textual widget classes used in archinstall/tui/components.py. +# Extend when a new widget is introduced there. +TEXTUAL_CLASSES = (App, Screen, Button, DataTable, HelpPanel, Input, OptionList, SelectionList) + +MODULE_PATH = Path(__file__).parent.parent / 'archinstall/tui/binding_descriptions.py' + + +def live_descriptions() -> set[str]: + descriptions: set[str] = set() + # Walk the full MRO: _translate_bindings() operates on the merged bindings + # map, so descriptions inherited from ancestors are translated too. + for cls in TEXTUAL_CLASSES: + for klass in cls.__mro__: + for binding in klass.__dict__.get('BINDINGS', []): + description = getattr(binding, 'description', None) + if not description and isinstance(binding, tuple) and len(binding) > 2: + description = binding[2] + if description: + descriptions.add(str(description)) + return descriptions + + +def listed_descriptions() -> set[str]: + content = MODULE_PATH.read_text(encoding='utf-8') + return set(re.findall(r"tr_noop\('([^']+)'\)", content)) + + +def main() -> int: + live = live_descriptions() + listed = listed_descriptions() + + if live == listed: + print(f'OK: {len(listed)} descriptions in sync with installed textual') + return 0 + + for description in sorted(live - listed): + print(f'missing from binding_descriptions.py: {description}') + for description in sorted(listed - live): + print(f'stale in binding_descriptions.py: {description}') + return 1 + + +if __name__ == '__main__': + sys.exit(main())