diff --git a/config/config.go b/config/config.go index 5c2280d..339a64f 100644 --- a/config/config.go +++ b/config/config.go @@ -7,30 +7,30 @@ import ( ) type InstallConfig struct { - Disk string - EnableLUKS bool - Hostname string - Username string - RootPassword string - UserPassword string - Timezone string - Locale string + Disk string + EnableLUKS bool + Hostname string + Username string + RootPassword string + UserPassword string + Timezone string + Locale string } type ArchInstallConfig struct { - Version string `json:"version"` - Script string `json:"script"` - ArchinstallLanguage string `json:"archinstall-language"` - Bootloader string `json:"bootloader"` - Kernels []string `json:"kernels"` - Hostname string `json:"hostname"` - Timezone string `json:"timezone"` - LocaleConfig LocaleConfig `json:"locale_config"` - DiskConfig DiskConfig `json:"disk_config"` - ProfileConfig ProfileConfig `json:"profile_config"` - AuthConfig AuthConfig `json:"auth_config"` - Packages []string `json:"packages"` - Services []string `json:"services"` + Version string `json:"version"` + Script string `json:"script"` + ArchinstallLanguage string `json:"archinstall-language"` + Bootloader string `json:"bootloader"` + Kernels []string `json:"kernels"` + Hostname string `json:"hostname"` + Timezone string `json:"timezone"` + LocaleConfig LocaleConfig `json:"locale_config"` + DiskConfig DiskConfig `json:"disk_config"` + ProfileConfig ProfileConfig `json:"profile_config"` + AuthConfig AuthConfig `json:"auth_config"` + Packages []string `json:"packages"` + Services []string `json:"services"` } type LocaleConfig struct { @@ -40,14 +40,14 @@ type LocaleConfig struct { } type DiskConfig struct { - ConfigType string `json:"config_type"` + ConfigType string `json:"config_type"` DeviceModifications []DeviceModification `json:"device_modifications"` } type DeviceModification struct { - Device string `json:"device"` - Partitions []Partition `json:"partitions"` - Wipe bool `json:"wipe"` + Device string `json:"device"` + Partitions []Partition `json:"partitions"` + Wipe bool `json:"wipe"` } type Partition struct { @@ -125,33 +125,34 @@ func (c *InstallConfig) ToArchInstall() *ArchInstallConfig { "linux-hardened", "linux-firmware", "btrfs-progs", - + // Text editors "neovim", - + // Shell "zsh", - + // Terminal "alacritty", - + // System tools "tmux", "git", "networkmanager", - + // Security tools "opendoas", "firejail", "apparmor", "nftables", // Using nftables instead of ufw as requested - + "hardened-malloc", + // Browsers "chromium", // Using regular chromium instead of ungoogled-chromium as requested - + // Wayland support "xwayland-satellite", - + // Cosmic Desktop "cosmic-session", "cosmic-greeter", @@ -219,24 +220,24 @@ func (c *InstallConfig) SaveArchInstallConfig(filepath string) error { return fmt.Errorf("failed to marshal config: %w", err) } - return os.WriteFile(filepath, data, 0o644) + return os.WriteFile(filepath, data, 0644) } func (c *InstallConfig) SaveUserCredentials(filepath string) error { // For credentials, we only save the sensitive information creds := map[string]interface{}{} - + if c.EnableLUKS && c.RootPassword != "" { creds["encryption_password"] = c.RootPassword } - + creds["users"] = []map[string]string{ { "username": c.Username, "password": c.UserPassword, }, } - + if c.RootPassword != "" { creds["root_enc_password"] = c.RootPassword } @@ -246,5 +247,5 @@ func (c *InstallConfig) SaveUserCredentials(filepath string) error { return fmt.Errorf("failed to marshal credentials: %w", err) } - return os.WriteFile(filepath, data, 0o600) + return os.WriteFile(filepath, data, 0600) } diff --git a/examples/archinstall/.editorconfig b/examples/archinstall/.editorconfig deleted file mode 100644 index 5940640..0000000 --- a/examples/archinstall/.editorconfig +++ /dev/null @@ -1,13 +0,0 @@ -# http://editorconfig.org -# See coding conventions in CONTRIBUTING.md -root = true - -[*] -charset = utf-8 -end_of_line = lf -insert_final_newline = true - -[*.py] -indent_style = tab -indent_size = 4 -trim_trailing_whitespace = true diff --git a/examples/archinstall/.flake8 b/examples/archinstall/.flake8 deleted file mode 100644 index d45a2ce..0000000 --- a/examples/archinstall/.flake8 +++ /dev/null @@ -1,8 +0,0 @@ -[flake8] -count = True -ignore = W191,W503,E704,E203 -max-complexity = 40 -max-line-length = 160 -show-source = True -statistics = True -exclude = .git,__pycache__,build,docs,actions-runner diff --git a/examples/archinstall/.github/CODEOWNERS b/examples/archinstall/.github/CODEOWNERS deleted file mode 100644 index 4c93403..0000000 --- a/examples/archinstall/.github/CODEOWNERS +++ /dev/null @@ -1,7 +0,0 @@ -# As per https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners#example-of-a-codeowners-file - -* @Torxed - -# Any PKGBUILD changes should tag grazzolini -/PKGBUILDs/ @grazzolini -/PKGBUILD @grazzolini diff --git a/examples/archinstall/.github/ISSUE_TEMPLATE/01_bug.yml b/examples/archinstall/.github/ISSUE_TEMPLATE/01_bug.yml deleted file mode 100644 index ab40754..0000000 --- a/examples/archinstall/.github/ISSUE_TEMPLATE/01_bug.yml +++ /dev/null @@ -1,85 +0,0 @@ -name: bug report -description: archinstall crashed or could not install properly? -body: - - type: markdown - attributes: - value: > - Please read the ~5 known issues first: - https://archinstall.archlinux.page/help/known_issues.html - - - type: markdown - attributes: - value: > - **NOTE: Always try the latest official ISO** - - - type: input - id: iso - attributes: - label: Which ISO version are you using? - description: 'Always use the latest ISO version' - placeholder: '"2024-12-01" or "Dec 1:st"' - validations: - required: true - - - type: textarea - id: bug-report - attributes: - label: The installation log - description: 'note: located at `/var/log/archinstall/install.log`' - placeholder: | - Hardware model detected: Dell Inc. Precision 7670; UEFI mode: True - Processor model detected: 12th Gen Intel(R) Core(TM) i7-12850HX - Memory statistics: 31111048 available out of 32545396 total installed - Disk states before installing: {'blockdevices': ... } - Testing connectivity to the Arch Linux mirrors ... - ... - render: json - validations: - required: true - - - type: markdown - attributes: - value: > - **Note**: Assuming you have network connectivity, - you can easily post the installation log using the following command: - `curl -F'file=@/var/log/archinstall/install.log' https://0x0.st` - - - type: textarea - id: freeform - attributes: - label: describe the problem - description: > - Please describe your issue as best as you can. - And please consider personal preferences vs what the recommended - steps/values are in https://wiki.archlinux.org/title/Installation_guide - as we try to abide by them as best we can. - value: | - #### Description of the issue - - I was installing on X hardware ... - - Then X Y Z happened and archinstall crashed ... - - #### Virtual machine config: - - ```xml - - my-arch-machine - ... - - - ``` - - ```console - /usr/bin/qemu-system-x86_64 -name guest=my-arch-machine,debug-threads=on -object ... - ``` - validations: - required: true - - - type: markdown - attributes: - value: > - **Note**: Feel free to modify the textarea above as you wish. - But it will grately help us in testing if we can generate the specific qemu command line, - for instance via: - `sudo virsh domxml-to-native qemu-argv --domain my-arch-machine` diff --git a/examples/archinstall/.github/ISSUE_TEMPLATE/02_feature.yml b/examples/archinstall/.github/ISSUE_TEMPLATE/02_feature.yml deleted file mode 100644 index 37efd4e..0000000 --- a/examples/archinstall/.github/ISSUE_TEMPLATE/02_feature.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: feature request -description: a new feature! -body: - - type: markdown - attributes: - value: > - Please read our short mission statement before requesting more features: - https://github.com/archlinux/archinstall?tab=readme-ov-file#mission-statement - - - type: textarea - id: freeform - attributes: - label: describe the request - description: > - Feel free to write any feature you think others might benefit from: - validations: - required: true diff --git a/examples/archinstall/.github/workflows/bandit.yaml b/examples/archinstall/.github/workflows/bandit.yaml deleted file mode 100644 index 6fbd95b..0000000 --- a/examples/archinstall/.github/workflows/bandit.yaml +++ /dev/null @@ -1,12 +0,0 @@ -on: [ push, pull_request ] -name: Bandit security checkup -jobs: - bandit: - runs-on: ubuntu-latest - container: - image: archlinux/archlinux:latest - steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 - - run: pacman --noconfirm -Syu bandit - - name: Security checkup with Bandit - run: bandit -r archinstall || exit 0 diff --git a/examples/archinstall/.github/workflows/flake8.yaml b/examples/archinstall/.github/workflows/flake8.yaml deleted file mode 100644 index aaf672e..0000000 --- a/examples/archinstall/.github/workflows/flake8.yaml +++ /dev/null @@ -1,23 +0,0 @@ -on: [ push, pull_request ] -name: flake8 linting -jobs: - flake8: - runs-on: ubuntu-latest - container: - image: archlinux/archlinux:latest - steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 - - name: Prepare arch - run: | - pacman-key --init - pacman --noconfirm -Sy archlinux-keyring - pacman --noconfirm -Syyu - pacman --noconfirm -Sy python-pip python-pyparted pkgconfig gcc - - run: pip install --break-system-packages --upgrade pip - # this will install the exact version of flake8 that is in the pyproject.toml file - - name: Install archinstall dependencies - run: pip install --break-system-packages .[dev] - - run: python --version - - run: flake8 --version - - name: Lint with flake8 - run: flake8 diff --git a/examples/archinstall/.github/workflows/github-pages.yml b/examples/archinstall/.github/workflows/github-pages.yml deleted file mode 100644 index 775a519..0000000 --- a/examples/archinstall/.github/workflows/github-pages.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: documentation - -on: - push: - paths: - - "docs/**" - - pull_request: - paths: - - "docs/**" - - workflow_dispatch: - -permissions: - contents: write - -jobs: - docs: - runs-on: ubuntu-latest - container: - image: archlinux/archlinux:latest - options: --privileged - steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 - - uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6 - - 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 - - name: Sphinx build - run: | - sphinx-build docs _build - - name: Deploy to GitHub Pages - uses: peaceiris/actions-gh-pages@4f9cc6602d3f66b9c108549d475ec49e8ef4d45e # v4 - if: ${{ github.event_name != 'pull_request' }} - with: - publish_branch: gh-pages - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: _build/ - force_orphan: true - enable_jekyll: false # This is required to preserve _static (and thus the theme) - cname: archinstall.archlinux.page diff --git a/examples/archinstall/.github/workflows/iso-build.yaml b/examples/archinstall/.github/workflows/iso-build.yaml deleted file mode 100644 index dd40683..0000000 --- a/examples/archinstall/.github/workflows/iso-build.yaml +++ /dev/null @@ -1,39 +0,0 @@ -# This workflow will build an Arch Linux ISO file with the commit on it - -name: Build Arch ISO with ArchInstall Commit - -on: - push: - branches: - - master - - main # In case we adopt this convention in the future - pull_request: - paths-ignore: - - 'docs/**' - - '**.editorconfig' - - '**.gitignore' - - '**.md' - - 'LICENSE' - - 'PKGBUILD' - release: - types: - - created - -jobs: - build: - runs-on: ubuntu-latest - container: - image: archlinux/archlinux:latest - options: --privileged - steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 - - run: pwd - - run: find . - - run: cat /etc/os-release - - run: pacman-key --init - - run: pacman --noconfirm -Sy archlinux-keyring - - run: ./build_iso.sh - - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 - with: - name: Arch Live ISO - path: /tmp/archlive/out/*.iso diff --git a/examples/archinstall/.github/workflows/mypy.yaml b/examples/archinstall/.github/workflows/mypy.yaml deleted file mode 100644 index 4889303..0000000 --- a/examples/archinstall/.github/workflows/mypy.yaml +++ /dev/null @@ -1,23 +0,0 @@ -on: [ push, pull_request ] -name: mypy type checking -jobs: - mypy: - runs-on: ubuntu-latest - container: - image: archlinux/archlinux:latest - steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 - - name: Prepare arch - run: | - pacman-key --init - pacman --noconfirm -Sy archlinux-keyring - pacman --noconfirm -Syyu - pacman --noconfirm -Sy python-pip python-pyparted pkgconfig gcc - - run: pip install --break-system-packages --upgrade pip - # this will install the exact version of mypy that is in the pyproject.toml file - - name: Install archinstall dependencies - run: pip install --break-system-packages .[dev] - - run: python --version - - run: mypy --version - - name: run mypy - run: mypy --config-file pyproject.toml diff --git a/examples/archinstall/.github/workflows/pylint.yaml b/examples/archinstall/.github/workflows/pylint.yaml deleted file mode 100644 index 4c7b515..0000000 --- a/examples/archinstall/.github/workflows/pylint.yaml +++ /dev/null @@ -1,22 +0,0 @@ -on: [ push, pull_request ] -name: Pylint linting -jobs: - pylint: - runs-on: ubuntu-latest - container: - image: archlinux/archlinux:latest - steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 - - name: Prepare arch - run: | - pacman-key --init - pacman --noconfirm -Sy archlinux-keyring - pacman --noconfirm -Syyu - pacman --noconfirm -Sy python-pip python-pyparted pkgconfig gcc - - run: pip install --break-system-packages --upgrade pip - - name: Install Pylint - run: pip install --break-system-packages .[dev] - - run: python --version - - run: pylint --version - - name: Lint with Pylint - run: pylint . diff --git a/examples/archinstall/.github/workflows/pytest.yaml b/examples/archinstall/.github/workflows/pytest.yaml deleted file mode 100644 index 9b525bc..0000000 --- a/examples/archinstall/.github/workflows/pytest.yaml +++ /dev/null @@ -1,21 +0,0 @@ -on: [ push, pull_request ] -name: pytest test validation -jobs: - pytest: - runs-on: ubuntu-latest - container: - image: archlinux/archlinux:latest - options: --privileged - steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 - - name: Prepare arch - run: | - pacman-key --init - pacman --noconfirm -Sy archlinux-keyring - pacman --noconfirm -Syyu - pacman --noconfirm -Sy python-pip python-pyparted pkgconfig gcc - - run: pip install --break-system-packages --upgrade pip - - name: Install archinstall dependencies - run: pip install --break-system-packages .[dev] - - name: Test with pytest - run: pytest diff --git a/examples/archinstall/.github/workflows/python-build.yml b/examples/archinstall/.github/workflows/python-build.yml deleted file mode 100644 index 103ba94..0000000 --- a/examples/archinstall/.github/workflows/python-build.yml +++ /dev/null @@ -1,39 +0,0 @@ -# This workflow will build Python packages on every commit. - -name: Build archinstall - -on: [ push, pull_request ] - -jobs: - deploy: - runs-on: ubuntu-latest - container: - image: archlinux/archlinux:latest - options: --privileged - steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 - - name: Prepare arch - run: | - pacman-key --init - pacman --noconfirm -Sy archlinux-keyring - pacman --noconfirm -Syyu - pacman --noconfirm -Sy python-uv python-setuptools python-pip - pacman --noconfirm -Sy python-pyparted python-pydantic - - name: Remove existing archinstall (if any) - run: - uv pip uninstall archinstall --break-system-packages --system - - name: Build archinstall - run: uv build --no-build-isolation --wheel - - name: Install archinstall - run: | - uv pip install dist/*.whl --break-system-packages --system --no-build --no-deps - - name: Run archinstall - run: | - python -V - archinstall --script guided -v - archinstall --script only_hd -v - archinstall --script minimal -v - - uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5 - with: - name: archinstall - path: dist/* diff --git a/examples/archinstall/.github/workflows/python-publish.yml b/examples/archinstall/.github/workflows/python-publish.yml deleted file mode 100644 index 5c48226..0000000 --- a/examples/archinstall/.github/workflows/python-publish.yml +++ /dev/null @@ -1,33 +0,0 @@ -# This workflow will upload a Python Package when a release is created -# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries - -name: Upload archinstall to PyPi - -on: - release: - types: [ published ] - -jobs: - deploy: - - runs-on: ubuntu-latest - permissions: - # IMPORTANT: this permission is mandatory for Trusted Publishing - id-token: write - container: - image: archlinux/archlinux:latest - options: --privileged - steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 - - name: Prepare arch - run: | - pacman-key --init - pacman --noconfirm -Sy archlinux-keyring - pacman --noconfirm -Syyu - pacman --noconfirm -Sy python python-uv python-setuptools python-pip python-pyparted python-pydantic - - name: Build archinstall - run: | - uv build --no-build-isolation --wheel - - name: Publish archinstall to PyPi - run: | - uv publish --trusted-publishing always diff --git a/examples/archinstall/.github/workflows/ruff-format.yaml b/examples/archinstall/.github/workflows/ruff-format.yaml deleted file mode 100644 index c6fb0e9..0000000 --- a/examples/archinstall/.github/workflows/ruff-format.yaml +++ /dev/null @@ -1,9 +0,0 @@ -on: [ push, pull_request ] -name: ruff check formatting -jobs: - ruff_format_check: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 - - uses: astral-sh/ruff-action@57714a7c8a2e59f32539362ba31877a1957dded1 # v3.5.1 - - run: ruff format --diff diff --git a/examples/archinstall/.github/workflows/ruff-lint.yaml b/examples/archinstall/.github/workflows/ruff-lint.yaml deleted file mode 100644 index 2fefbe9..0000000 --- a/examples/archinstall/.github/workflows/ruff-lint.yaml +++ /dev/null @@ -1,8 +0,0 @@ -on: [ push, pull_request ] -name: ruff check linting -jobs: - ruff: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5 - - uses: astral-sh/ruff-action@57714a7c8a2e59f32539362ba31877a1957dded1 # v3.5.1 diff --git a/examples/archinstall/.github/workflows/translation-check.yaml b/examples/archinstall/.github/workflows/translation-check.yaml deleted file mode 100644 index 3cd4d14..0000000 --- a/examples/archinstall/.github/workflows/translation-check.yaml +++ /dev/null @@ -1,28 +0,0 @@ -#on: -# push: -# paths: -# - 'archinstall/locales/**' -# pull_request: -# paths: -# - 'archinstall/locales/**' -#name: Verify local_generate script was run on translation changes -#jobs: -# translation-check: -# runs-on: ubuntu-latest -# container: -# image: archlinux/archlinux:latest -# steps: -# - uses: actions/checkout@v4 -# - run: pacman --noconfirm -Syu python git diffutils -# - name: Verify all translation scripts are up to date -# run: | -# cd .. -# cp -r archinstall archinstall_orig -# cd archinstall/archinstall/locales -# bash locales_generator.sh 1> /dev/null -# cd ../../.. -# git diff \ -# --quiet --no-index --name-only \ -# archinstall_orig/archinstall/locales \ -# archinstall/archinstall/locales \ -# || (echo "Translation files have not been updated after translation, please run ./locales_generator.sh once more and commit" && exit 1) diff --git a/examples/archinstall/.gitignore b/examples/archinstall/.gitignore deleted file mode 100644 index 9e30144..0000000 --- a/examples/archinstall/.gitignore +++ /dev/null @@ -1,42 +0,0 @@ -**/**__pycache__ -SAFETY_LOCK -**/**old.* -**/**.img -**/**pwfile -**/**build -**/**dist -**/**.egg* -**/**.sh -!archinstall/locales/locales_generator.sh -**/**.egg-info/ -**/**build/ -**/**src/ -**/**pkg/ -**/**dist/ -**/**archinstall.build/ -**/**archinstall-v*/ -**/**.pkg.*.xz -**/**archinstall-*.tar.gz -**/**.zst -**/**.network -**/**.target -**/**.qcow2 -**/**.log -**/**.fd -/test*.py -**/archiso -/guided.py -venv -.venv -.idea/** -**/install.log -.DS_Store -**/cmd_history.txt -**/*.*~ -/*.sig -/*.json -requirements.txt -/.gitconfig -/actions-runner -/cmd_output.txt -uv.lock diff --git a/examples/archinstall/.gitlab-ci.yml b/examples/archinstall/.gitlab-ci.yml deleted file mode 100644 index ee1b784..0000000 --- a/examples/archinstall/.gitlab-ci.yml +++ /dev/null @@ -1,92 +0,0 @@ -# This file contains GitLab CI/CD configuration for the ArchInstall project. -# It defines several jobs that get run when a new commit is made, and is comparable to the GitHub workflows. -# There is an expectation that a runner exists that has the --privileged flag enabled for the build ISO job to run correctly. -# These jobs should leverage the same tag as that runner. If necessary, change the tag from 'docker' to the one it uses. -# All jobs will be run in the official archlinux container image, so we will declare that here. - -image: archlinux/archlinux:latest - -# This can be used to handle common actions. In this case, we do a pacman -Sy to make sure repos are ready to use. -before_script: - - pacman -Sy - -stages: - - lint - - test - - build - - publish - -mypy: - stage: lint - tags: - - docker - script: - - pacman --noconfirm -Syu python mypy - - mypy . --ignore-missing-imports || exit 0 - -flake8: - stage: lint - tags: - - docker - script: - - pacman --noconfirm -Syu python python-pip - - python -m pip install --upgrade pip - - pip install flake8 - - flake8 . --count --select=E9,F63,F7 --show-source --statistics - - flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - -# We currently do not have unit tests implemented but this stage is written in anticipation of their future usage. -# When a stage name is preceeded with a '.' it's treated as "disabled" by GitLab and is not executed, so it's fine for it to be declared. -.pytest: - stage: test - tags: - - docker - script: - - pacman --noconfirm -Syu python python-pip - - python -m pip install --upgrade pip - - pip install pytest - - pytest - -# This stage might fail with exit code 137 on a shared runner. This is probably due to the CPU/memory consumption needed to run the build. -build_iso: - stage: build - tags: - - docker - script: - - pwd - - find . - - cat /etc/os-release - - mkdir -p /tmp/archlive/airootfs/root/archinstall-git; cp -r . /tmp/archlive/airootfs/root/archinstall-git - - echo "pip uninstall archinstall -y; cd archinstall-git; python setup.py install" > /tmp/archlive/airootfs/root/.zprofile - - echo "echo \"This is an unofficial ISO for development and testing of archinstall. No support will be provided.\"" >> /tmp/archlive/airootfs/root/.zprofile - - echo "echo \"This ISO was built from Git SHA $CI_COMMIT_SHA\"" >> /tmp/archlive/airootfs/root/.zprofile - - echo "echo \"Type archinstall to launch the installer.\"" >> /tmp/archlive/airootfs/root/.zprofile - - cat /tmp/archlive/airootfs/root/.zprofile - - pacman --noconfirm -S git archiso - - cp -r /usr/share/archiso/configs/releng/* /tmp/archlive - - echo -e "git\npython\npython-pip\npython-setuptools" >> /tmp/archlive/packages.x86_64 - - find /tmp/archlive - - cd /tmp/archlive; mkarchiso -v -w work/ -o out/ ./ - artifacts: - name: "Arch Live ISO" - paths: - - /tmp/archlive/out/*.iso - expire_in: 1 week - -## This job only runs when a tag is created on the master branch. This is because we do not want to try to publish to PyPi every time we commit. -## The following CI/CD variables need to be set to the PyPi username and password in the GitLab project's settings for this stage to work. -# * FLIT_USERNAME -# * FLIT_PASSWORD -publish_pypi: - stage: publish - tags: - - docker - script: - - pacman --noconfirm -S python python-pip - - python -m pip install --upgrade pip - - pip install setuptools wheel flit - - flit - only: - - tags - except: - - branches diff --git a/examples/archinstall/.pre-commit-config.yaml b/examples/archinstall/.pre-commit-config.yaml deleted file mode 100644 index 6e9bf98..0000000 --- a/examples/archinstall/.pre-commit-config.yaml +++ /dev/null @@ -1,55 +0,0 @@ -default_stages: ['pre-commit'] -repos: - - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.14.4 - hooks: - # fix unused imports and sort them - - id: ruff - args: ["--extend-select", "I", "--fix"] - # format the code - - id: ruff-format - # run the linter - - id: ruff - - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v6.0.0 - hooks: - # general hooks: - - id: check-added-large-files # Prevent giant files from being committed - args: ['--maxkb=5000'] - - id: check-merge-conflict # Check for files that contain merge conflict strings - - id: check-symlinks # Checks for symlinks which do not point to anything - - id: check-yaml # Attempts to load all yaml files to verify syntax - - id: destroyed-symlinks # Detects symlinks which are changed to regular files - - id: detect-private-key # Checks for the existence of private keys - # Python specific hooks: - - id: check-ast # Simply check whether files parse as valid python - - id: check-docstring-first # Checks for a common error of placing code before the docstring - - repo: https://github.com/pycqa/flake8 - rev: 7.3.0 - hooks: - - id: flake8 - args: [--config=.flake8] - fail_fast: true - - repo: https://github.com/pre-commit/mirrors-mypy - rev: v1.18.2 - hooks: - - id: mypy - args: [ - '--config-file=pyproject.toml' - ] - fail_fast: true - additional_dependencies: - - pydantic - - pytest - - pytest-mock - - cryptography - - textual - - repo: local - hooks: - - id: pylint - name: pylint - entry: pylint - language: system - types: [python] - fail_fast: true - require_serial: true diff --git a/examples/archinstall/.pypirc b/examples/archinstall/.pypirc deleted file mode 100644 index f6c5462..0000000 --- a/examples/archinstall/.pypirc +++ /dev/null @@ -1,6 +0,0 @@ -[distutils] -index-servers = - pypi - -[pypi] -repository = https://upload.pypi.org/legacy/ diff --git a/examples/archinstall/.readthedocs.yaml b/examples/archinstall/.readthedocs.yaml deleted file mode 100644 index f91bb61..0000000 --- a/examples/archinstall/.readthedocs.yaml +++ /dev/null @@ -1,15 +0,0 @@ -# .readthedocs.yml -# Read the Docs configuration file -# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details - -version: 2 - -sphinx: - builder: html - configuration: docs/conf.py - fail_on_warning: true - -build: - os: "ubuntu-22.04" - tools: - python: "3.12" diff --git a/examples/archinstall/CONTRIBUTING.md b/examples/archinstall/CONTRIBUTING.md deleted file mode 100644 index 794d042..0000000 --- a/examples/archinstall/CONTRIBUTING.md +++ /dev/null @@ -1,71 +0,0 @@ -# Contributing to archinstall - -Any contributions through pull requests are welcome as this project aims to be a community based project to ease some Arch Linux installation steps. -Bear in mind that in the future this repo might be transferred to the official [GitLab repo under Arch Linux](http://gitlab.archlinux.org/archlinux/) *(if GitLab becomes open to the general public)*. - -Therefore, guidelines and style changes to the code might come into effect as well as guidelines surrounding bug reporting and discussions. - -## Branches - -`master` is currently the default branch, and that's where all future feature work is being done, this means that `master` is a living entity and will most likely never be in a fully stable state. -For stable releases, please see the tagged commits. - -Patch releases will be done against their own branches, branched from stable tagged releases and will be named according to the version it will become on release. - *(Patches to `v2.1.4` will be done on branch `v2.1.5` for instance)*. - -## Discussions - -Currently, questions, bugs and suggestions should be reported through [GitHub issue tracker](https://github.com/archlinux/archinstall/issues).
-For less formal discussions there is also an [archinstall Discord server](https://discord.gg/aDeMffrxNg). - -## Coding convention - -ArchInstall's goal is to follow [PEP8](https://www.python.org/dev/peps/pep-0008/) as best as it can with some minor exceptions.
- -The exceptions to PEP8 are: - -* Archinstall uses [tabs instead of spaces](https://www.python.org/dev/peps/pep-0008/#tabs-or-spaces) simply to make it - easier for non-IDE developers to navigate the code *(Tab display-width should be equal to 4 spaces)*. Exception to the - rule are comments that need fine-tuned indentation for documentation purposes. -* [Line length](https://www.python.org/dev/peps/pep-0008/#maximum-line-length) a maximum line length is enforced via flake8 with 160 characters -* Archinstall should always be saved with **Unix-formatted line endings** and no other platform-specific formats. -* [String quotes](https://www.python.org/dev/peps/pep-0008/#string-quotes) follow PEP8, the exception being when - creating formatted strings, double-quoted strings are *preferred* but not required on the outer edges *( - Example: `f"Welcome {name}"` rather than `f'Welcome {name}'`)*. - -Most of these style guidelines have been put into place after the fact *(in an attempt to clean up the code)*.
-There might therefore be older code which does not follow the coding convention and the code is subject to change. - -## Git hooks - -`archinstall` ships pre-commit hooks that make it easier to run checks such as `mypy`, `ruff check`, and `flake8` locally. -The checks are listed in `.pre-commit-config.yaml` and can be installed via -``` -pre-commit install -``` - -This will install the pre-commit hook and run it every time a `git commit` is executed. - -## Documentation - -If you'd like to contribute to the documentation, refer to [this guide](docs/README.md) on how to build the documentation locally. - -## Submitting Changes - -Archinstall uses GitHub's pull-request workflow and all contributions in terms of code should be done through pull requests.
- -Anyone interested in archinstall may review your code. One of the core developers will merge your pull request when they -think it is ready. For every pull request, we aim to promptly either merge it or say why it is not yet ready; if you go -a few days without a reply, please feel free to ping the thread by adding a new comment. - -To get your pull request merged sooner, you should explain why you are making the change. For example, you can point to -a code sample that is outdated in terms of Arch Linux command lines. It is also helpful to add links to online -documentation or to the implementation of the code you are changing. - -Also, do not squash your commits after you have submitted a pull request, as this erases context during review. We will -squash commits when the pull request is merged. - -Maintainer: -* Anton Hvornum ([@Torxed](https://github.com/Torxed)) - -[Contributors](https://github.com/archlinux/archinstall/graphs/contributors) diff --git a/examples/archinstall/LICENSE b/examples/archinstall/LICENSE deleted file mode 100644 index f288702..0000000 --- a/examples/archinstall/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/examples/archinstall/PKGBUILD b/examples/archinstall/PKGBUILD deleted file mode 100644 index af89156..0000000 --- a/examples/archinstall/PKGBUILD +++ /dev/null @@ -1,86 +0,0 @@ -# Maintainer: David Runge -# Maintainer: Giancarlo Razzolini -# Maintainer: Anton Hvornum -# Contributor: Anton Hvornum -# Contributor: demostanis worlds - -pkgname=archinstall -pkgver=3.0.13 -pkgrel=1 -pkgdesc="Just another guided/automated Arch Linux installer with a twist" -arch=(any) -url="https://github.com/archlinux/archinstall" -license=(GPL-3.0-only) -depends=( - 'arch-install-scripts' - 'btrfs-progs' - 'coreutils' - 'cryptsetup' - 'dosfstools' - 'e2fsprogs' - 'glibc' - 'kbd' - 'libcrypt.so' - 'libxcrypt' - 'pciutils' - 'procps-ng' - 'python' - 'python-cryptography' - 'python-pydantic' - 'python-pyparted' - 'python-textual' - 'systemd' - 'util-linux' - 'xfsprogs' - 'lvm2' - 'f2fs-tools' - 'ntfs-3g' -) -makedepends=( - 'python-build' - 'python-installer' - 'python-setuptools' - 'python-sphinx' - 'python-wheel' - 'python-sphinx_rtd_theme' - 'python-pylint' - 'ruff' -) -optdepends=( - 'python-systemd: Adds journald logging' -) -provides=(python-archinstall archinstall) -conflicts=(python-archinstall archinstall-git) -replaces=(python-archinstall archinstall-git) -source=( - $pkgname-$pkgver.tar.gz::$url/archive/refs/tags/$pkgver.tar.gz - $pkgname-$pkgver.tar.gz.sig::$url/releases/download/$pkgver/$pkgname-$pkgver.tar.gz.sig -) -sha512sums=() -b2sums=() -validpgpkeys=('8AA2213C8464C82D879C8127D4B58E897A929F2E') # torxed@archlinux.org - -check() { - cd $pkgname-$pkgver - ruff check -} - -pkgver() { - cd $pkgname-$pkgver - - awk '$1 ~ /^__version__/ {gsub("\"", ""); print $3}' archinstall/__init__.py -} - -build() { - cd $pkgname-$pkgver - - python -m build --wheel --no-isolation - PYTHONDONTWRITEBYTECODE=1 make man -C docs -} - -package() { - cd "$pkgname-$pkgver" - - python -m installer --destdir="$pkgdir" dist/*.whl - install -vDm 644 docs/_build/man/archinstall.1 -t "$pkgdir/usr/share/man/man1/" -} diff --git a/examples/archinstall/README.md b/examples/archinstall/README.md deleted file mode 100644 index 66034bb..0000000 --- a/examples/archinstall/README.md +++ /dev/null @@ -1,218 +0,0 @@ - -drawing - - -# Arch Installer -[![Lint Python and Find Syntax Errors](https://github.com/archlinux/archinstall/actions/workflows/flake8.yaml/badge.svg)](https://github.com/archlinux/archinstall/actions/workflows/flake8.yaml) - -Just another guided/automated [Arch Linux](https://wiki.archlinux.org/index.php/Arch_Linux) installer with a twist. -The installer also doubles as a python library to install Arch Linux and manage services, packages, and other things inside the installed system *(Usually from a live medium)*. - -* archinstall [discord](https://discord.gg/aDeMffrxNg) server -* archinstall [#archinstall:matrix.org](https://matrix.to/#/#archinstall:matrix.org) Matrix channel -* archinstall [#archinstall@irc.libera.chat:6697](https://web.libera.chat/?channel=#archinstall) -* archinstall [documentation](https://archinstall.archlinux.page/) - -# Installation & Usage -```shell -sudo pacman -S archinstall -``` - -Alternative ways to install are `git clone` the repository or `pip install --upgrade archinstall`. - -## Running the [guided](https://github.com/archlinux/archinstall/blob/master/archinstall/scripts/guided.py) installer - -Assuming you are on an Arch Linux live-ISO or installed via `pip`: -```shell -archinstall -``` - -## Running the [guided](https://github.com/archlinux/archinstall/blob/master/archinstall/scripts/guided.py) installer using `git` - -```shell - # cd archinstall-git - # python -m archinstall -``` - -#### Advanced -Some additional options that most users do not need are hidden behind the `--advanced` flag. - -## Running from a declarative configuration file or URL - -`archinstall` can be run with a JSON configuration file. There are 2 different configuration files to consider, -the `user_configuration.json` contains all general installation configuration, whereas the `user_credentials.json` -contains the sensitive user configuration such as user password, root password, and encryption password. - -An example of the user configuration file can be found here -[configuration file](https://github.com/archlinux/archinstall/blob/master/examples/config-sample.json) -and an example of the credentials configuration here -[credentials file](https://github.com/archlinux/archinstall/blob/master/examples/creds-sample.json). - -**HINT:** The configuration files can be auto-generated by starting `archinstall`, configuring all desired menu -points and then going to `Save configuration`. - -To load the configuration file into `archinstall` run the following command -```shell -archinstall --config --creds -``` - -### Credentials configuration file encryption -By default all user account credentials are hashed with `yescrypt` and only the hash is stored in the saved `user_credentials.json` file. -This is not possible for disk encryption password which needs to be stored in plaintext to be able to apply it. - -However, when selecting to save configuration files, `archinstall` will prompt for the option to encrypt the `user_credentials.json` file content. -A prompt will require to enter a encryption password to encrypt the file. When providing an encrypted `user_configuration.json` as a argument with `--creds ` -there are multiple ways to provide the decryption key: -* Provide the decryption key via the command line argument `--creds-decryption-key ` -* Store the encryption key in the environment variable `ARCHINSTALL_CREDS_DECRYPTION_KEY` which will be read automatically -* If none of the above is provided a prompt will be shown to enter the decryption key manually - - -# Help or Issues - -If you come across any issues, kindly submit your issue here on Github or post your query in the -[discord](https://discord.gg/aDeMffrxNg) help channel. - -When submitting an issue, please: -* Provide the stacktrace of the output if applicable -* Attach the `/var/log/archinstall/install.log` to the issue ticket. This helps us help you! - * To extract the log from the ISO image, one way is to use
- ```shell - curl -F'file=@/var/log/archinstall/install.log' https://0x0.st - ``` - - -# Available Languages - -Archinstall is available in different languages which have been contributed and are maintained by the community. -The language can be switched inside the installer (first menu entry). Bear in mind that not all languages provide -full translations as we rely on contributors to do the translations. Each language has an indicator that shows -how much has been translated. - -Any contributions to the translations are more than welcome, -to get started please follow [the guide](https://github.com/archlinux/archinstall/blob/master/archinstall/locales/README.md) - -## Fonts -The ISO does not ship with all fonts needed for different languages. -Fonts that use a different character set than Latin will not be displayed correctly. If those languages -want to be selected then a proper font has to be set manually in the console. - -All available console fonts can be found in `/usr/share/kbd/consolefonts` and set with `setfont LatGrkCyr-8x16`. - - -# Scripting your own installation - -## Scripting interactive installation - -For an example of a fully scripted, interactive installation please refer to the example -[interactive_installation.py](https://github.com/archlinux/archinstall/blob/master/archinstall/scripts/guided.py) - - -> **To create your own ISO with this script in it:** Follow [ArchISO](https://wiki.archlinux.org/index.php/archiso)'s guide on creating your own ISO. - -## Script non-interactive automated installation - -For an example of a fully scripted, automated installation please refer to the example -[full_automated_installation.py](https://github.com/archlinux/archinstall/blob/master/examples/full_automated_installation.py) - -# Profiles - -`archinstall` comes with a set of pre-configured profiles available for selection during the installation process. - -- [Desktop](https://github.com/archlinux/archinstall/tree/master/archinstall/default_profiles/desktops) -- [Server](https://github.com/archlinux/archinstall/tree/master/archinstall/default_profiles/servers) - -The profiles' definitions and the packages they will install can be directly viewed in the menu, or -[default profiles](https://github.com/archlinux/archinstall/tree/master/archinstall/default_profiles) - - -# Testing - -## Using a Live ISO Image - -If you want to test a commit, branch, or bleeding edge release from the repository using the standard Arch Linux Live ISO image, -replace the archinstall version with a newer one and execute the subsequent steps defined below. - -*Note: When booting from a live USB, the space on the ramdisk is limited and may not be sufficient to allow -running a re-installation or upgrade of the installer. In case one runs into this issue, any of the following can be used -- Resize the root partition https://wiki.archlinux.org/title/Archiso#Adjusting_the_size_of_the_root_file_system -- The boot parameter `copytoram=y` (https://gitlab.archlinux.org/archlinux/mkinitcpio/mkinitcpio-archiso/-/blob/master/docs/README.bootparams#L26) -can be specified which will copy the root filesystem to tmpfs.* - -1. You need a working network connection -2. Install the build requirements with `pacman -Sy; pacman -S git python-pip gcc pkgconf` - *(note that this may or may not work depending on your RAM and current state of the squashfs maximum filesystem free space)* -3. Uninstall the previous version of archinstall with `pip uninstall --break-system-packages archinstall` -4. Now clone the latest repository with `git clone https://github.com/archlinux/archinstall` -5. Enter the repository with `cd archinstall` - *At this stage, you can choose to check out a feature branch for instance with `git checkout v2.3.1-rc1`* -6. To run the source code, there are 2 different options: - - Run a specific branch version from source directly using `python -m archinstall`, in most cases this will work just fine, the - rare case it will not work is if the source has introduced any new dependencies that are not installed yet - - Installing the branch version with `pip install --break-system-packages .` and `archinstall` - -## Without a Live ISO Image - -To test this without a live ISO, the simplest approach is to use a local image and create a loop device.
-This can be done by installing `pacman -S arch-install-scripts util-linux` locally and doing the following: - - # truncate -s 20G testimage.img - # losetup --partscan --show --find ./testimage.img - # pip install --upgrade archinstall - # python -m archinstall --script guided - # qemu-system-x86_64 -enable-kvm -machine q35,accel=kvm -device intel-iommu -cpu host -m 4096 -boot order=d -drive file=./testimage.img,format=raw -drive if=pflash,format=raw,readonly,file=/usr/share/ovmf/x64/OVMF.4m.fd -drive if=pflash,format=raw,readonly,file=/usr/share/ovmf/x64/OVMF.4m.fd - -This will create a *20 GB* `testimage.img` and create a loop device which we can use to format and install to.
-`archinstall` is installed and executed in [guided mode](#docs-todo). Once the installation is complete, ~~you can use qemu/kvm to boot the test media.~~
-*(You'd actually need to do some EFI magic in order to point the EFI vars to the partition 0 in the test medium, so this won't work entirely out of the box, but that gives you a general idea of what we're going for here)* - -There's also a [Building and Testing](https://github.com/archlinux/archinstall/wiki/Building-and-Testing) guide.
-It will go through everything from packaging, building and running *(with qemu)* the installer against a dev branch. - - -# FAQ - -## Keyring out-of-date -For a description of the problem see https://archinstall.archlinux.page/help/known_issues.html#keyring-is-out-of-date-2213 and discussion in issue https://github.com/archlinux/archinstall/issues/2213. - -For a quick fix the below command will install the latest keyrings - -```pacman -Sy archlinux-keyring``` - -## How to dual boot with Windows - -To install Arch Linux alongside an existing Windows installation using `archinstall`, follow these steps: - -1. Ensure some unallocated space is available for the Linux installation after the Windows installation. -2. Boot into the ISO and run `archinstall`. -3. Choose `Disk configuration` -> `Manual partitioning`. -4. Select the disk on which Windows resides. -5. Select `Create a new partition`. -6. Choose a filesystem type. -7. Determine the start and end sectors for the new partition location (values can be suffixed with various units). -8. Assign the mountpoint `/` to the new partition. -9. Assign the `Boot/ESP` partition the mountpoint `/boot` from the partitioning menu. -10. Confirm your settings and exit to the main menu by choosing `Confirm and exit`. -11. Modify any additional settings for your installation as necessary. -12. Start the installation upon completion of setup. - - -# Mission Statement - -Archinstall promises to ship a [guided installer](https://github.com/archlinux/archinstall/blob/master/archinstall/scripts/guided.py) that follows -the [Arch Linux Principles](https://wiki.archlinux.org/index.php/Arch_Linux#Principles) as well as a library to manage services, packages, and other Arch Linux aspects. - -The guided installer ensures a user-friendly experience, offering optional selections throughout the process. Emphasizing its flexible nature, these options are never obligatory. -In addition, the decision to use the guided installer remains entirely with the user, reflecting the Linux philosophy of providing full freedom and flexibility. - ---- - -Archinstall primarily functions as a flexible library for managing services, packages, and other elements within an Arch Linux system. -This core library is the backbone for the guided installer that Archinstall provides. It is also designed to be used by those who wish to script their own custom installations. - -Therefore, Archinstall will try its best to not introduce any breaking changes except for major releases which may break backward compatibility after notifying about such changes. - - -# Contributing - -Please see [CONTRIBUTING.md](https://github.com/archlinux/archinstall/blob/master/CONTRIBUTING.md) diff --git a/examples/archinstall/archinstall/__init__.py b/examples/archinstall/archinstall/__init__.py deleted file mode 100644 index 0cd6986..0000000 --- a/examples/archinstall/archinstall/__init__.py +++ /dev/null @@ -1,166 +0,0 @@ -"""Arch Linux installer - guided, templates etc.""" - -import importlib -import os -import sys -import time -import traceback - -from archinstall.lib.args import arch_config_handler -from archinstall.lib.disk.utils import disk_layouts -from archinstall.lib.network.wifi_handler import wifi_handler -from archinstall.lib.networking import ping -from archinstall.lib.packages.packages import check_package_upgrade -from archinstall.tui.ui.components import tui as ttui - -from .lib.hardware import SysInfo -from .lib.output import FormattedOutput, debug, error, info, log, warn -from .lib.pacman import Pacman -from .lib.plugins import load_plugin, plugins -from .lib.translationhandler import Language, tr, translation_handler -from .tui.curses_menu import Tui - - -# @archinstall.plugin decorator hook to programmatically add -# plugins in runtime. Useful in profiles_bck and other things. -def plugin(f, *args, **kwargs) -> None: # type: ignore[no-untyped-def] - plugins[f.__name__] = f - - -def _log_sys_info() -> None: - # Log various information about hardware before starting the installation. This might assist in troubleshooting - debug(f'Hardware model detected: {SysInfo.sys_vendor()} {SysInfo.product_name()}; UEFI mode: {SysInfo.has_uefi()}') - debug(f'Processor model detected: {SysInfo.cpu_model()}') - debug(f'Memory statistics: {SysInfo.mem_available()} available out of {SysInfo.mem_total()} total installed') - debug(f'Virtualization detected: {SysInfo.virtualization()}; is VM: {SysInfo.is_vm()}') - debug(f'Graphics devices detected: {SysInfo._graphics_devices().keys()}') - - # For support reasons, we'll log the disk layout pre installation to match against post-installation layout - debug(f'Disk states before installing:\n{disk_layouts()}') - - -def _check_online() -> None: - try: - ping('1.1.1.1') - except OSError as ex: - if 'Network is unreachable' in str(ex): - if not arch_config_handler.args.skip_wifi_check: - success = not wifi_handler.setup() - if not success: - exit(0) - - -def _fetch_arch_db() -> None: - info('Fetching Arch Linux package database...') - try: - Pacman.run('-Sy') - except Exception as e: - error('Failed to sync Arch Linux package database.') - if 'could not resolve host' in str(e).lower(): - error('Most likely due to a missing network connection or DNS issue.') - - error('Run archinstall --debug and check /var/log/archinstall/install.log for details.') - - debug(f'Failed to sync Arch Linux package database: {e}') - exit(1) - - -def check_version_upgrade() -> str | None: - info('Checking version...') - upgrade = None - - upgrade = check_package_upgrade('archinstall') - - if upgrade is None: - debug('No archinstall upgrades found') - return None - - text = tr('New version available') + f': {upgrade}' - info(text) - return text - - -def main() -> int: - """ - This can either be run as the compiled and installed application: python setup.py install - OR straight as a module: python -m archinstall - In any case we will be attempting to load the provided script to be run from the scripts/ folder - """ - if '--help' in sys.argv or '-h' in sys.argv: - arch_config_handler.print_help() - return 0 - - if os.getuid() != 0: - print(tr('Archinstall requires root privileges to run. See --help for more.')) - return 1 - - _log_sys_info() - - ttui.global_header = 'Archinstall' - - if not arch_config_handler.args.offline: - _check_online() - _fetch_arch_db() - - if not arch_config_handler.args.skip_version_check: - new_version = check_version_upgrade() - - if new_version: - ttui.global_header = f'{ttui.global_header} {new_version}' - info(new_version) - time.sleep(3) - - script = arch_config_handler.get_script() - - mod_name = f'archinstall.scripts.{script}' - # by loading the module we'll automatically run the script - importlib.import_module(mod_name) - - return 0 - - -def run_as_a_module() -> None: - rc = 0 - exc = None - - try: - rc = main() - except Exception as e: - exc = e - finally: - # restore the terminal to the original state - Tui.shutdown() - - if exc: - err = ''.join(traceback.format_exception(exc)) - error(err) - - text = ( - 'Archinstall experienced the above error. If you think this is a bug, please report it to\n' - 'https://github.com/archlinux/archinstall and include the log file "/var/log/archinstall/install.log".\n\n' - "Hint: To extract the log from a live ISO \ncurl -F'file=@/var/log/archinstall/install.log' https://0x0.st\n" - ) - - warn(text) - rc = 1 - - exit(rc) - - -__all__ = [ - 'FormattedOutput', - 'Language', - 'Pacman', - 'SysInfo', - 'Tui', - 'arch_config_handler', - 'debug', - 'disk_layouts', - 'error', - 'info', - 'load_plugin', - 'log', - 'plugin', - 'translation_handler', - 'warn', -] diff --git a/examples/archinstall/archinstall/__main__.py b/examples/archinstall/archinstall/__main__.py deleted file mode 100644 index c8a4779..0000000 --- a/examples/archinstall/archinstall/__main__.py +++ /dev/null @@ -1,4 +0,0 @@ -import archinstall - -if __name__ == '__main__': - archinstall.run_as_a_module() diff --git a/examples/archinstall/archinstall/applications/audio.py b/examples/archinstall/archinstall/applications/audio.py deleted file mode 100644 index 82f7af7..0000000 --- a/examples/archinstall/archinstall/applications/audio.py +++ /dev/null @@ -1,80 +0,0 @@ -from typing import TYPE_CHECKING - -from archinstall.lib.hardware import SysInfo -from archinstall.lib.models.application import Audio, AudioConfiguration -from archinstall.lib.models.users import User -from archinstall.lib.output import debug - -if TYPE_CHECKING: - from archinstall.lib.installer import Installer - - -class AudioApp: - @property - def pulseaudio_packages(self) -> list[str]: - return [ - 'pulseaudio', - ] - - @property - def pipewire_packages(self) -> list[str]: - return [ - 'pipewire', - 'pipewire-alsa', - 'pipewire-jack', - 'pipewire-pulse', - 'gst-plugin-pipewire', - 'libpulse', - 'wireplumber', - ] - - def _enable_pipewire( - self, - install_session: 'Installer', - users: list['User'] | None = None, - ) -> None: - if users is None: - return - - for user in users: - # Create the full path for enabling the pipewire systemd items - service_dir = install_session.target / 'home' / user.username / '.config' / 'systemd' / 'user' / 'default.target.wants' - service_dir.mkdir(parents=True, exist_ok=True) - - # Set ownership of the entire user catalogue - install_session.arch_chroot(f'chown -R {user.username}:{user.username} /home/{user.username}') - - # symlink in the correct pipewire systemd items - install_session.arch_chroot( - f'ln -sf /usr/lib/systemd/user/pipewire-pulse.service /home/{user.username}/.config/systemd/user/default.target.wants/pipewire-pulse.service', - run_as=user.username, - ) - install_session.arch_chroot( - f'ln -sf /usr/lib/systemd/user/pipewire-pulse.socket /home/{user.username}/.config/systemd/user/default.target.wants/pipewire-pulse.socket', - run_as=user.username, - ) - - def install( - self, - install_session: 'Installer', - audio_config: AudioConfiguration, - users: list[User] | None = None, - ) -> None: - debug(f'Installing audio server: {audio_config.audio.value}') - - if audio_config.audio == Audio.NO_AUDIO: - debug('No audio server selected, skipping installation.') - return - - if SysInfo.requires_sof_fw(): - install_session.add_additional_packages('sof-firmware') - - if SysInfo.requires_alsa_fw(): - install_session.add_additional_packages('alsa-firmware') - - match audio_config.audio: - case Audio.PIPEWIRE: - install_session.add_additional_packages(self.pipewire_packages) - self._enable_pipewire(install_session, users) - case Audio.PULSEAUDIO: - install_session.add_additional_packages(self.pulseaudio_packages) diff --git a/examples/archinstall/archinstall/applications/bluetooth.py b/examples/archinstall/archinstall/applications/bluetooth.py deleted file mode 100644 index bf05611..0000000 --- a/examples/archinstall/archinstall/applications/bluetooth.py +++ /dev/null @@ -1,26 +0,0 @@ -from typing import TYPE_CHECKING - -from archinstall.lib.output import debug - -if TYPE_CHECKING: - from archinstall.lib.installer import Installer - - -class BluetoothApp: - @property - def packages(self) -> list[str]: - return [ - 'bluez', - 'bluez-utils', - ] - - @property - def services(self) -> list[str]: - return [ - 'bluetooth.service', - ] - - def install(self, install_session: 'Installer') -> None: - debug('Installing Bluetooth') - install_session.add_additional_packages(self.packages) - install_session.enable_service(self.services) diff --git a/examples/archinstall/archinstall/default_profiles/__init__.py b/examples/archinstall/archinstall/default_profiles/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/examples/archinstall/archinstall/default_profiles/custom.py b/examples/archinstall/archinstall/default_profiles/custom.py deleted file mode 100644 index 9650a4c..0000000 --- a/examples/archinstall/archinstall/default_profiles/custom.py +++ /dev/null @@ -1,217 +0,0 @@ -# from typing import List, Dict, Optional, TYPE_CHECKING, Any -# -# from ..lib import menu -# from archinstall.lib.output import log, FormattedOutput -# from archinstall.lib.profile.profiles_handler import profile_handler -# from archinstall.default_profiles.profile import Profile, ProfileType, SelectResult, ProfileInfo, TProfile -# -# if TYPE_CHECKING: -# from archinstall.lib.installer import Installer -# _: Any -# -# -# class CustomProfileList(menu.ListManager): -# def __init__(self, prompt: str, profiles: List[TProfile]): -# self._actions = [ -# str(_('Add profile')), -# str(_('Edit profile')), -# str(_('Delete profile')) -# ] -# super().__init__(prompt, profiles, [self._actions[0]], self._actions[1:]) -# -# def reformat(self, data: List[TProfile]) -> Dict[str, Optional[TProfile]]: -# table = FormattedOutput.as_table(data) -# rows = table.split('\n') -# -# # these are the header rows of the table and do not map to any profile obviously -# # we're adding 2 spaces as prefix because the menu selector '> ' will be put before -# # the selectable rows so the header has to be aligned -# display_data: Dict[str, Optional[TProfile]] = {f' {rows[0]}': None, f' {rows[1]}': None} -# -# for row, profile in zip(rows[2:], data): -# row = row.replace('|', '\\|') -# display_data[row] = profile -# -# return display_data -# -# def selected_action_display(self, profile: TProfile) -> str: -# return profile.name -# -# def handle_action( -# self, -# action: str, -# entry: Optional['CustomTypeProfile'], -# data: List['CustomTypeProfile'] -# ) -> List['CustomTypeProfile']: -# if action == self._actions[0]: # add -# new_profile = self._add_profile() -# if new_profile is not None: -# # in case a profile with the same name as an existing profile -# # was created we'll replace the existing one -# data = [d for d in data if d.name != new_profile.name] -# data += [new_profile] -# elif entry is not None: -# if action == self._actions[1]: # edit -# new_profile = self._add_profile(entry) -# if new_profile is not None: -# # we'll remove the original profile and add the modified version -# data = [d for d in data if d.name != entry.name and d.name != new_profile.name] -# data += [new_profile] -# elif action == self._actions[2]: # delete -# data = [d for d in data if d != entry] -# -# return data -# -# def _is_new_profile_name(self, name: str) -> bool: -# existing_profile = profile_handler.get_profile_by_name(name) -# if existing_profile is not None and existing_profile.profile_type != ProfileType.CustomType: -# return False -# return True -# -# def _add_profile(self, editing: Optional['CustomTypeProfile'] = None) -> Optional['CustomTypeProfile']: -# name_prompt = '\n\n' + str(_('Profile name: ')) -# -# while True: -# profile_name = menu.TextInput(name_prompt, editing.name if editing else '').run().strip() -# -# if not profile_name: -# return None -# -# if not self._is_new_profile_name(profile_name): -# error_prompt = str(_("The profile name you entered is already in use. Try again")) -# print(error_prompt) -# else: -# break -# -# packages_prompt = str(_('Packages to be install with this profile (space separated, leave blank to skip): ')) -# edit_packages = ' '.join(editing.packages) if editing else '' -# packages = menu.TextInput(packages_prompt, edit_packages).run().strip() -# -# services_prompt = str(_('Services to be enabled with this profile (space separated, leave blank to skip): ')) -# edit_services = ' '.join(editing.services) if editing else '' -# services = menu.TextInput(services_prompt, edit_services).run().strip() -# -# choice = menu.Menu( -# str(_('Should this profile be enabled for installation?')), -# menu.Menu.yes_no(), -# skip=False, -# default_option=menu.Menu.no(), -# clear_screen=False, -# show_search_hint=False -# ).run() -# -# enable_profile = True if choice.value == menu.Menu.yes() else False -# -# profile = CustomTypeProfile( -# profile_name, -# enabled=enable_profile, -# packages=packages.split(' '), -# services=services.split(' ') -# ) -# -# return profile -# -# -# # TODO -# # Still needs some ironing out -# class CustomProfile(): -# def __init__(self): -# super().__init__( -# 'Custom', -# ProfileType.Custom, -# ) -# -# def json(self) -> Dict[str, Any]: -# data: Dict[str, Any] = {'main': self.name, 'gfx_driver': self.gfx_driver, 'custom': []} -# -# for profile in self._current_selection: -# data['custom'].append({ -# 'name': profile.name, -# 'packages': profile.packages, -# 'services': profile.services, -# 'enabled': profile.custom_enabled -# }) -# -# return data -# -# def do_on_select(self) -> SelectResult: -# custom_profile_list = CustomProfileList('', profile_handler.get_custom_profiles()) -# custom_profiles = custom_profile_list.run() -# -# # we'll first remove existing custom default_profiles with -# # the same name and then add the new ones this -# # will avoid errors of default_profiles with duplicate naming -# profile_handler.remove_custom_profiles(custom_profiles) -# profile_handler.add_custom_profiles(custom_profiles) -# -# self.set_current_selection(custom_profiles) -# -# if custom_profile_list.is_last_choice_cancel(): -# return SelectResult.SameSelection -# -# enabled_profiles = [p for p in self._current_selection if p.custom_enabled] -# # in case we only created inactive default_profiles we wanna store them but -# # we want to reset the original setting -# if not enabled_profiles: -# return SelectResult.ResetCurrent -# -# return SelectResult.NewSelection -# -# def post_install(self, install_session: 'Installer'): -# for profile in self._current_selection: -# profile.post_install(install_session) -# -# def install(self, install_session: 'Installer'): -# driver_packages = self.gfx_driver_packages() -# install_session.add_additional_packages(driver_packages) -# -# for profile in self._current_selection: -# if profile.custom_enabled: -# log(f'Installing custom profile {profile.name}...') -# -# install_session.add_additional_packages(profile.packages) -# install_session.enable_service(profile.services) -# -# profile.install(install_session) -# -# def info(self) -> Optional[ProfileInfo]: -# enabled_profiles = [p for p in self._current_selection if p.custom_enabled] -# if enabled_profiles: -# details = ', '.join([p.name for p in enabled_profiles]) -# gfx_driver = self.gfx_driver -# return ProfileInfo(self.name, details, gfx_driver) -# -# return None -# -# def reset(self): -# for profile in self._current_selection: -# profile.set_enabled(False) -# -# self.gfx_driver = None -# -# -# class CustomTypeProfile(Profile): -# def __init__( -# self, -# name: str, -# enabled: bool = False, -# packages: List[str] = [], -# services: List[str] = [] -# ): -# super().__init__( -# name, -# ProfileType.CustomType, -# packages=packages, -# services=services, -# support_gfx_driver=True -# ) -# -# self.custom_enabled = enabled -# -# def json(self) -> Dict[str, Any]: -# return { -# 'name': self.name, -# 'packages': self.packages, -# 'services': self.services, -# 'enabled': self.custom_enabled -# } diff --git a/examples/archinstall/archinstall/default_profiles/desktop.py b/examples/archinstall/archinstall/default_profiles/desktop.py deleted file mode 100644 index 9bd65b4..0000000 --- a/examples/archinstall/archinstall/default_profiles/desktop.py +++ /dev/null @@ -1,108 +0,0 @@ -from typing import TYPE_CHECKING, override - -from archinstall.default_profiles.profile import GreeterType, Profile, ProfileType, SelectResult -from archinstall.lib.output import info -from archinstall.lib.profile.profiles_handler import profile_handler -from archinstall.tui.curses_menu import SelectMenu -from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.result import ResultType -from archinstall.tui.types import FrameProperties, PreviewStyle - -if TYPE_CHECKING: - from archinstall.lib.installer import Installer - - -class DesktopProfile(Profile): - def __init__(self, current_selection: list[Profile] = []) -> None: - super().__init__( - 'Desktop', - ProfileType.Desktop, - current_selection=current_selection, - support_greeter=True, - ) - - @property - @override - def packages(self) -> list[str]: - return [ - 'nano', - 'vim', - 'openssh', - 'htop', - 'wget', - 'iwd', - 'wireless_tools', - 'wpa_supplicant', - 'smartmontools', - 'xdg-utils', - ] - - @property - @override - def default_greeter_type(self) -> GreeterType | None: - combined_greeters: dict[GreeterType, int] = {} - for profile in self.current_selection: - if profile.default_greeter_type: - combined_greeters.setdefault(profile.default_greeter_type, 0) - combined_greeters[profile.default_greeter_type] += 1 - - if len(combined_greeters) >= 1: - return list(combined_greeters)[0] - - return None - - def _do_on_select_profiles(self) -> None: - for profile in self.current_selection: - profile.do_on_select() - - @override - def do_on_select(self) -> SelectResult: - items = [ - MenuItem( - p.name, - value=p, - preview_action=lambda x: x.value.preview_text(), - ) - for p in profile_handler.get_desktop_profiles() - ] - - group = MenuItemGroup(items, sort_items=True, sort_case_sensitive=False) - group.set_selected_by_value(self.current_selection) - - result = SelectMenu[Profile]( - group, - multi=True, - allow_reset=True, - allow_skip=True, - preview_style=PreviewStyle.RIGHT, - preview_size='auto', - preview_frame=FrameProperties.max('Info'), - ).run() - - match result.type_: - case ResultType.Selection: - self.current_selection = result.get_values() - self._do_on_select_profiles() - return SelectResult.NewSelection - case ResultType.Skip: - return SelectResult.SameSelection - case ResultType.Reset: - return SelectResult.ResetCurrent - - @override - def post_install(self, install_session: 'Installer') -> None: - for profile in self.current_selection: - profile.post_install(install_session) - - @override - def install(self, install_session: 'Installer') -> None: - # Install common packages for all desktop environments - install_session.add_additional_packages(self.packages) - - for profile in self.current_selection: - info(f'Installing profile {profile.name}...') - - install_session.add_additional_packages(profile.packages) - install_session.enable_service(profile.services) - - profile.install(install_session) diff --git a/examples/archinstall/archinstall/default_profiles/desktops/__init__.py b/examples/archinstall/archinstall/default_profiles/desktops/__init__.py deleted file mode 100644 index d91a0f3..0000000 --- a/examples/archinstall/archinstall/default_profiles/desktops/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -from enum import Enum - - -class SeatAccess(Enum): - seatd = 'seatd' - polkit = 'polkit' diff --git a/examples/archinstall/archinstall/default_profiles/desktops/awesome.py b/examples/archinstall/archinstall/default_profiles/desktops/awesome.py deleted file mode 100644 index 727b18a..0000000 --- a/examples/archinstall/archinstall/default_profiles/desktops/awesome.py +++ /dev/null @@ -1,64 +0,0 @@ -from typing import TYPE_CHECKING, override - -from archinstall.default_profiles.profile import ProfileType -from archinstall.default_profiles.xorg import XorgProfile - -if TYPE_CHECKING: - from archinstall.lib.installer import Installer - - -class AwesomeProfile(XorgProfile): - def __init__(self) -> None: - super().__init__('Awesome', ProfileType.WindowMgr) - - @property - @override - def packages(self) -> list[str]: - return super().packages + [ - 'awesome', - 'alacritty', - 'xorg-xinit', - 'xorg-xrandr', - 'xterm', - 'feh', - 'slock', - 'terminus-font', - 'gnu-free-fonts', - 'ttf-liberation', - 'xsel', - ] - - @override - def install(self, install_session: 'Installer') -> None: - super().install(install_session) - - # TODO: Copy a full configuration to ~/.config/awesome/rc.lua instead. - with open(f'{install_session.target}/etc/xdg/awesome/rc.lua') as fh: - awesome_lua = fh.read() - - # Replace xterm with alacritty for a smoother experience. - awesome_lua = awesome_lua.replace('"xterm"', '"alacritty"') - - with open(f'{install_session.target}/etc/xdg/awesome/rc.lua', 'w') as fh: - fh.write(awesome_lua) - - # TODO: Configure the right-click-menu to contain the above packages that were installed. (as a user config) - - # TODO: check if we selected a greeter, - # but for now, awesome is intended to run without one. - with open(f'{install_session.target}/etc/X11/xinit/xinitrc') as xinitrc: - xinitrc_data = xinitrc.read() - - for line in xinitrc_data.split('\n'): - if 'twm &' in line: - xinitrc_data = xinitrc_data.replace(line, f'# {line}') - if 'xclock' in line: - xinitrc_data = xinitrc_data.replace(line, f'# {line}') - if 'xterm' in line: - xinitrc_data = xinitrc_data.replace(line, f'# {line}') - - xinitrc_data += '\n' - xinitrc_data += 'exec awesome\n' - - with open(f'{install_session.target}/etc/X11/xinit/xinitrc', 'w') as xinitrc: - xinitrc.write(xinitrc_data) diff --git a/examples/archinstall/archinstall/default_profiles/desktops/bspwm.py b/examples/archinstall/archinstall/default_profiles/desktops/bspwm.py deleted file mode 100644 index 9921172..0000000 --- a/examples/archinstall/archinstall/default_profiles/desktops/bspwm.py +++ /dev/null @@ -1,26 +0,0 @@ -from typing import override - -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile - - -class BspwmProfile(XorgProfile): - def __init__(self) -> None: - super().__init__('Bspwm', ProfileType.WindowMgr) - - @property - @override - def packages(self) -> list[str]: - # return super().packages + [ - return [ - 'bspwm', - 'sxhkd', - 'dmenu', - 'xdo', - 'rxvt-unicode', - ] - - @property - @override - def default_greeter_type(self) -> GreeterType: - return GreeterType.Lightdm diff --git a/examples/archinstall/archinstall/default_profiles/desktops/budgie.py b/examples/archinstall/archinstall/default_profiles/desktops/budgie.py deleted file mode 100644 index 17dc4de..0000000 --- a/examples/archinstall/archinstall/default_profiles/desktops/budgie.py +++ /dev/null @@ -1,25 +0,0 @@ -from typing import override - -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile - - -class BudgieProfile(XorgProfile): - def __init__(self) -> None: - super().__init__('Budgie', ProfileType.DesktopEnv) - - @property - @override - def packages(self) -> list[str]: - return [ - 'materia-gtk-theme', - 'budgie', - 'mate-terminal', - 'nemo', - 'papirus-icon-theme', - ] - - @property - @override - def default_greeter_type(self) -> GreeterType: - return GreeterType.LightdmSlick diff --git a/examples/archinstall/archinstall/default_profiles/desktops/cinnamon.py b/examples/archinstall/archinstall/default_profiles/desktops/cinnamon.py deleted file mode 100644 index 797f73f..0000000 --- a/examples/archinstall/archinstall/default_profiles/desktops/cinnamon.py +++ /dev/null @@ -1,29 +0,0 @@ -from typing import override - -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile - - -class CinnamonProfile(XorgProfile): - def __init__(self) -> None: - super().__init__('Cinnamon', ProfileType.DesktopEnv) - - @property - @override - def packages(self) -> list[str]: - return [ - 'cinnamon', - 'system-config-printer', - 'gnome-keyring', - 'gnome-terminal', - 'engrampa', - 'gnome-screenshot', - 'gvfs-smb', - 'xed', - 'xdg-user-dirs-gtk', - ] - - @property - @override - def default_greeter_type(self) -> GreeterType: - return GreeterType.Lightdm diff --git a/examples/archinstall/archinstall/default_profiles/desktops/cosmic.py b/examples/archinstall/archinstall/default_profiles/desktops/cosmic.py deleted file mode 100644 index 23dac5f..0000000 --- a/examples/archinstall/archinstall/default_profiles/desktops/cosmic.py +++ /dev/null @@ -1,22 +0,0 @@ -from typing import override - -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile - - -class CosmicProfile(XorgProfile): - def __init__(self) -> None: - super().__init__('cosmic-epoch', ProfileType.DesktopEnv, advanced=True) - - @property - @override - def packages(self) -> list[str]: - return [ - 'cosmic', - 'xdg-user-dirs', - ] - - @property - @override - def default_greeter_type(self) -> GreeterType: - return GreeterType.CosmicSession diff --git a/examples/archinstall/archinstall/default_profiles/desktops/cutefish.py b/examples/archinstall/archinstall/default_profiles/desktops/cutefish.py deleted file mode 100644 index 0ad8a65..0000000 --- a/examples/archinstall/archinstall/default_profiles/desktops/cutefish.py +++ /dev/null @@ -1,22 +0,0 @@ -from typing import override - -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile - - -class CutefishProfile(XorgProfile): - def __init__(self) -> None: - super().__init__('Cutefish', ProfileType.DesktopEnv) - - @property - @override - def packages(self) -> list[str]: - return [ - 'cutefish', - 'noto-fonts', - ] - - @property - @override - def default_greeter_type(self) -> GreeterType: - return GreeterType.Sddm diff --git a/examples/archinstall/archinstall/default_profiles/desktops/deepin.py b/examples/archinstall/archinstall/default_profiles/desktops/deepin.py deleted file mode 100644 index 1b871ed..0000000 --- a/examples/archinstall/archinstall/default_profiles/desktops/deepin.py +++ /dev/null @@ -1,23 +0,0 @@ -from typing import override - -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile - - -class DeepinProfile(XorgProfile): - def __init__(self) -> None: - super().__init__('Deepin', ProfileType.DesktopEnv) - - @property - @override - def packages(self) -> list[str]: - return [ - 'deepin', - 'deepin-terminal', - 'deepin-editor', - ] - - @property - @override - def default_greeter_type(self) -> GreeterType: - return GreeterType.Lightdm diff --git a/examples/archinstall/archinstall/default_profiles/desktops/enlightenment.py b/examples/archinstall/archinstall/default_profiles/desktops/enlightenment.py deleted file mode 100644 index aa4653a..0000000 --- a/examples/archinstall/archinstall/default_profiles/desktops/enlightenment.py +++ /dev/null @@ -1,22 +0,0 @@ -from typing import override - -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile - - -class EnlighenmentProfile(XorgProfile): - def __init__(self) -> None: - super().__init__('Enlightenment', ProfileType.WindowMgr) - - @property - @override - def packages(self) -> list[str]: - return [ - 'enlightenment', - 'terminology', - ] - - @property - @override - def default_greeter_type(self) -> GreeterType: - return GreeterType.Lightdm diff --git a/examples/archinstall/archinstall/default_profiles/desktops/gnome.py b/examples/archinstall/archinstall/default_profiles/desktops/gnome.py deleted file mode 100644 index 5893643..0000000 --- a/examples/archinstall/archinstall/default_profiles/desktops/gnome.py +++ /dev/null @@ -1,22 +0,0 @@ -from typing import override - -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile - - -class GnomeProfile(XorgProfile): - def __init__(self) -> None: - super().__init__('GNOME', ProfileType.DesktopEnv) - - @property - @override - def packages(self) -> list[str]: - return [ - 'gnome', - 'gnome-tweaks', - ] - - @property - @override - def default_greeter_type(self) -> GreeterType: - return GreeterType.Gdm diff --git a/examples/archinstall/archinstall/default_profiles/desktops/hyprland.py b/examples/archinstall/archinstall/default_profiles/desktops/hyprland.py deleted file mode 100644 index 82aa4f6..0000000 --- a/examples/archinstall/archinstall/default_profiles/desktops/hyprland.py +++ /dev/null @@ -1,74 +0,0 @@ -from typing import override - -from archinstall.default_profiles.desktops import SeatAccess -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile -from archinstall.lib.translationhandler import tr -from archinstall.tui.curses_menu import SelectMenu -from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.result import ResultType -from archinstall.tui.types import Alignment, FrameProperties - - -class HyprlandProfile(XorgProfile): - def __init__(self) -> None: - super().__init__('Hyprland', ProfileType.DesktopEnv) - - self.custom_settings = {'seat_access': None} - - @property - @override - def packages(self) -> list[str]: - return [ - 'hyprland', - 'dunst', - 'kitty', - 'uwsm', - 'dolphin', - 'wofi', - 'xdg-desktop-portal-hyprland', - 'qt5-wayland', - 'qt6-wayland', - 'polkit-kde-agent', - 'grim', - 'slurp', - ] - - @property - @override - def default_greeter_type(self) -> GreeterType: - return GreeterType.Sddm - - @property - @override - def services(self) -> list[str]: - if pref := self.custom_settings.get('seat_access', None): - return [pref] - return [] - - def _ask_seat_access(self) -> None: - # need to activate seat service and add to seat group - header = tr('Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)') - header += '\n' + tr('Choose an option to give Hyprland access to your hardware') + '\n' - - items = [MenuItem(s.value, value=s) for s in SeatAccess] - group = MenuItemGroup(items, sort_items=True) - - default = self.custom_settings.get('seat_access', None) - group.set_default_by_value(default) - - result = SelectMenu[SeatAccess]( - group, - header=header, - allow_skip=False, - frame=FrameProperties.min(tr('Seat access')), - alignment=Alignment.CENTER, - ).run() - - if result.type_ == ResultType.Selection: - self.custom_settings['seat_access'] = result.get_value().value - - @override - def do_on_select(self) -> None: - self._ask_seat_access() - return None diff --git a/examples/archinstall/archinstall/default_profiles/desktops/i3.py b/examples/archinstall/archinstall/default_profiles/desktops/i3.py deleted file mode 100644 index b2a883a..0000000 --- a/examples/archinstall/archinstall/default_profiles/desktops/i3.py +++ /dev/null @@ -1,29 +0,0 @@ -from typing import override - -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile - - -class I3wmProfile(XorgProfile): - def __init__(self) -> None: - super().__init__('i3-wm', ProfileType.WindowMgr) - - @property - @override - def packages(self) -> list[str]: - return [ - 'i3-wm', - 'i3lock', - 'i3status', - 'i3blocks', - 'xss-lock', - 'xterm', - 'lightdm-gtk-greeter', - 'lightdm', - 'dmenu', - ] - - @property - @override - def default_greeter_type(self) -> GreeterType: - return GreeterType.Lightdm diff --git a/examples/archinstall/archinstall/default_profiles/desktops/labwc.py b/examples/archinstall/archinstall/default_profiles/desktops/labwc.py deleted file mode 100644 index 98f93b0..0000000 --- a/examples/archinstall/archinstall/default_profiles/desktops/labwc.py +++ /dev/null @@ -1,71 +0,0 @@ -from typing import override - -from archinstall.default_profiles.desktops import SeatAccess -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile -from archinstall.lib.translationhandler import tr -from archinstall.tui.curses_menu import SelectMenu -from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.result import ResultType -from archinstall.tui.types import Alignment, FrameProperties - - -class LabwcProfile(XorgProfile): - def __init__(self) -> None: - super().__init__( - 'Labwc', - ProfileType.WindowMgr, - ) - - self.custom_settings = {'seat_access': None} - - @property - @override - def packages(self) -> list[str]: - additional = [] - if seat := self.custom_settings.get('seat_access', None): - additional = [seat] - - return [ - 'alacritty', - 'labwc', - ] + additional - - @property - @override - def default_greeter_type(self) -> GreeterType: - return GreeterType.Lightdm - - @property - @override - def services(self) -> list[str]: - if pref := self.custom_settings.get('seat_access', None): - return [pref] - return [] - - def _ask_seat_access(self) -> None: - # need to activate seat service and add to seat group - header = tr('labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)') - header += '\n' + tr('Choose an option to give labwc access to your hardware') + '\n' - - items = [MenuItem(s.value, value=s) for s in SeatAccess] - group = MenuItemGroup(items, sort_items=True) - - default = self.custom_settings.get('seat_access', None) - group.set_default_by_value(default) - - result = SelectMenu[SeatAccess]( - group, - header=header, - allow_skip=False, - frame=FrameProperties.min(tr('Seat access')), - alignment=Alignment.CENTER, - ).run() - - if result.type_ == ResultType.Selection: - self.custom_settings['seat_access'] = result.get_value().value - - @override - def do_on_select(self) -> None: - self._ask_seat_access() - return None diff --git a/examples/archinstall/archinstall/default_profiles/desktops/lxqt.py b/examples/archinstall/archinstall/default_profiles/desktops/lxqt.py deleted file mode 100644 index 819134c..0000000 --- a/examples/archinstall/archinstall/default_profiles/desktops/lxqt.py +++ /dev/null @@ -1,30 +0,0 @@ -from typing import override - -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile - - -class LxqtProfile(XorgProfile): - def __init__(self) -> None: - super().__init__('Lxqt', ProfileType.DesktopEnv) - - # NOTE: SDDM is the only officially supported greeter for LXQt, so unlike other DEs, lightdm is not used here. - # LXQt works with lightdm, but since this is not supported, we will not default to this. - # https://github.com/lxqt/lxqt/issues/795 - @property - @override - def packages(self) -> list[str]: - return [ - 'lxqt', - 'breeze-icons', - 'oxygen-icons', - 'xdg-utils', - 'ttf-freefont', - 'l3afpad', - 'slock', - ] - - @property - @override - def default_greeter_type(self) -> GreeterType: - return GreeterType.Sddm diff --git a/examples/archinstall/archinstall/default_profiles/desktops/mate.py b/examples/archinstall/archinstall/default_profiles/desktops/mate.py deleted file mode 100644 index 8d3dc2e..0000000 --- a/examples/archinstall/archinstall/default_profiles/desktops/mate.py +++ /dev/null @@ -1,22 +0,0 @@ -from typing import override - -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile - - -class MateProfile(XorgProfile): - def __init__(self) -> None: - super().__init__('Mate', ProfileType.DesktopEnv) - - @property - @override - def packages(self) -> list[str]: - return [ - 'mate', - 'mate-extra', - ] - - @property - @override - def default_greeter_type(self) -> GreeterType: - return GreeterType.Lightdm diff --git a/examples/archinstall/archinstall/default_profiles/desktops/niri.py b/examples/archinstall/archinstall/default_profiles/desktops/niri.py deleted file mode 100644 index ff4edf9..0000000 --- a/examples/archinstall/archinstall/default_profiles/desktops/niri.py +++ /dev/null @@ -1,79 +0,0 @@ -from typing import override - -from archinstall.default_profiles.desktops import SeatAccess -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile -from archinstall.lib.translationhandler import tr -from archinstall.tui.curses_menu import SelectMenu -from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.result import ResultType -from archinstall.tui.types import Alignment, FrameProperties - - -class NiriProfile(XorgProfile): - def __init__(self) -> None: - super().__init__( - 'Niri', - ProfileType.WindowMgr, - ) - - self.custom_settings = {'seat_access': None} - - @property - @override - def packages(self) -> list[str]: - additional = [] - if seat := self.custom_settings.get('seat_access', None): - additional = [seat] - - return [ - 'niri', - 'alacritty', - 'fuzzel', - 'mako', - 'xorg-xwayland', - 'waybar', - 'swaybg', - 'swayidle', - 'swaylock', - 'xdg-desktop-portal-gnome', - ] + additional - - @property - @override - def default_greeter_type(self) -> GreeterType: - return GreeterType.Lightdm - - @property - @override - def services(self) -> list[str]: - if pref := self.custom_settings.get('seat_access', None): - return [pref] - return [] - - def _ask_seat_access(self) -> None: - # need to activate seat service and add to seat group - header = tr('niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)') - header += '\n' + tr('Choose an option to give niri access to your hardware') + '\n' - - items = [MenuItem(s.value, value=s) for s in SeatAccess] - group = MenuItemGroup(items, sort_items=True) - - default = self.custom_settings.get('seat_access', None) - group.set_default_by_value(default) - - result = SelectMenu[SeatAccess]( - group, - header=header, - allow_skip=False, - frame=FrameProperties.min(tr('Seat access')), - alignment=Alignment.CENTER, - ).run() - - if result.type_ == ResultType.Selection: - self.custom_settings['seat_access'] = result.get_value().value - - @override - def do_on_select(self) -> None: - self._ask_seat_access() - return None diff --git a/examples/archinstall/archinstall/default_profiles/desktops/plasma.py b/examples/archinstall/archinstall/default_profiles/desktops/plasma.py deleted file mode 100644 index 8f5836e..0000000 --- a/examples/archinstall/archinstall/default_profiles/desktops/plasma.py +++ /dev/null @@ -1,26 +0,0 @@ -from typing import override - -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile - - -class PlasmaProfile(XorgProfile): - def __init__(self) -> None: - super().__init__('KDE Plasma', ProfileType.DesktopEnv) - - @property - @override - def packages(self) -> list[str]: - return [ - 'plasma-meta', - 'konsole', - 'kate', - 'dolphin', - 'ark', - 'plasma-workspace', - ] - - @property - @override - def default_greeter_type(self) -> GreeterType: - return GreeterType.Sddm diff --git a/examples/archinstall/archinstall/default_profiles/desktops/qtile.py b/examples/archinstall/archinstall/default_profiles/desktops/qtile.py deleted file mode 100644 index eeb1713..0000000 --- a/examples/archinstall/archinstall/default_profiles/desktops/qtile.py +++ /dev/null @@ -1,22 +0,0 @@ -from typing import override - -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile - - -class QtileProfile(XorgProfile): - def __init__(self) -> None: - super().__init__('Qtile', ProfileType.WindowMgr) - - @property - @override - def packages(self) -> list[str]: - return [ - 'qtile', - 'alacritty', - ] - - @property - @override - def default_greeter_type(self) -> GreeterType: - return GreeterType.Lightdm diff --git a/examples/archinstall/archinstall/default_profiles/desktops/river.py b/examples/archinstall/archinstall/default_profiles/desktops/river.py deleted file mode 100644 index 8e1396b..0000000 --- a/examples/archinstall/archinstall/default_profiles/desktops/river.py +++ /dev/null @@ -1,23 +0,0 @@ -from typing import override - -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile - - -class RiverProfile(XorgProfile): - def __init__(self) -> None: - super().__init__('River', ProfileType.WindowMgr) - - @property - @override - def packages(self) -> list[str]: - return [ - 'foot', - 'xdg-desktop-portal-wlr', - 'river', - ] - - @property - @override - def default_greeter_type(self) -> GreeterType: - return GreeterType.Lightdm diff --git a/examples/archinstall/archinstall/default_profiles/desktops/sway.py b/examples/archinstall/archinstall/default_profiles/desktops/sway.py deleted file mode 100644 index d01611b..0000000 --- a/examples/archinstall/archinstall/default_profiles/desktops/sway.py +++ /dev/null @@ -1,81 +0,0 @@ -from typing import override - -from archinstall.default_profiles.desktops import SeatAccess -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile -from archinstall.lib.translationhandler import tr -from archinstall.tui.curses_menu import SelectMenu -from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.result import ResultType -from archinstall.tui.types import Alignment, FrameProperties - - -class SwayProfile(XorgProfile): - def __init__(self) -> None: - super().__init__( - 'Sway', - ProfileType.WindowMgr, - ) - - self.custom_settings = {'seat_access': None} - - @property - @override - def packages(self) -> list[str]: - additional = [] - if seat := self.custom_settings.get('seat_access', None): - additional = [seat] - - return [ - 'sway', - 'swaybg', - 'swaylock', - 'swayidle', - 'waybar', - 'wmenu', - 'brightnessctl', - 'grim', - 'slurp', - 'pavucontrol', - 'foot', - 'xorg-xwayland', - ] + additional - - @property - @override - def default_greeter_type(self) -> GreeterType: - return GreeterType.Lightdm - - @property - @override - def services(self) -> list[str]: - if pref := self.custom_settings.get('seat_access', None): - return [pref] - return [] - - def _ask_seat_access(self) -> None: - # need to activate seat service and add to seat group - header = tr('Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)') - header += '\n' + tr('Choose an option to give Sway access to your hardware') + '\n' - - items = [MenuItem(s.value, value=s) for s in SeatAccess] - group = MenuItemGroup(items, sort_items=True) - - default = self.custom_settings.get('seat_access', None) - group.set_default_by_value(default) - - result = SelectMenu[SeatAccess]( - group, - header=header, - allow_skip=False, - frame=FrameProperties.min(tr('Seat access')), - alignment=Alignment.CENTER, - ).run() - - if result.type_ == ResultType.Selection: - self.custom_settings['seat_access'] = result.get_value().value - - @override - def do_on_select(self) -> None: - self._ask_seat_access() - return None diff --git a/examples/archinstall/archinstall/default_profiles/desktops/xfce4.py b/examples/archinstall/archinstall/default_profiles/desktops/xfce4.py deleted file mode 100644 index 34dfd8e..0000000 --- a/examples/archinstall/archinstall/default_profiles/desktops/xfce4.py +++ /dev/null @@ -1,25 +0,0 @@ -from typing import override - -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile - - -class Xfce4Profile(XorgProfile): - def __init__(self) -> None: - super().__init__('Xfce4', ProfileType.DesktopEnv) - - @property - @override - def packages(self) -> list[str]: - return [ - 'xfce4', - 'xfce4-goodies', - 'pavucontrol', - 'gvfs', - 'xarchiver', - ] - - @property - @override - def default_greeter_type(self) -> GreeterType: - return GreeterType.Lightdm diff --git a/examples/archinstall/archinstall/default_profiles/desktops/xmonad.py b/examples/archinstall/archinstall/default_profiles/desktops/xmonad.py deleted file mode 100644 index 4a9cac0..0000000 --- a/examples/archinstall/archinstall/default_profiles/desktops/xmonad.py +++ /dev/null @@ -1,25 +0,0 @@ -from typing import override - -from archinstall.default_profiles.profile import GreeterType, ProfileType -from archinstall.default_profiles.xorg import XorgProfile - - -class XmonadProfile(XorgProfile): - def __init__(self) -> None: - super().__init__('Xmonad', ProfileType.WindowMgr) - - @property - @override - def packages(self) -> list[str]: - return [ - 'xmonad', - 'xmonad-contrib', - 'xmonad-extras', - 'xterm', - 'dmenu', - ] - - @property - @override - def default_greeter_type(self) -> GreeterType: - return GreeterType.Lightdm diff --git a/examples/archinstall/archinstall/default_profiles/minimal.py b/examples/archinstall/archinstall/default_profiles/minimal.py deleted file mode 100644 index 451e7b9..0000000 --- a/examples/archinstall/archinstall/default_profiles/minimal.py +++ /dev/null @@ -1,9 +0,0 @@ -from archinstall.default_profiles.profile import Profile, ProfileType - - -class MinimalProfile(Profile): - def __init__(self) -> None: - super().__init__( - 'Minimal', - ProfileType.Minimal, - ) diff --git a/examples/archinstall/archinstall/default_profiles/profile.py b/examples/archinstall/archinstall/default_profiles/profile.py deleted file mode 100644 index 478495d..0000000 --- a/examples/archinstall/archinstall/default_profiles/profile.py +++ /dev/null @@ -1,204 +0,0 @@ -from __future__ import annotations - -import sys -from enum import Enum, auto -from typing import TYPE_CHECKING - -from archinstall.lib.translationhandler import tr - -if TYPE_CHECKING: - from ..lib.installer import Installer - - -class ProfileType(Enum): - # top level default_profiles - Server = 'Server' - Desktop = 'Desktop' - Xorg = 'Xorg' - Minimal = 'Minimal' - Custom = 'Custom' - # detailed selection default_profiles - ServerType = 'ServerType' - WindowMgr = 'Window Manager' - DesktopEnv = 'Desktop Environment' - CustomType = 'CustomType' - # special things - Tailored = 'Tailored' - Application = 'Application' - - -class GreeterType(Enum): - Lightdm = 'lightdm-gtk-greeter' - LightdmSlick = 'lightdm-slick-greeter' - Sddm = 'sddm' - Gdm = 'gdm' - Ly = 'ly' - - # .. todo:: Remove when we un-hide cosmic behind --advanced - if '--advanced' in sys.argv: - CosmicSession = 'cosmic-greeter' - - -class SelectResult(Enum): - NewSelection = auto() - SameSelection = auto() - ResetCurrent = auto() - - -class Profile: - def __init__( - self, - name: str, - profile_type: ProfileType, - current_selection: list[Profile] = [], - packages: list[str] = [], - services: list[str] = [], - support_gfx_driver: bool = False, - support_greeter: bool = False, - advanced: bool = False, - ) -> None: - self.name = name - self.profile_type = profile_type - self.custom_settings: dict[str, str | None] = {} - self.advanced = advanced - - self._support_gfx_driver = support_gfx_driver - self._support_greeter = support_greeter - - # self.gfx_driver: str | None = None - - self.current_selection = current_selection - self._packages = packages - self._services = services - - # Only used for custom default_profiles - self.custom_enabled = False - - @property - def packages(self) -> list[str]: - """ - Returns a list of packages that should be installed when - this profile is among the chosen ones - """ - return self._packages - - @property - def services(self) -> list[str]: - """ - Returns a list of services that should be enabled when - this profile is among the chosen ones - """ - return self._services - - @property - def default_greeter_type(self) -> GreeterType | None: - """ - Setting a default greeter type for a desktop profile - """ - return None - - def _advanced_check(self) -> bool: - """ - Used to control if the Profile() should be visible or not in different contexts. - Returns True if --advanced is given on a Profile(advanced=True) instance. - """ - from archinstall.lib.args import arch_config_handler - - return self.advanced is False or arch_config_handler.args.advanced is True - - def install(self, install_session: 'Installer') -> None: - """ - Performs installation steps when this profile was selected - """ - - def post_install(self, install_session: 'Installer') -> None: - """ - Hook that will be called when the installation process is - finished and custom installation steps for specific default_profiles - are needed - """ - - def json(self) -> dict[str, str]: - """ - Returns a json representation of the profile - """ - return {} - - def do_on_select(self) -> SelectResult | None: - """ - Hook that will be called when a profile is selected - """ - return SelectResult.NewSelection - - def set_custom_settings(self, settings: dict[str, str | None]) -> None: - """ - Set the custom settings for the profile. - This is also called when the settings are parsed from the config - and can be overridden to perform further actions based on the profile - """ - self.custom_settings = settings - - def current_selection_names(self) -> list[str]: - if self.current_selection: - return [s.name for s in self.current_selection] - return [] - - def reset(self) -> None: - self.current_selection = [] - - def is_top_level_profile(self) -> bool: - top_levels = [ProfileType.Desktop, ProfileType.Server, ProfileType.Xorg, ProfileType.Minimal, ProfileType.Custom] - return self.profile_type in top_levels - - def is_desktop_profile(self) -> bool: - return self.profile_type == ProfileType.Desktop if self._advanced_check() else False - - def is_server_type_profile(self) -> bool: - return self.profile_type == ProfileType.ServerType - - def is_desktop_type_profile(self) -> bool: - return (self.profile_type == ProfileType.DesktopEnv or self.profile_type == ProfileType.WindowMgr) if self._advanced_check() else False - - def is_xorg_type_profile(self) -> bool: - return self.profile_type == ProfileType.Xorg if self._advanced_check() else False - - def is_tailored(self) -> bool: - return self.profile_type == ProfileType.Tailored - - def is_custom_type_profile(self) -> bool: - return self.profile_type == ProfileType.CustomType - - def is_graphic_driver_supported(self) -> bool: - if not self.current_selection: - return self._support_gfx_driver - else: - if any([p._support_gfx_driver for p in self.current_selection]): - return True - return False - - def is_greeter_supported(self) -> bool: - return self._support_greeter - - def preview_text(self) -> str: - """ - Override this method to provide a preview text for the profile - """ - return self.packages_text() - - def packages_text(self, include_sub_packages: bool = False) -> str: - packages = set() - - if self.packages: - packages = set(self.packages) - - if include_sub_packages: - for sub_profile in self.current_selection: - if sub_profile.packages: - packages.update(sub_profile.packages) - - text = tr('Installed packages') + ':\n' - - for pkg in sorted(packages): - text += f'\t- {pkg}\n' - - return text diff --git a/examples/archinstall/archinstall/default_profiles/server.py b/examples/archinstall/archinstall/default_profiles/server.py deleted file mode 100644 index 5526b9c..0000000 --- a/examples/archinstall/archinstall/default_profiles/server.py +++ /dev/null @@ -1,74 +0,0 @@ -from typing import TYPE_CHECKING, override - -from archinstall.default_profiles.profile import Profile, ProfileType, SelectResult -from archinstall.lib.output import info -from archinstall.lib.profile.profiles_handler import profile_handler -from archinstall.tui.curses_menu import SelectMenu -from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.result import ResultType -from archinstall.tui.types import FrameProperties, PreviewStyle - -if TYPE_CHECKING: - from archinstall.lib.installer import Installer - - -class ServerProfile(Profile): - def __init__(self, current_value: list[Profile] = []): - super().__init__( - 'Server', - ProfileType.Server, - current_selection=current_value, - ) - - @override - def do_on_select(self) -> SelectResult: - items = [ - MenuItem( - p.name, - value=p, - preview_action=lambda x: x.value.preview_text(), - ) - for p in profile_handler.get_server_profiles() - ] - - group = MenuItemGroup(items, sort_items=True) - group.set_selected_by_value(self.current_selection) - - result = SelectMenu[Profile]( - group, - allow_reset=True, - allow_skip=True, - preview_style=PreviewStyle.RIGHT, - preview_size='auto', - preview_frame=FrameProperties.max('Info'), - multi=True, - ).run() - - match result.type_: - case ResultType.Selection: - selections = result.get_values() - self.current_selection = selections - return SelectResult.NewSelection - case ResultType.Skip: - return SelectResult.SameSelection - case ResultType.Reset: - return SelectResult.ResetCurrent - - @override - def post_install(self, install_session: 'Installer') -> None: - for profile in self.current_selection: - profile.post_install(install_session) - - @override - def install(self, install_session: 'Installer') -> None: - server_info = self.current_selection_names() - details = ', '.join(server_info) - info(f'Now installing the selected servers: {details}') - - for server in self.current_selection: - info(f'Installing {server.name}...') - install_session.add_additional_packages(server.packages) - install_session.enable_service(server.services) - server.install(install_session) - - info('If your selections included multiple servers with the same port, you may have to reconfigure them.') diff --git a/examples/archinstall/archinstall/default_profiles/servers/__init__.py b/examples/archinstall/archinstall/default_profiles/servers/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/examples/archinstall/archinstall/default_profiles/servers/cockpit.py b/examples/archinstall/archinstall/default_profiles/servers/cockpit.py deleted file mode 100644 index 7283bad..0000000 --- a/examples/archinstall/archinstall/default_profiles/servers/cockpit.py +++ /dev/null @@ -1,21 +0,0 @@ -from typing import override - -from archinstall.default_profiles.profile import Profile, ProfileType - - -class CockpitProfile(Profile): - def __init__(self) -> None: - super().__init__( - 'Cockpit', - ProfileType.ServerType, - ) - - @property - @override - def packages(self) -> list[str]: - return ['cockpit', 'udisks2', 'packagekit'] - - @property - @override - def services(self) -> list[str]: - return ['cockpit.socket'] diff --git a/examples/archinstall/archinstall/default_profiles/servers/docker.py b/examples/archinstall/archinstall/default_profiles/servers/docker.py deleted file mode 100644 index d95e172..0000000 --- a/examples/archinstall/archinstall/default_profiles/servers/docker.py +++ /dev/null @@ -1,32 +0,0 @@ -from typing import TYPE_CHECKING, override - -from archinstall.default_profiles.profile import Profile, ProfileType - -if TYPE_CHECKING: - from archinstall.lib.installer import Installer - - -class DockerProfile(Profile): - def __init__(self) -> None: - super().__init__( - 'Docker', - ProfileType.ServerType, - ) - - @property - @override - def packages(self) -> list[str]: - return ['docker'] - - @property - @override - def services(self) -> list[str]: - return ['docker'] - - @override - def post_install(self, install_session: 'Installer') -> None: - from archinstall.lib.args import arch_config_handler - - if auth_config := arch_config_handler.config.auth_config: - for user in auth_config.users: - install_session.arch_chroot(f'usermod -a -G docker {user.username}') diff --git a/examples/archinstall/archinstall/default_profiles/servers/httpd.py b/examples/archinstall/archinstall/default_profiles/servers/httpd.py deleted file mode 100644 index 713d9f1..0000000 --- a/examples/archinstall/archinstall/default_profiles/servers/httpd.py +++ /dev/null @@ -1,21 +0,0 @@ -from typing import override - -from archinstall.default_profiles.profile import Profile, ProfileType - - -class HttpdProfile(Profile): - def __init__(self) -> None: - super().__init__( - 'httpd', - ProfileType.ServerType, - ) - - @property - @override - def packages(self) -> list[str]: - return ['apache'] - - @property - @override - def services(self) -> list[str]: - return ['httpd'] diff --git a/examples/archinstall/archinstall/default_profiles/servers/lighttpd.py b/examples/archinstall/archinstall/default_profiles/servers/lighttpd.py deleted file mode 100644 index 5547518..0000000 --- a/examples/archinstall/archinstall/default_profiles/servers/lighttpd.py +++ /dev/null @@ -1,21 +0,0 @@ -from typing import override - -from archinstall.default_profiles.profile import Profile, ProfileType - - -class LighttpdProfile(Profile): - def __init__(self) -> None: - super().__init__( - 'Lighttpd', - ProfileType.ServerType, - ) - - @property - @override - def packages(self) -> list[str]: - return ['lighttpd'] - - @property - @override - def services(self) -> list[str]: - return ['lighttpd'] diff --git a/examples/archinstall/archinstall/default_profiles/servers/mariadb.py b/examples/archinstall/archinstall/default_profiles/servers/mariadb.py deleted file mode 100644 index 2cdafae..0000000 --- a/examples/archinstall/archinstall/default_profiles/servers/mariadb.py +++ /dev/null @@ -1,28 +0,0 @@ -from typing import TYPE_CHECKING, override - -from archinstall.default_profiles.profile import Profile, ProfileType - -if TYPE_CHECKING: - from archinstall.lib.installer import Installer - - -class MariadbProfile(Profile): - def __init__(self) -> None: - super().__init__( - 'Mariadb', - ProfileType.ServerType, - ) - - @property - @override - def packages(self) -> list[str]: - return ['mariadb'] - - @property - @override - def services(self) -> list[str]: - return ['mariadb'] - - @override - def post_install(self, install_session: 'Installer') -> None: - install_session.arch_chroot('mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql') diff --git a/examples/archinstall/archinstall/default_profiles/servers/nginx.py b/examples/archinstall/archinstall/default_profiles/servers/nginx.py deleted file mode 100644 index 3628597..0000000 --- a/examples/archinstall/archinstall/default_profiles/servers/nginx.py +++ /dev/null @@ -1,21 +0,0 @@ -from typing import override - -from archinstall.default_profiles.profile import Profile, ProfileType - - -class NginxProfile(Profile): - def __init__(self) -> None: - super().__init__( - 'Nginx', - ProfileType.ServerType, - ) - - @property - @override - def packages(self) -> list[str]: - return ['nginx'] - - @property - @override - def services(self) -> list[str]: - return ['nginx'] diff --git a/examples/archinstall/archinstall/default_profiles/servers/postgresql.py b/examples/archinstall/archinstall/default_profiles/servers/postgresql.py deleted file mode 100644 index c93c132..0000000 --- a/examples/archinstall/archinstall/default_profiles/servers/postgresql.py +++ /dev/null @@ -1,28 +0,0 @@ -from typing import TYPE_CHECKING, override - -from archinstall.default_profiles.profile import Profile, ProfileType - -if TYPE_CHECKING: - from archinstall.lib.installer import Installer - - -class PostgresqlProfile(Profile): - def __init__(self) -> None: - super().__init__( - 'Postgresql', - ProfileType.ServerType, - ) - - @property - @override - def packages(self) -> list[str]: - return ['postgresql'] - - @property - @override - def services(self) -> list[str]: - return ['postgresql'] - - @override - def post_install(self, install_session: 'Installer') -> None: - install_session.arch_chroot('initdb -D /var/lib/postgres/data', run_as='postgres') diff --git a/examples/archinstall/archinstall/default_profiles/servers/sshd.py b/examples/archinstall/archinstall/default_profiles/servers/sshd.py deleted file mode 100644 index ecd880a..0000000 --- a/examples/archinstall/archinstall/default_profiles/servers/sshd.py +++ /dev/null @@ -1,21 +0,0 @@ -from typing import override - -from archinstall.default_profiles.profile import Profile, ProfileType - - -class SshdProfile(Profile): - def __init__(self) -> None: - super().__init__( - 'sshd', - ProfileType.ServerType, - ) - - @property - @override - def packages(self) -> list[str]: - return ['openssh'] - - @property - @override - def services(self) -> list[str]: - return ['sshd'] diff --git a/examples/archinstall/archinstall/default_profiles/servers/tomcat.py b/examples/archinstall/archinstall/default_profiles/servers/tomcat.py deleted file mode 100644 index 03bae3d..0000000 --- a/examples/archinstall/archinstall/default_profiles/servers/tomcat.py +++ /dev/null @@ -1,21 +0,0 @@ -from typing import override - -from archinstall.default_profiles.profile import Profile, ProfileType - - -class TomcatProfile(Profile): - def __init__(self) -> None: - super().__init__( - 'Tomcat', - ProfileType.ServerType, - ) - - @property - @override - def packages(self) -> list[str]: - return ['tomcat10'] - - @property - @override - def services(self) -> list[str]: - return ['tomcat10'] diff --git a/examples/archinstall/archinstall/default_profiles/tailored.py b/examples/archinstall/archinstall/default_profiles/tailored.py deleted file mode 100644 index 5076358..0000000 --- a/examples/archinstall/archinstall/default_profiles/tailored.py +++ /dev/null @@ -1,22 +0,0 @@ -from typing import TYPE_CHECKING, override - -from archinstall.default_profiles.profile import ProfileType -from archinstall.default_profiles.xorg import XorgProfile - -if TYPE_CHECKING: - from archinstall.lib.installer import Installer - - -class TailoredProfile(XorgProfile): - def __init__(self) -> None: - super().__init__('52-54-00-12-34-56', ProfileType.Tailored) - - @property - @override - def packages(self) -> list[str]: - return ['nano', 'wget', 'git'] - - @override - def install(self, install_session: 'Installer') -> None: - super().install(install_session) - # do whatever you like here :) diff --git a/examples/archinstall/archinstall/default_profiles/xorg.py b/examples/archinstall/archinstall/default_profiles/xorg.py deleted file mode 100644 index 71b9bf6..0000000 --- a/examples/archinstall/archinstall/default_profiles/xorg.py +++ /dev/null @@ -1,34 +0,0 @@ -from typing import override - -from archinstall.default_profiles.profile import Profile, ProfileType -from archinstall.lib.translationhandler import tr - - -class XorgProfile(Profile): - def __init__( - self, - name: str = 'Xorg', - profile_type: ProfileType = ProfileType.Xorg, - advanced: bool = False, - ): - super().__init__( - name, - profile_type, - support_gfx_driver=True, - advanced=advanced, - ) - - @override - def preview_text(self) -> str: - text = tr('Environment type: {}').format(self.profile_type.value) - if packages := self.packages_text(): - text += f'\n{packages}' - - return text - - @property - @override - def packages(self) -> list[str]: - return [ - 'xorg-server', - ] diff --git a/examples/archinstall/archinstall/examples b/examples/archinstall/archinstall/examples deleted file mode 120000 index 785887f..0000000 --- a/examples/archinstall/archinstall/examples +++ /dev/null @@ -1 +0,0 @@ -../examples/ \ No newline at end of file diff --git a/examples/archinstall/archinstall/lib/__init__.py b/examples/archinstall/archinstall/lib/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/examples/archinstall/archinstall/lib/applications/__init__.py b/examples/archinstall/archinstall/lib/applications/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/examples/archinstall/archinstall/lib/applications/application_handler.py b/examples/archinstall/archinstall/lib/applications/application_handler.py deleted file mode 100644 index 29e30f4..0000000 --- a/examples/archinstall/archinstall/lib/applications/application_handler.py +++ /dev/null @@ -1,29 +0,0 @@ -from typing import TYPE_CHECKING - -from archinstall.applications.audio import AudioApp -from archinstall.applications.bluetooth import BluetoothApp -from archinstall.lib.models import Audio -from archinstall.lib.models.application import ApplicationConfiguration -from archinstall.lib.models.users import User - -if TYPE_CHECKING: - from archinstall.lib.installer import Installer - - -class ApplicationHandler: - def __init__(self) -> None: - pass - - def install_applications(self, install_session: 'Installer', app_config: ApplicationConfiguration, users: list['User'] | None = None) -> None: - if app_config.bluetooth_config and app_config.bluetooth_config.enabled: - BluetoothApp().install(install_session) - - if app_config.audio_config and app_config.audio_config.audio != Audio.NO_AUDIO: - AudioApp().install( - install_session, - app_config.audio_config, - users, - ) - - -application_handler = ApplicationHandler() diff --git a/examples/archinstall/archinstall/lib/applications/application_menu.py b/examples/archinstall/archinstall/lib/applications/application_menu.py deleted file mode 100644 index 20ab93e..0000000 --- a/examples/archinstall/archinstall/lib/applications/application_menu.py +++ /dev/null @@ -1,117 +0,0 @@ -from typing import override - -from archinstall.lib.menu.abstract_menu import AbstractSubMenu -from archinstall.lib.models.application import ApplicationConfiguration, Audio, AudioConfiguration, BluetoothConfiguration -from archinstall.lib.translationhandler import tr -from archinstall.tui.curses_menu import SelectMenu -from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.result import ResultType -from archinstall.tui.types import Alignment, FrameProperties, Orientation - - -class ApplicationMenu(AbstractSubMenu[ApplicationConfiguration]): - def __init__( - self, - preset: ApplicationConfiguration | None = None, - ): - if preset: - self._app_config = preset - else: - self._app_config = ApplicationConfiguration() - - menu_optioons = self._define_menu_options() - self._item_group = MenuItemGroup(menu_optioons, checkmarks=True) - - super().__init__( - self._item_group, - config=self._app_config, - allow_reset=True, - ) - - @override - def run(self, additional_title: str | None = None) -> ApplicationConfiguration: - super().run(additional_title=additional_title) - return self._app_config - - def _define_menu_options(self) -> list[MenuItem]: - return [ - MenuItem( - text=tr('Bluetooth'), - action=select_bluetooth, - value=self._app_config.bluetooth_config, - preview_action=self._prev_bluetooth, - key='bluetooth_config', - ), - MenuItem( - text=tr('Audio'), - action=select_audio, - preview_action=self._prev_audio, - key='audio_config', - ), - ] - - def _prev_bluetooth(self, item: MenuItem) -> str | None: - if item.value is not None: - bluetooth_config: BluetoothConfiguration = item.value - - output = 'Bluetooth: ' - output += tr('Enabled') if bluetooth_config.enabled else tr('Disabled') - return output - return None - - def _prev_audio(self, item: MenuItem) -> str | None: - if item.value is not None: - config: AudioConfiguration = item.value - return f'{tr("Audio")}: {config.audio.value}' - return None - - -def select_bluetooth(preset: BluetoothConfiguration | None) -> BluetoothConfiguration | None: - group = MenuItemGroup.yes_no() - group.focus_item = MenuItem.no() - - if preset is not None: - group.set_selected_by_value(preset.enabled) - - header = tr('Would you like to configure Bluetooth?') + '\n' - - result = SelectMenu[bool]( - group, - header=header, - alignment=Alignment.CENTER, - columns=2, - orientation=Orientation.HORIZONTAL, - allow_skip=True, - ).run() - - match result.type_: - case ResultType.Selection: - enabled = result.item() == MenuItem.yes() - return BluetoothConfiguration(enabled) - case ResultType.Skip: - return preset - case _: - raise ValueError('Unhandled result type') - - -def select_audio(preset: AudioConfiguration | None = None) -> AudioConfiguration | None: - items = [MenuItem(a.value, value=a) for a in Audio] - group = MenuItemGroup(items) - - if preset: - group.set_focus_by_value(preset.audio) - - result = SelectMenu[Audio]( - group, - allow_skip=True, - alignment=Alignment.CENTER, - frame=FrameProperties.min(tr('Audio')), - ).run() - - match result.type_: - case ResultType.Skip: - return preset - case ResultType.Selection: - return AudioConfiguration(audio=result.get_value()) - case ResultType.Reset: - raise ValueError('Unhandled result type') diff --git a/examples/archinstall/archinstall/lib/args.py b/examples/archinstall/archinstall/lib/args.py deleted file mode 100644 index 48a379b..0000000 --- a/examples/archinstall/archinstall/lib/args.py +++ /dev/null @@ -1,559 +0,0 @@ -import argparse -import json -import os -import urllib.error -import urllib.parse -from argparse import ArgumentParser, Namespace -from dataclasses import dataclass, field -from importlib.metadata import version -from pathlib import Path -from typing import Any -from urllib.request import Request, urlopen - -from pydantic.dataclasses import dataclass as p_dataclass - -from archinstall.lib.crypt import decrypt -from archinstall.lib.models.application import ApplicationConfiguration -from archinstall.lib.models.authentication import AuthenticationConfiguration -from archinstall.lib.models.bootloader import Bootloader -from archinstall.lib.models.device import DiskEncryption, DiskLayoutConfiguration -from archinstall.lib.models.locale import LocaleConfiguration -from archinstall.lib.models.mirrors import MirrorConfiguration -from archinstall.lib.models.network import NetworkConfiguration -from archinstall.lib.models.packages import Repository -from archinstall.lib.models.profile import ProfileConfiguration -from archinstall.lib.models.users import Password, User, UserSerialization -from archinstall.lib.output import debug, error, logger, warn -from archinstall.lib.plugins import load_plugin -from archinstall.lib.translationhandler import Language, tr, translation_handler -from archinstall.lib.utils.util import get_password -from archinstall.tui.curses_menu import Tui - - -@p_dataclass -class Arguments: - config: Path | None = None - config_url: str | None = None - creds: Path | None = None - creds_url: str | None = None - creds_decryption_key: str | None = None - silent: bool = False - dry_run: bool = False - script: str | None = None - mountpoint: Path = Path('/mnt') - skip_ntp: bool = False - skip_wkd: bool = False - skip_boot: bool = False - debug: bool = False - offline: bool = False - no_pkg_lookups: bool = False - plugin: str | None = None - skip_version_check: bool = False - skip_wifi_check: bool = False - advanced: bool = False - verbose: bool = False - - -@dataclass -class ArchConfig: - version: str | None = None - script: str | None = None - locale_config: LocaleConfiguration | None = None - archinstall_language: Language = field(default_factory=lambda: translation_handler.get_language_by_abbr('en')) - disk_config: DiskLayoutConfiguration | None = None - profile_config: ProfileConfiguration | None = None - mirror_config: MirrorConfiguration | None = None - network_config: NetworkConfiguration | None = None - bootloader: Bootloader | None = None - uki: bool = False - app_config: ApplicationConfiguration | None = None - auth_config: AuthenticationConfiguration | None = None - hostname: str = 'archlinux' - kernels: list[str] = field(default_factory=lambda: ['linux']) - ntp: bool = True - packages: list[str] = field(default_factory=list) - parallel_downloads: int = 0 - swap: bool = True - timezone: str = 'UTC' - services: list[str] = field(default_factory=list) - custom_commands: list[str] = field(default_factory=list) - - def unsafe_json(self) -> dict[str, Any]: - config: dict[str, list[UserSerialization] | str | None] = {} - - if self.auth_config: - if self.auth_config.users: - config['users'] = [user.json() for user in self.auth_config.users] - - if self.auth_config.root_enc_password: - config['root_enc_password'] = self.auth_config.root_enc_password.enc_password - - if self.disk_config: - disk_encryption = self.disk_config.disk_encryption - if disk_encryption and disk_encryption.encryption_password: - config['encryption_password'] = disk_encryption.encryption_password.plaintext - - return config - - def safe_json(self) -> dict[str, Any]: - config: Any = { - 'version': self.version, - 'script': self.script, - 'archinstall-language': self.archinstall_language.json(), - 'hostname': self.hostname, - 'kernels': self.kernels, - 'uki': self.uki, - 'ntp': self.ntp, - 'packages': self.packages, - 'parallel_downloads': self.parallel_downloads, - 'swap': self.swap, - 'timezone': self.timezone, - 'services': self.services, - 'custom_commands': self.custom_commands, - 'bootloader': self.bootloader.json() if self.bootloader else None, - 'app_config': self.app_config.json() if self.app_config else None, - 'auth_config': self.auth_config.json() if self.auth_config else None, - } - - if self.locale_config: - config['locale_config'] = self.locale_config.json() - - if self.disk_config: - config['disk_config'] = self.disk_config.json() - - if self.profile_config: - config['profile_config'] = self.profile_config.json() - - if self.mirror_config: - config['mirror_config'] = self.mirror_config.json() - - if self.network_config: - config['network_config'] = self.network_config.json() - - return config - - @classmethod - def from_config(cls, args_config: dict[str, Any], args: Arguments) -> 'ArchConfig': - arch_config = ArchConfig() - - arch_config.locale_config = LocaleConfiguration.parse_arg(args_config) - - if script := args_config.get('script', None): - arch_config.script = script - - if archinstall_lang := args_config.get('archinstall-language', None): - arch_config.archinstall_language = translation_handler.get_language_by_name(archinstall_lang) - - if disk_config := args_config.get('disk_config', {}): - enc_password = args_config.get('encryption_password', '') - password = Password(plaintext=enc_password) if enc_password else None - arch_config.disk_config = DiskLayoutConfiguration.parse_arg(disk_config, password) - - # DEPRECATED - # backwards compatibility for main level disk_encryption entry - disk_encryption: DiskEncryption | None = None - - if args_config.get('disk_encryption', None) is not None and arch_config.disk_config is not None: - disk_encryption = DiskEncryption.parse_arg( - arch_config.disk_config, - args_config['disk_encryption'], - Password(plaintext=args_config.get('encryption_password', '')), - ) - - if disk_encryption: - arch_config.disk_config.disk_encryption = disk_encryption - - if profile_config := args_config.get('profile_config', None): - arch_config.profile_config = ProfileConfiguration.parse_arg(profile_config) - - if mirror_config := args_config.get('mirror_config', None): - backwards_compatible_repo = [] - if additional_repositories := args_config.get('additional-repositories', []): - backwards_compatible_repo = [Repository(r) for r in additional_repositories] - - arch_config.mirror_config = MirrorConfiguration.parse_args( - mirror_config, - backwards_compatible_repo, - ) - - if net_config := args_config.get('network_config', None): - arch_config.network_config = NetworkConfiguration.parse_arg(net_config) - - if bootloader_config := args_config.get('bootloader', None): - arch_config.bootloader = Bootloader.from_arg(bootloader_config, args.skip_boot) - - arch_config.uki = args_config.get('uki', False) - - if args_config.get('uki') and (arch_config.bootloader is None or not arch_config.bootloader.has_uki_support()): - arch_config.uki = False - - # deprecated: backwards compatibility - audio_config_args = args_config.get('audio_config', None) - app_config_args = args_config.get('app_config', None) - - if audio_config_args is not None or app_config_args is not None: - arch_config.app_config = ApplicationConfiguration.parse_arg(app_config_args, audio_config_args) - - if auth_config_args := args_config.get('auth_config', None): - arch_config.auth_config = AuthenticationConfiguration.parse_arg(auth_config_args) - - if hostname := args_config.get('hostname', ''): - arch_config.hostname = hostname - - if kernels := args_config.get('kernels', []): - arch_config.kernels = kernels - - arch_config.ntp = args_config.get('ntp', True) - - if packages := args_config.get('packages', []): - arch_config.packages = packages - - if parallel_downloads := args_config.get('parallel_downloads', 0): - arch_config.parallel_downloads = parallel_downloads - - arch_config.swap = args_config.get('swap', True) - - if timezone := args_config.get('timezone', 'UTC'): - arch_config.timezone = timezone - - if services := args_config.get('services', []): - arch_config.services = services - - # DEPRECATED: backwards compatibility - root_password = None - if root_password := args_config.get('!root-password', None): - root_password = Password(plaintext=root_password) - - if enc_password := args_config.get('root_enc_password', None): - root_password = Password(enc_password=enc_password) - - if root_password is not None: - if arch_config.auth_config is None: - arch_config.auth_config = AuthenticationConfiguration() - arch_config.auth_config.root_enc_password = root_password - - # DEPRECATED: backwards copatibility - users: list[User] = [] - if args_users := args_config.get('!users', None): - users = User.parse_arguments(args_users) - - if args_users := args_config.get('users', None): - users = User.parse_arguments(args_users) - - if users: - if arch_config.auth_config is None: - arch_config.auth_config = AuthenticationConfiguration() - arch_config.auth_config.users = users - - if custom_commands := args_config.get('custom_commands', []): - arch_config.custom_commands = custom_commands - - return arch_config - - -class ArchConfigHandler: - def __init__(self) -> None: - self._parser: ArgumentParser = self._define_arguments() - args: Arguments = self._parse_args() - self._args = args - - config = self._parse_config() - - try: - self._config = ArchConfig.from_config(config, args) - self._config.version = self._get_version() - except ValueError as err: - warn(str(err)) - exit(1) - - @property - def config(self) -> ArchConfig: - return self._config - - @property - def args(self) -> Arguments: - return self._args - - def get_script(self) -> str: - if script := self.args.script: - return script - - if script := self.config.script: - return script - - return 'guided' - - def print_help(self) -> None: - self._parser.print_help() - - def _get_version(self) -> str: - try: - return version('archinstall') - except Exception: - return 'Archinstall version not found' - - def _define_arguments(self) -> ArgumentParser: - parser = ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter) - parser.add_argument( - '-v', - '--version', - action='version', - default=False, - version='%(prog)s ' + self._get_version(), - ) - parser.add_argument( - '--config', - type=Path, - nargs='?', - default=None, - help='JSON configuration file', - ) - parser.add_argument( - '--config-url', - type=str, - nargs='?', - default=None, - help='Url to a JSON configuration file', - ) - parser.add_argument( - '--creds', - type=Path, - nargs='?', - default=None, - help='JSON credentials configuration file', - ) - parser.add_argument( - '--creds-url', - type=str, - nargs='?', - default=None, - help='Url to a JSON credentials configuration file', - ) - parser.add_argument( - '--creds-decryption-key', - type=str, - nargs='?', - default=None, - help='Decryption key for credentials file', - ) - parser.add_argument( - '--silent', - action='store_true', - default=False, - help='WARNING: Disables all prompts for input and confirmation. If no configuration is provided, this is ignored', - ) - parser.add_argument( - '--dry-run', - '--dry_run', - action='store_true', - default=False, - help='Generates a configuration file and then exits instead of performing an installation', - ) - parser.add_argument( - '--script', - nargs='?', - help='Script to run for installation', - type=str, - ) - parser.add_argument( - '--mountpoint', - type=Path, - nargs='?', - default=Path('/mnt'), - help='Define an alternate mount point for installation', - ) - parser.add_argument( - '--skip-ntp', - action='store_true', - help='Disables NTP checks during installation', - default=False, - ) - parser.add_argument( - '--skip-wkd', - action='store_true', - help='Disables checking if archlinux keyring wkd sync is complete.', - default=False, - ) - parser.add_argument( - '--skip-boot', - action='store_true', - help='Disables installation of a boot loader (note: only use this when problems arise with the boot loader step).', - default=False, - ) - parser.add_argument( - '--debug', - action='store_true', - default=False, - help='Adds debug info into the log', - ) - parser.add_argument( - '--offline', - action='store_true', - default=False, - help='Disabled online upstream services such as package search and key-ring auto update.', - ) - parser.add_argument( - '--no-pkg-lookups', - action='store_true', - default=False, - help='Disabled package validation specifically prior to starting installation.', - ) - parser.add_argument( - '--plugin', - nargs='?', - type=str, - default=None, - help='File path to a plugin to load', - ) - parser.add_argument( - '--skip-version-check', - action='store_true', - default=False, - help='Skip the version check when running archinstall', - ) - parser.add_argument( - '--skip-wifi-check', - action='store_true', - default=False, - help='Skip wifi check when running archinstall', - ) - parser.add_argument( - '--advanced', - action='store_true', - default=False, - help='Enabled advanced options', - ) - parser.add_argument( - '--verbose', - action='store_true', - default=False, - help='Enabled verbose options', - ) - - return parser - - def _parse_args(self) -> Arguments: - argparse_args = vars(self._parser.parse_args()) - args: Arguments = Arguments(**argparse_args) - - # amend the parameters (check internal consistency) - # Installation can't be silent if config is not passed - if args.config is None and args.config_url is None: - args.silent = False - - if args.debug: - warn(f'Warning: --debug mode will write certain credentials to {logger.path}!') - - if args.plugin: - plugin_path = Path(args.plugin) - load_plugin(plugin_path) - - if args.creds_decryption_key is None: - if os.environ.get('ARCHINSTALL_CREDS_DECRYPTION_KEY'): - args.creds_decryption_key = os.environ.get('ARCHINSTALL_CREDS_DECRYPTION_KEY') - - return args - - def _parse_config(self) -> dict[str, Any]: - config: dict[str, Any] = {} - config_data: str | None = None - creds_data: str | None = None - - if self._args.config is not None: - config_data = self._read_file(self._args.config) - elif self._args.config_url is not None: - config_data = self._fetch_from_url(self._args.config_url) - - if config_data is not None: - config.update(json.loads(config_data)) - - if self._args.creds is not None: - creds_data = self._read_file(self._args.creds) - elif self._args.creds_url is not None: - creds_data = self._fetch_from_url(self._args.creds_url) - - if creds_data is not None: - json_data = self._process_creds_data(creds_data) - if json_data is not None: - config.update(json_data) - - config = self._cleanup_config(config) - - return config - - def _process_creds_data(self, creds_data: str) -> dict[str, Any] | None: - if creds_data.startswith('$'): # encrypted data - if self._args.creds_decryption_key is not None: - try: - creds_data = decrypt(creds_data, self._args.creds_decryption_key) - return json.loads(creds_data) - except ValueError as err: - if 'Invalid password' in str(err): - error(tr('Incorrect credentials file decryption password')) - exit(1) - else: - debug(f'Error decrypting credentials file: {err}') - raise err from err - else: - incorrect_password = False - - with Tui(): - while True: - header = tr('Incorrect password') if incorrect_password else None - - decryption_pwd = get_password( - text=tr('Credentials file decryption password'), - header=header, - allow_skip=False, - skip_confirmation=True, - ) - - if not decryption_pwd: - return None - - try: - creds_data = decrypt(creds_data, decryption_pwd.plaintext) - break - except ValueError as err: - if 'Invalid password' in str(err): - debug('Incorrect credentials file decryption password') - incorrect_password = True - else: - debug(f'Error decrypting credentials file: {err}') - raise err from err - - return json.loads(creds_data) - - def _fetch_from_url(self, url: str) -> str: - if urllib.parse.urlparse(url).scheme: - try: - req = Request(url, headers={'User-Agent': 'ArchInstall'}) - with urlopen(req) as resp: - return resp.read().decode('utf-8') - except urllib.error.HTTPError as err: - error(f'Could not fetch JSON from {url}: {err}') - else: - error('Not a valid url') - - exit(1) - - def _read_file(self, path: Path) -> str: - if not path.exists(): - error(f'Could not find file {path}') - exit(1) - - return path.read_text() - - def _cleanup_config(self, config: Namespace | dict[str, Any]) -> dict[str, Any]: - clean_args = {} - for key, val in config.items(): - if isinstance(val, dict): - val = self._cleanup_config(val) - - if val is not None: - clean_args[key] = val - - return clean_args - - -arch_config_handler: ArchConfigHandler = ArchConfigHandler() diff --git a/examples/archinstall/archinstall/lib/authentication/__init__.py b/examples/archinstall/archinstall/lib/authentication/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/examples/archinstall/archinstall/lib/authentication/authentication_handler.py b/examples/archinstall/archinstall/lib/authentication/authentication_handler.py deleted file mode 100644 index 918b968..0000000 --- a/examples/archinstall/archinstall/lib/authentication/authentication_handler.py +++ /dev/null @@ -1,130 +0,0 @@ -import getpass -from pathlib import Path -from typing import TYPE_CHECKING - -from archinstall.lib.general import SysCommandWorker -from archinstall.lib.models.authentication import AuthenticationConfiguration, U2FLoginConfiguration, U2FLoginMethod -from archinstall.lib.models.users import User -from archinstall.lib.output import debug -from archinstall.lib.translationhandler import tr -from archinstall.tui.curses_menu import Tui - -if TYPE_CHECKING: - from archinstall.lib.installer import Installer - - -class AuthenticationHandler: - def setup_auth( - self, - install_session: 'Installer', - auth_config: AuthenticationConfiguration, - hostname: str, - ) -> None: - if auth_config.u2f_config and auth_config.users is not None: - self._setup_u2f_login(install_session, auth_config.u2f_config, auth_config.users, hostname) - - def _setup_u2f_login(self, install_session: 'Installer', u2f_config: U2FLoginConfiguration, users: list[User], hostname: str) -> None: - self._configure_u2f_mapping(install_session, u2f_config, users, hostname) - self._update_pam_config(install_session, u2f_config) - - def _update_pam_config( - self, - install_session: 'Installer', - u2f_config: U2FLoginConfiguration, - ) -> None: - match u2f_config.u2f_login_method: - case U2FLoginMethod.Passwordless: - config_entry = 'auth sufficient pam_u2f.so authfile=/etc/u2f_mappings cue' - case U2FLoginMethod.SecondFactor: - config_entry = 'auth required pam_u2f.so authfile=/etc/u2f_mappings cue' - case _: - raise ValueError(f'Unknown U2F login method: {u2f_config.u2f_login_method}') - - debug(f'U2F PAM configuration: {config_entry}') - debug(f'Passwordless sudo enabled: {u2f_config.passwordless_sudo}') - - sudo_config = install_session.target / 'etc/pam.d/sudo' - sys_login = install_session.target / 'etc/pam.d/system-login' - - if u2f_config.passwordless_sudo: - self._add_u2f_entry(sudo_config, config_entry) - - self._add_u2f_entry(sys_login, config_entry) - - def _add_u2f_entry(self, file: Path, entry: str) -> None: - if not file.exists(): - debug(f'File does not exist: {file}') - return None - - content = file.read_text().splitlines() - - # remove any existing u2f auth entry - content = [line for line in content if 'pam_u2f.so' not in line] - - # add the u2f auth entry as the first one after comments - for i, line in enumerate(content): - if not line.startswith('#'): - content.insert(i, entry) - break - else: - content.append(entry) - - file.write_text('\n'.join(content) + '\n') - - def _configure_u2f_mapping( - self, - install_session: 'Installer', - u2f_config: U2FLoginConfiguration, - users: list[User], - hostname: str, - ) -> None: - debug(f'Setting up U2F login: {u2f_config.u2f_login_method.value}') - - install_session.pacman.strap('pam-u2f') - - Tui.print(tr(f'Setting up U2F login: {u2f_config.u2f_login_method.value}')) - - # https://developers.yubico.com/pam-u2f/ - u2f_auth_file = install_session.target / 'etc/u2f_mappings' - u2f_auth_file.touch() - existing_keys = u2f_auth_file.read_text() - - registered_keys: list[str] = [] - - for user in users: - Tui.print('') - Tui.print(tr('Setting up U2F device for user: {}').format(user.username)) - Tui.print(tr('You may need to enter the PIN and then touch your U2F device to register it')) - - cmd = ' '.join( - ['arch-chroot', '-S', str(install_session.target), 'pamu2fcfg', '-u', user.username, '-o', f'pam://{hostname}', '-i', f'pam://{hostname}'] - ) - - debug(f'Enrolling U2F device: {cmd}') - - worker = SysCommandWorker(cmd, peek_output=True) - pin_inputted = False - - while worker.is_alive(): - if pin_inputted is False: - if bytes('enter pin for', 'UTF-8') in worker._trace_log.lower(): - worker.write(bytes(getpass.getpass(''), 'UTF-8')) - pin_inputted = True - - output = worker.decode().strip().splitlines() - debug(f'Output from pamu2fcfg: {output}') - - key = output[-1].strip() - registered_keys.append(key) - - all_keys = '\n'.join(registered_keys) - - if existing_keys: - existing_keys += f'\n{all_keys}' - else: - existing_keys = all_keys - - u2f_auth_file.write_text(existing_keys) - - -auth_handler = AuthenticationHandler() diff --git a/examples/archinstall/archinstall/lib/authentication/authentication_menu.py b/examples/archinstall/archinstall/lib/authentication/authentication_menu.py deleted file mode 100644 index 2926e9c..0000000 --- a/examples/archinstall/archinstall/lib/authentication/authentication_menu.py +++ /dev/null @@ -1,159 +0,0 @@ -from typing import override - -from archinstall.lib.disk.fido import Fido2 -from archinstall.lib.interactions.manage_users_conf import ask_for_additional_users -from archinstall.lib.menu.abstract_menu import AbstractSubMenu -from archinstall.lib.models.authentication import AuthenticationConfiguration, U2FLoginConfiguration, U2FLoginMethod -from archinstall.lib.models.users import Password, User -from archinstall.lib.output import FormattedOutput -from archinstall.lib.translationhandler import tr -from archinstall.lib.utils.util import get_password -from archinstall.tui.curses_menu import SelectMenu -from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.result import ResultType -from archinstall.tui.types import Alignment, FrameProperties, Orientation - - -class AuthenticationMenu(AbstractSubMenu[AuthenticationConfiguration]): - def __init__(self, preset: AuthenticationConfiguration | None = None): - if preset: - self._auth_config = preset - else: - self._auth_config = AuthenticationConfiguration() - - menu_optioons = self._define_menu_options() - self._item_group = MenuItemGroup(menu_optioons, checkmarks=True) - - super().__init__( - self._item_group, - config=self._auth_config, - allow_reset=True, - ) - - @override - def run(self, additional_title: str | None = None) -> AuthenticationConfiguration: - super().run(additional_title=additional_title) - return self._auth_config - - def _define_menu_options(self) -> list[MenuItem]: - return [ - MenuItem( - text=tr('Root password'), - action=select_root_password, - preview_action=self._prev_root_pwd, - key='root_enc_password', - ), - MenuItem( - text=tr('User account'), - action=self._create_user_account, - preview_action=self._prev_users, - key='users', - ), - MenuItem( - text=tr('U2F login setup'), - action=select_u2f_login, - value=self._auth_config.u2f_config, - preview_action=self._prev_u2f_login, - key='u2f_config', - ), - ] - - def _create_user_account(self, preset: list[User] | None = None) -> list[User]: - preset = [] if preset is None else preset - users = ask_for_additional_users(defined_users=preset) - return users - - def _prev_users(self, item: MenuItem) -> str | None: - users: list[User] | None = item.value - - if users: - return FormattedOutput.as_table(users) - return None - - def _prev_root_pwd(self, item: MenuItem) -> str | None: - if item.value is not None: - password: Password = item.value - return f'{tr("Root password")}: {password.hidden()}' - return None - - def _depends_on_u2f(self) -> bool: - devices = Fido2.get_fido2_devices() - if not devices: - return False - return True - - def _prev_u2f_login(self, item: MenuItem) -> str | None: - if item.value is not None: - u2f_config: U2FLoginConfiguration = item.value - - login_method = u2f_config.u2f_login_method.display_value() - output = tr('U2F login method: ') + login_method - - output += '\n' - output += tr('Passwordless sudo: ') + (tr('Enabled') if u2f_config.passwordless_sudo else tr('Disabled')) - - return output - - devices = Fido2.get_fido2_devices() - if not devices: - return tr('No U2F devices found') - - return None - - -def select_root_password(preset: str | None = None) -> Password | None: - password = get_password(text=tr('Root password'), allow_skip=True) - return password - - -def select_u2f_login(preset: U2FLoginConfiguration) -> U2FLoginConfiguration | None: - devices = Fido2.get_fido2_devices() - if not devices: - return None - - items = [] - for method in U2FLoginMethod: - items.append(MenuItem(method.display_value(), value=method)) - - group = MenuItemGroup(items) - - if preset is not None: - group.set_selected_by_value(preset.u2f_login_method) - - result = SelectMenu[U2FLoginMethod]( - group, - alignment=Alignment.CENTER, - frame=FrameProperties.min(tr('U2F Login Method')), - allow_skip=True, - allow_reset=True, - ).run() - - match result.type_: - case ResultType.Selection: - u2f_method = result.get_value() - - group = MenuItemGroup.yes_no() - group.focus_item = MenuItem.no() - header = tr('Enable passwordless sudo?') - - result_sudo = SelectMenu[bool]( - group, - header=header, - alignment=Alignment.CENTER, - columns=2, - orientation=Orientation.HORIZONTAL, - allow_skip=True, - ).run() - - passwordless_sudo = result_sudo.item() == MenuItem.yes() - - return U2FLoginConfiguration( - u2f_login_method=u2f_method, - passwordless_sudo=passwordless_sudo, - ) - case ResultType.Skip: - return preset - case ResultType.Reset: - return None - case _: - raise ValueError('Unhandled result type') diff --git a/examples/archinstall/archinstall/lib/boot.py b/examples/archinstall/archinstall/lib/boot.py deleted file mode 100644 index 8faf355..0000000 --- a/examples/archinstall/archinstall/lib/boot.py +++ /dev/null @@ -1,116 +0,0 @@ -import time -from collections.abc import Iterator -from types import TracebackType - -from .exceptions import SysCallError -from .general import SysCommand, SysCommandWorker, locate_binary -from .installer import Installer -from .output import error -from .storage import storage - - -class Boot: - def __init__(self, installation: Installer): - self.instance = installation - self.container_name = 'archinstall' - self.session: SysCommandWorker | None = None - self.ready = False - - def __enter__(self) -> 'Boot': - if (existing_session := storage.get('active_boot', None)) and existing_session.instance != self.instance: - raise KeyError('Archinstall only supports booting up one instance and another session is already active.') - - if existing_session: - self.session = existing_session.session - self.ready = existing_session.ready - else: - # '-P' or --console=pipe could help us not having to do a bunch - # of os.write() calls, but instead use pipes (stdin, stdout and stderr) as usual. - self.session = SysCommandWorker( - [ - 'systemd-nspawn', - '-D', - str(self.instance.target), - '--timezone=off', - '-b', - '--no-pager', - '--machine', - self.container_name, - ] - ) - - if not self.ready and self.session: - while self.session.is_alive(): - if b' login:' in self.session: - self.ready = True - break - - storage['active_boot'] = self - return self - - def __exit__(self, exc_type: type[BaseException] | None, exc_value: BaseException | None, traceback: TracebackType | None) -> None: - # b''.join(sys_command('sync')) # No need to, since the underlying fs() object will call sync. - # TODO: https://stackoverflow.com/questions/28157929/how-to-safely-handle-an-exception-inside-a-context-manager - - if exc_type is not None: - error( - str(exc_value), - f'The error above occurred in a temporary boot-up of the installation {self.instance}', - ) - - shutdown = None - shutdown_exit_code: int | None = -1 - - try: - shutdown = SysCommand(f'systemd-run --machine={self.container_name} --pty shutdown now') - except SysCallError as err: - shutdown_exit_code = err.exit_code - - if self.session: - while self.session.is_alive(): - time.sleep(0.25) - - if shutdown and shutdown.exit_code: - shutdown_exit_code = shutdown.exit_code - - if self.session and (self.session.exit_code == 0 or shutdown_exit_code == 0): - storage['active_boot'] = None - else: - session_exit_code = self.session.exit_code if self.session else -1 - - raise SysCallError( - f'Could not shut down temporary boot of {self.instance}: {session_exit_code}/{shutdown_exit_code}', - exit_code=next(filter(bool, [session_exit_code, shutdown_exit_code])), - ) - - def __iter__(self) -> Iterator[bytes]: - if self.session: - yield from self.session - - def __contains__(self, key: bytes) -> bool: - if self.session is None: - return False - - return key in self.session - - def is_alive(self) -> bool: - if self.session is None: - return False - - return self.session.is_alive() - - def SysCommand(self, cmd: list[str], *args, **kwargs) -> SysCommand: # type: ignore[no-untyped-def] - if cmd[0][0] != '/' and cmd[0][:2] != './': - # This check is also done in SysCommand & SysCommandWorker. - # However, that check is done for `machinectl` and not for our chroot command. - # So this wrapper for SysCommand will do this additionally. - - cmd[0] = locate_binary(cmd[0]) - - return SysCommand(['systemd-run', f'--machine={self.container_name}', '--pty', *cmd], *args, **kwargs) - - def SysCommandWorker(self, cmd: list[str], *args, **kwargs) -> SysCommandWorker: # type: ignore[no-untyped-def] - if cmd[0][0] != '/' and cmd[0][:2] != './': - cmd[0] = locate_binary(cmd[0]) - - return SysCommandWorker(['systemd-run', f'--machine={self.container_name}', '--pty', *cmd], *args, **kwargs) diff --git a/examples/archinstall/archinstall/lib/configuration.py b/examples/archinstall/archinstall/lib/configuration.py deleted file mode 100644 index 63b68b9..0000000 --- a/examples/archinstall/archinstall/lib/configuration.py +++ /dev/null @@ -1,244 +0,0 @@ -import json -import readline -import stat -from pathlib import Path - -from archinstall.lib.translationhandler import tr -from archinstall.tui.curses_menu import SelectMenu, Tui -from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.result import ResultType -from archinstall.tui.types import Alignment, FrameProperties, Orientation, PreviewStyle - -from .args import ArchConfig -from .crypt import encrypt -from .general import JSON, UNSAFE_JSON -from .output import debug, logger, warn -from .utils.util import get_password, prompt_dir - - -class ConfigurationOutput: - def __init__(self, config: ArchConfig): - """ - Configuration output handler to parse the existing - configuration data structure and prepare for output on the - console and for saving it to configuration files - - :param config: Archinstall configuration object - :type config: ArchConfig - """ - - self._config = config - self._default_save_path = logger.directory - self._user_config_file = Path('user_configuration.json') - self._user_creds_file = Path('user_credentials.json') - - @property - def user_configuration_file(self) -> Path: - return self._user_config_file - - @property - def user_credentials_file(self) -> Path: - return self._user_creds_file - - def user_config_to_json(self) -> str: - out = self._config.safe_json() - return json.dumps(out, indent=4, sort_keys=True, cls=JSON) - - def user_credentials_to_json(self) -> str: - out = self._config.unsafe_json() - return json.dumps(out, indent=4, sort_keys=True, cls=UNSAFE_JSON) - - def write_debug(self) -> None: - debug(' -- Chosen configuration --') - debug(self.user_config_to_json()) - - def confirm_config(self) -> bool: - header = f'{tr("The specified configuration will be applied")}. ' - header += tr('Would you like to continue?') + '\n' - - with Tui(): - group = MenuItemGroup.yes_no() - group.focus_item = MenuItem.yes() - group.set_preview_for_all(lambda x: self.user_config_to_json()) - - result = SelectMenu[bool]( - group, - header=header, - alignment=Alignment.CENTER, - columns=2, - orientation=Orientation.HORIZONTAL, - allow_skip=False, - preview_size='auto', - preview_style=PreviewStyle.BOTTOM, - preview_frame=FrameProperties.max(tr('Configuration')), - ).run() - - if result.item() != MenuItem.yes(): - return False - - return True - - def _is_valid_path(self, dest_path: Path) -> bool: - dest_path_ok = dest_path.exists() and dest_path.is_dir() - if not dest_path_ok: - warn( - f'Destination directory {dest_path.resolve()} does not exist or is not a directory\n.', - 'Configuration files can not be saved', - ) - return dest_path_ok - - def save_user_config(self, dest_path: Path) -> None: - if self._is_valid_path(dest_path): - target = dest_path / self._user_config_file - target.write_text(self.user_config_to_json()) - target.chmod(stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP) - - def save_user_creds( - self, - dest_path: Path, - password: str | None = None, - ) -> None: - data = self.user_credentials_to_json() - - if password: - data = encrypt(password, data) - - if self._is_valid_path(dest_path): - target = dest_path / self._user_creds_file - target.write_text(data) - target.chmod(stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP) - - def save( - self, - dest_path: Path | None = None, - creds: bool = False, - password: str | None = None, - ) -> None: - save_path = dest_path or self._default_save_path - - if self._is_valid_path(save_path): - self.save_user_config(save_path) - if creds: - self.save_user_creds(save_path, password=password) - - -def save_config(config: ArchConfig) -> None: - def preview(item: MenuItem) -> str | None: - match item.value: - case 'user_config': - serialized = config_output.user_config_to_json() - return f'{config_output.user_configuration_file}\n{serialized}' - case 'user_creds': - if maybe_serial := config_output.user_credentials_to_json(): - return f'{config_output.user_credentials_file}\n{maybe_serial}' - return tr('No configuration') - case 'all': - output = [str(config_output.user_configuration_file)] - config_output.user_credentials_to_json() - output.append(str(config_output.user_credentials_file)) - return '\n'.join(output) - return None - - config_output = ConfigurationOutput(config) - - items = [ - MenuItem( - tr('Save user configuration (including disk layout)'), - value='user_config', - preview_action=preview, - ), - MenuItem( - tr('Save user credentials'), - value='user_creds', - preview_action=preview, - ), - MenuItem( - tr('Save all'), - value='all', - preview_action=preview, - ), - ] - - group = MenuItemGroup(items) - result = SelectMenu[str]( - group, - allow_skip=True, - preview_frame=FrameProperties.max(tr('Configuration')), - preview_size='auto', - preview_style=PreviewStyle.RIGHT, - ).run() - - match result.type_: - case ResultType.Skip: - return - case ResultType.Selection: - save_option = result.get_value() - case _: - raise ValueError('Unhandled return type') - - readline.set_completer_delims('\t\n=') - readline.parse_and_bind('tab: complete') - - dest_path = prompt_dir( - tr('Directory'), - tr('Enter a directory for the configuration(s) to be saved (tab completion enabled)') + '\n', - allow_skip=True, - ) - - if not dest_path: - return - - header = tr('Do you want to save the configuration file(s) to {}?').format(dest_path) - - group = MenuItemGroup.yes_no() - group.focus_item = MenuItem.yes() - - result = SelectMenu( - group, - header=header, - allow_skip=False, - alignment=Alignment.CENTER, - columns=2, - orientation=Orientation.HORIZONTAL, - ).run() - - match result.type_: - case ResultType.Selection: - if result.item() == MenuItem.no(): - return - - debug(f'Saving configuration files to {dest_path.absolute()}') - - header = tr('Do you want to encrypt the user_credentials.json file?') - - group = MenuItemGroup.yes_no() - group.focus_item = MenuItem.no() - - result = SelectMenu( - group, - header=header, - allow_skip=False, - alignment=Alignment.CENTER, - columns=2, - orientation=Orientation.HORIZONTAL, - ).run() - - enc_password: str | None = None - match result.type_: - case ResultType.Selection: - if result.item() == MenuItem.yes(): - password = get_password( - text=tr('Credentials file encryption password'), - allow_skip=True, - ) - - if password: - enc_password = password.plaintext - - match save_option: - case 'user_config': - config_output.save_user_config(dest_path) - case 'user_creds': - config_output.save_user_creds(dest_path, password=enc_password) - case 'all': - config_output.save(dest_path, creds=True, password=enc_password) diff --git a/examples/archinstall/archinstall/lib/crypt.py b/examples/archinstall/archinstall/lib/crypt.py deleted file mode 100644 index cbf46b3..0000000 --- a/examples/archinstall/archinstall/lib/crypt.py +++ /dev/null @@ -1,125 +0,0 @@ -import base64 -import ctypes -import os -from pathlib import Path - -from cryptography.fernet import Fernet, InvalidToken -from cryptography.hazmat.primitives.kdf.argon2 import Argon2id - -from .output import debug - -libcrypt = ctypes.CDLL('libcrypt.so') - -libcrypt.crypt.argtypes = [ctypes.c_char_p, ctypes.c_char_p] -libcrypt.crypt.restype = ctypes.c_char_p - -libcrypt.crypt_gensalt.argtypes = [ctypes.c_char_p, ctypes.c_ulong, ctypes.c_char_p, ctypes.c_int] -libcrypt.crypt_gensalt.restype = ctypes.c_char_p - -LOGIN_DEFS = Path('/etc/login.defs') - - -def _search_login_defs(key: str) -> str | None: - defs = LOGIN_DEFS.read_text() - for line in defs.split('\n'): - line = line.strip() - - if line.startswith('#'): - continue - - if line.startswith(key): - value = line.split(' ')[1] - return value - - return None - - -def crypt_gen_salt(prefix: str | bytes, rounds: int) -> bytes: - if isinstance(prefix, str): - prefix = prefix.encode('utf-8') - - setting = libcrypt.crypt_gensalt(prefix, rounds, None, 0) - - if setting is None: - raise ValueError(f'crypt_gensalt() returned NULL for prefix {prefix!r} and rounds {rounds}') - - return setting - - -def crypt_yescrypt(plaintext: str) -> str: - """ - By default chpasswd in Arch uses PAM to to hash the password with crypt_yescrypt - the PAM code https://github.com/linux-pam/linux-pam/blob/master/modules/pam_unix/support.c - shows that the hashing rounds are determined from YESCRYPT_COST_FACTOR in /etc/login.defs - If no value was specified (or commented out) a default of 5 is choosen - """ - value = _search_login_defs('YESCRYPT_COST_FACTOR') - if value is not None: - rounds = int(value) - if rounds < 3: - rounds = 3 - elif rounds > 11: - rounds = 11 - else: - rounds = 5 - - debug(f'Creating yescrypt hash with rounds {rounds}') - - enc_plaintext = plaintext.encode('utf-8') - salt = crypt_gen_salt('$y$', rounds) - - crypt_hash = libcrypt.crypt(enc_plaintext, salt) - - if crypt_hash is None: - raise ValueError('crypt() returned NULL') - - return crypt_hash.decode('utf-8') - - -def _get_fernet(salt: bytes, password: str) -> Fernet: - # https://cryptography.io/en/latest/hazmat/primitives/key-derivation-functions/#argon2id - kdf = Argon2id( - salt=salt, - length=32, - iterations=1, - lanes=4, - memory_cost=64 * 1024, - ad=None, - secret=None, - ) - - key = base64.urlsafe_b64encode( - kdf.derive( - password.encode('utf-8'), - ), - ) - - return Fernet(key) - - -def encrypt(password: str, data: str) -> str: - salt = os.urandom(16) - f = _get_fernet(salt, password) - token = f.encrypt(data.encode('utf-8')) - - encoded_token = base64.urlsafe_b64encode(token).decode('utf-8') - encoded_salt = base64.urlsafe_b64encode(salt).decode('utf-8') - - return f'$argon2id${encoded_salt}${encoded_token}' - - -def decrypt(data: str, password: str) -> str: - _, algo, encoded_salt, encoded_token = data.split('$') - salt = base64.urlsafe_b64decode(encoded_salt) - token = base64.urlsafe_b64decode(encoded_token) - - if algo != 'argon2id': - raise ValueError(f'Unsupported algorithm {algo!r}') - - f = _get_fernet(salt, password) - try: - decrypted = f.decrypt(token) - except InvalidToken: - raise ValueError('Invalid password') - - return decrypted.decode('utf-8') diff --git a/examples/archinstall/archinstall/lib/disk/__init__.py b/examples/archinstall/archinstall/lib/disk/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/examples/archinstall/archinstall/lib/disk/device_handler.py b/examples/archinstall/archinstall/lib/disk/device_handler.py deleted file mode 100644 index 5c6b350..0000000 --- a/examples/archinstall/archinstall/lib/disk/device_handler.py +++ /dev/null @@ -1,851 +0,0 @@ -from __future__ import annotations - -import json -import logging -import os -import time -from collections.abc import Iterable -from pathlib import Path -from typing import Literal, overload - -from parted import Device, Disk, DiskException, FileSystem, Geometry, IOException, Partition, PartitionException, freshDisk, getAllDevices, getDevice, newDisk - -from ..exceptions import DiskError, SysCallError, UnknownFilesystemFormat -from ..general import SysCommand, SysCommandWorker -from ..luks import Luks2 -from ..models.device import ( - DEFAULT_ITER_TIME, - BDevice, - BtrfsMountOption, - DeviceModification, - DiskEncryption, - FilesystemType, - LsblkInfo, - LvmGroupInfo, - LvmPVInfo, - LvmVolume, - LvmVolumeGroup, - LvmVolumeInfo, - ModificationStatus, - PartitionFlag, - PartitionGUID, - PartitionModification, - PartitionTable, - SectorSize, - Size, - SubvolumeModification, - Unit, - _BtrfsSubvolumeInfo, - _DeviceInfo, - _PartitionInfo, -) -from ..models.users import Password -from ..output import debug, error, info, log -from ..utils.util import is_subpath -from .utils import ( - find_lsblk_info, - get_all_lsblk_info, - get_lsblk_info, - umount, -) - - -class DeviceHandler: - _TMP_BTRFS_MOUNT = Path('/mnt/arch_btrfs') - - def __init__(self) -> None: - self._devices: dict[Path, BDevice] = {} - self._partition_table = PartitionTable.default() - self.load_devices() - - @property - def devices(self) -> list[BDevice]: - return list(self._devices.values()) - - @property - def partition_table(self) -> PartitionTable: - return self._partition_table - - def load_devices(self) -> None: - block_devices = {} - - self.udev_sync() - all_lsblk_info = get_all_lsblk_info() - devices = getAllDevices() - devices.extend(self.get_loop_devices()) - - archiso_mountpoint = Path('/run/archiso/airootfs') - - for device in devices: - dev_lsblk_info = find_lsblk_info(device.path, all_lsblk_info) - - if not dev_lsblk_info: - debug(f'Device lsblk info not found: {device.path}') - continue - - if dev_lsblk_info.type == 'rom': - continue - - # exclude archiso loop device - if dev_lsblk_info.mountpoint == archiso_mountpoint: - continue - - try: - if dev_lsblk_info.pttype: - disk = newDisk(device) - else: - disk = freshDisk(device, self.partition_table.value) - except DiskException as err: - debug(f'Unable to get disk from {device.path}: {err}') - continue - - device_info = _DeviceInfo.from_disk(disk) - partition_infos = [] - - for partition in disk.partitions: - lsblk_info = find_lsblk_info(partition.path, dev_lsblk_info.children) - - if not lsblk_info: - debug(f'Partition lsblk info not found: {partition.path}') - continue - - fs_type = self._determine_fs_type(partition, lsblk_info) - subvol_infos = [] - - if fs_type == FilesystemType.Btrfs: - subvol_infos = self.get_btrfs_info(partition.path, lsblk_info) - - partition_infos.append( - _PartitionInfo.from_partition( - partition, - lsblk_info, - fs_type, - subvol_infos, - ), - ) - - block_device = BDevice(disk, device_info, partition_infos) - block_devices[block_device.device_info.path] = block_device - - self._devices = block_devices - - @staticmethod - def get_loop_devices() -> list[Device]: - devices = [] - - try: - loop_devices = SysCommand(['losetup', '-a']) - except SysCallError as err: - debug(f'Failed to get loop devices: {err}') - else: - for ld_info in str(loop_devices).splitlines(): - try: - loop_device_path, _ = ld_info.split(':', maxsplit=1) - except ValueError: - continue - - try: - loop_device = getDevice(loop_device_path) - except IOException as err: - debug(f'Failed to get loop device: {err}') - else: - devices.append(loop_device) - - return devices - - def _determine_fs_type( - self, - partition: Partition, - lsblk_info: LsblkInfo | None = None, - ) -> FilesystemType | None: - try: - if partition.fileSystem: - if partition.fileSystem.type == FilesystemType.LinuxSwap.parted_value: - return FilesystemType.LinuxSwap - return FilesystemType(partition.fileSystem.type) - elif lsblk_info is not None: - return FilesystemType(lsblk_info.fstype) if lsblk_info.fstype else None - return None - except ValueError: - debug(f'Could not determine the filesystem: {partition.fileSystem}') - - return None - - def get_device(self, path: Path) -> BDevice | None: - return self._devices.get(path, None) - - def get_device_by_partition_path(self, partition_path: Path) -> BDevice | None: - partition = self.find_partition(partition_path) - if partition: - device: Device = partition.disk.device - return self.get_device(Path(device.path)) - return None - - def find_partition(self, path: Path) -> _PartitionInfo | None: - for device in self._devices.values(): - part = next(filter(lambda x: str(x.path) == str(path), device.partition_infos), None) - if part is not None: - return part - return None - - def get_parent_device_path(self, dev_path: Path) -> Path: - lsblk = get_lsblk_info(dev_path) - return Path(f'/dev/{lsblk.pkname}') - - def get_unique_path_for_device(self, dev_path: Path) -> Path | None: - paths = Path('/dev/disk/by-id').glob('*') - linked_targets = {p.resolve(): p for p in paths} - linked_wwn_targets = {p: linked_targets[p] for p in linked_targets if p.name.startswith('wwn-') or p.name.startswith('nvme-eui.')} - - if dev_path in linked_wwn_targets: - return linked_wwn_targets[dev_path] - - if dev_path in linked_targets: - return linked_targets[dev_path] - - return None - - def get_uuid_for_path(self, path: Path) -> str | None: - partition = self.find_partition(path) - return partition.partuuid if partition else None - - def get_btrfs_info( - self, - dev_path: Path, - lsblk_info: LsblkInfo | None = None, - ) -> list[_BtrfsSubvolumeInfo]: - if not lsblk_info: - lsblk_info = get_lsblk_info(dev_path) - - subvol_infos: list[_BtrfsSubvolumeInfo] = [] - - if not lsblk_info.mountpoint: - self.mount(dev_path, self._TMP_BTRFS_MOUNT, create_target_mountpoint=True) - mountpoint = self._TMP_BTRFS_MOUNT - else: - # when multiple subvolumes are mounted then the lsblk output may look like - # "mountpoint": "/mnt/archinstall/var/log" - # "mountpoints": ["/mnt/archinstall/var/log", "/mnt/archinstall/home", ..] - # so we'll determine the minimum common path and assume that's the root - try: - common_path = os.path.commonpath(lsblk_info.mountpoints) - except ValueError: - return subvol_infos - - mountpoint = Path(common_path) - - try: - result = SysCommand(f'btrfs subvolume list {mountpoint}').decode() - except SysCallError as err: - debug(f'Failed to read btrfs subvolume information: {err}') - return subvol_infos - - # It is assumed that lsblk will contain the fields as - # "mountpoints": ["/mnt/archinstall/log", "/mnt/archinstall/home", "/mnt/archinstall", ...] - # "fsroots": ["/@log", "/@home", "/@"...] - # we'll thereby map the fsroot, which are the mounted filesystem roots - # to the corresponding mountpoints - btrfs_subvol_info = dict(zip(lsblk_info.fsroots, lsblk_info.mountpoints)) - - # ID 256 gen 16 top level 5 path @ - for line in result.splitlines(): - # expected output format: - # ID 257 gen 8 top level 5 path @home - name = Path(line.split(' ')[-1]) - sub_vol_mountpoint = btrfs_subvol_info.get('/' / name, None) - subvol_infos.append(_BtrfsSubvolumeInfo(name, sub_vol_mountpoint)) - - if not lsblk_info.mountpoint: - umount(dev_path) - - return subvol_infos - - def format( - self, - fs_type: FilesystemType, - path: Path, - additional_parted_options: list[str] = [], - ) -> None: - mkfs_type = fs_type.value - command = None - options = [] - - match fs_type: - case FilesystemType.Btrfs | FilesystemType.Xfs: - # Force overwrite - options.append('-f') - case FilesystemType.F2fs: - options.append('-f') - options.extend(('-O', 'extra_attr')) - case FilesystemType.Ext2 | FilesystemType.Ext3 | FilesystemType.Ext4: - # Force create - options.append('-F') - case FilesystemType.Fat12 | FilesystemType.Fat16 | FilesystemType.Fat32: - mkfs_type = 'fat' - # Set FAT size - options.extend(('-F', fs_type.value.removeprefix(mkfs_type))) - case FilesystemType.Ntfs: - # Skip zeroing and bad sector check - options.append('--fast') - case FilesystemType.LinuxSwap: - command = 'mkswap' - case _: - raise UnknownFilesystemFormat(f'Filetype "{fs_type.value}" is not supported') - - if not command: - command = f'mkfs.{mkfs_type}' - - cmd = [command, *options, *additional_parted_options, str(path)] - - debug('Formatting filesystem:', ' '.join(cmd)) - - try: - SysCommand(cmd) - except SysCallError as err: - msg = f'Could not format {path} with {fs_type.value}: {err.message}' - error(msg) - raise DiskError(msg) from err - - def encrypt( - self, - dev_path: Path, - mapper_name: str | None, - enc_password: Password | None, - lock_after_create: bool = True, - iter_time: int = DEFAULT_ITER_TIME, - ) -> Luks2: - luks_handler = Luks2( - dev_path, - mapper_name=mapper_name, - password=enc_password, - ) - - key_file = luks_handler.encrypt(iter_time=iter_time) - - self.udev_sync() - - luks_handler.unlock(key_file=key_file) - - if not luks_handler.mapper_dev: - raise DiskError('Failed to unlock luks device') - - if lock_after_create: - debug(f'luks2 locking device: {dev_path}') - luks_handler.lock() - - return luks_handler - - def format_encrypted( - self, - dev_path: Path, - mapper_name: str | None, - fs_type: FilesystemType, - enc_conf: DiskEncryption, - ) -> None: - if not enc_conf.encryption_password: - raise ValueError('No encryption password provided') - - luks_handler = Luks2( - dev_path, - mapper_name=mapper_name, - password=enc_conf.encryption_password, - ) - - key_file = luks_handler.encrypt(iter_time=enc_conf.iter_time) - - self.udev_sync() - - luks_handler.unlock(key_file=key_file) - - if not luks_handler.mapper_dev: - raise DiskError('Failed to unlock luks device') - - info(f'luks2 formatting mapper dev: {luks_handler.mapper_dev}') - self.format(fs_type, luks_handler.mapper_dev) - - info(f'luks2 locking device: {dev_path}') - luks_handler.lock() - - def _lvm_info( - self, - cmd: str, - info_type: Literal['lv', 'vg', 'pvseg'], - ) -> LvmVolumeInfo | LvmGroupInfo | LvmPVInfo | None: - raw_info = SysCommand(cmd).decode().split('\n') - - # for whatever reason the output sometimes contains - # "File descriptor X leaked leaked on vgs invocation - data = '\n'.join([raw for raw in raw_info if 'File descriptor' not in raw]) - - debug(f'LVM info: {data}') - - reports = json.loads(data) - - for report in reports['report']: - if len(report[info_type]) != 1: - raise ValueError('Report does not contain any entry') - - entry = report[info_type][0] - - match info_type: - case 'pvseg': - return LvmPVInfo( - pv_name=Path(entry['pv_name']), - lv_name=entry['lv_name'], - vg_name=entry['vg_name'], - ) - case 'lv': - return LvmVolumeInfo( - lv_name=entry['lv_name'], - vg_name=entry['vg_name'], - lv_size=Size(int(entry['lv_size'][:-1]), Unit.B, SectorSize.default()), - ) - case 'vg': - return LvmGroupInfo( - vg_uuid=entry['vg_uuid'], - vg_size=Size(int(entry['vg_size'][:-1]), Unit.B, SectorSize.default()), - ) - - return None - - @overload - def _lvm_info_with_retry(self, cmd: str, info_type: Literal['lv']) -> LvmVolumeInfo | None: ... - - @overload - def _lvm_info_with_retry(self, cmd: str, info_type: Literal['vg']) -> LvmGroupInfo | None: ... - - @overload - def _lvm_info_with_retry(self, cmd: str, info_type: Literal['pvseg']) -> LvmPVInfo | None: ... - - def _lvm_info_with_retry( - self, - cmd: str, - info_type: Literal['lv', 'vg', 'pvseg'], - ) -> LvmVolumeInfo | LvmGroupInfo | LvmPVInfo | None: - while True: - try: - return self._lvm_info(cmd, info_type) - except ValueError: - time.sleep(3) - - def lvm_vol_info(self, lv_name: str) -> LvmVolumeInfo | None: - cmd = f'lvs --reportformat json --unit B -S lv_name={lv_name}' - - return self._lvm_info_with_retry(cmd, 'lv') - - def lvm_group_info(self, vg_name: str) -> LvmGroupInfo | None: - cmd = f'vgs --reportformat json --unit B -o vg_name,vg_uuid,vg_size -S vg_name={vg_name}' - - return self._lvm_info_with_retry(cmd, 'vg') - - def lvm_pvseg_info(self, vg_name: str, lv_name: str) -> LvmPVInfo | None: - cmd = f'pvs --segments -o+lv_name,vg_name -S vg_name={vg_name},lv_name={lv_name} --reportformat json ' - - return self._lvm_info_with_retry(cmd, 'pvseg') - - def lvm_vol_change(self, vol: LvmVolume, activate: bool) -> None: - active_flag = 'y' if activate else 'n' - cmd = f'lvchange -a {active_flag} {vol.safe_dev_path}' - - debug(f'lvchange volume: {cmd}') - SysCommand(cmd) - - def lvm_export_vg(self, vg: LvmVolumeGroup) -> None: - cmd = f'vgexport {vg.name}' - - debug(f'vgexport: {cmd}') - SysCommand(cmd) - - def lvm_import_vg(self, vg: LvmVolumeGroup) -> None: - cmd = f'vgimport {vg.name}' - - debug(f'vgimport: {cmd}') - SysCommand(cmd) - - def lvm_vol_reduce(self, vol_path: Path, amount: Size) -> None: - val = amount.format_size(Unit.B, include_unit=False) - cmd = f'lvreduce -L -{val}B {vol_path}' - - debug(f'Reducing LVM volume size: {cmd}') - SysCommand(cmd) - - def lvm_pv_create(self, pvs: Iterable[Path]) -> None: - cmd = 'pvcreate ' + ' '.join([str(pv) for pv in pvs]) - debug(f'Creating LVM PVS: {cmd}') - - worker = SysCommandWorker(cmd) - worker.poll() - worker.write(b'y\n', line_ending=False) - - def lvm_vg_create(self, pvs: Iterable[Path], vg_name: str) -> None: - pvs_str = ' '.join([str(pv) for pv in pvs]) - cmd = f'vgcreate --yes {vg_name} {pvs_str}' - - debug(f'Creating LVM group: {cmd}') - - worker = SysCommandWorker(cmd) - worker.poll() - worker.write(b'y\n', line_ending=False) - - def lvm_vol_create(self, vg_name: str, volume: LvmVolume, offset: Size | None = None) -> None: - if offset is not None: - length = volume.length - offset - else: - length = volume.length - - length_str = length.format_size(Unit.B, include_unit=False) - cmd = f'lvcreate --yes -L {length_str}B {vg_name} -n {volume.name}' - - debug(f'Creating volume: {cmd}') - - worker = SysCommandWorker(cmd) - worker.poll() - worker.write(b'y\n', line_ending=False) - - volume.vg_name = vg_name - volume.dev_path = Path(f'/dev/{vg_name}/{volume.name}') - - def _setup_partition( - self, - part_mod: PartitionModification, - block_device: BDevice, - disk: Disk, - requires_delete: bool, - ) -> None: - # when we require a delete and the partition to be (re)created - # already exists then we have to delete it first - if requires_delete and part_mod.status in [ModificationStatus.Modify, ModificationStatus.Delete]: - info(f'Delete existing partition: {part_mod.safe_dev_path}') - part_info = self.find_partition(part_mod.safe_dev_path) - - if not part_info: - raise DiskError(f'No partition for dev path found: {part_mod.safe_dev_path}') - - disk.deletePartition(part_info.partition) - - if part_mod.status == ModificationStatus.Delete: - return - - start_sector = part_mod.start.convert( - Unit.sectors, - block_device.device_info.sector_size, - ) - - length_sector = part_mod.length.convert( - Unit.sectors, - block_device.device_info.sector_size, - ) - - geometry = Geometry( - device=block_device.disk.device, - start=start_sector.value, - length=length_sector.value, - ) - - fs_value = part_mod.safe_fs_type.parted_value - filesystem = FileSystem(type=fs_value, geometry=geometry) - - partition = Partition( - disk=disk, - type=part_mod.type.get_partition_code(), - fs=filesystem, - geometry=geometry, - ) - - for flag in part_mod.flags: - partition.setFlag(flag.flag_id) - - debug(f'\tType: {part_mod.type.value}') - debug(f'\tFilesystem: {fs_value}') - debug(f'\tGeometry: {start_sector.value} start sector, {length_sector.value} length') - - try: - disk.addPartition(partition=partition, constraint=disk.device.optimalAlignedConstraint) - except PartitionException as ex: - raise DiskError(f'Unable to add partition, most likely due to overlapping sectors: {ex}') from ex - - if disk.type == PartitionTable.GPT.value: - if part_mod.is_root(): - partition.type_uuid = PartitionGUID.LINUX_ROOT_X86_64.bytes - elif PartitionFlag.LINUX_HOME not in part_mod.flags and part_mod.is_home(): - partition.setFlag(PartitionFlag.LINUX_HOME.flag_id) - - # the partition has a path now that it has been added - part_mod.dev_path = Path(partition.path) - - def fetch_part_info(self, path: Path) -> LsblkInfo: - lsblk_info = get_lsblk_info(path) - - if not lsblk_info.partn: - debug(f'Unable to determine new partition number: {path}\n{lsblk_info}') - raise DiskError(f'Unable to determine new partition number: {path}') - - if not lsblk_info.partuuid: - debug(f'Unable to determine new partition uuid: {path}\n{lsblk_info}') - raise DiskError(f'Unable to determine new partition uuid: {path}') - - if not lsblk_info.uuid: - debug(f'Unable to determine new uuid: {path}\n{lsblk_info}') - raise DiskError(f'Unable to determine new uuid: {path}') - - debug(f'partition information found: {lsblk_info.model_dump_json()}') - - return lsblk_info - - def create_lvm_btrfs_subvolumes( - self, - path: Path, - btrfs_subvols: list[SubvolumeModification], - mount_options: list[str], - ) -> None: - info(f'Creating subvolumes: {path}') - - self.mount(path, self._TMP_BTRFS_MOUNT, create_target_mountpoint=True) - - for sub_vol in sorted(btrfs_subvols, key=lambda x: x.name): - debug(f'Creating subvolume: {sub_vol.name}') - - subvol_path = self._TMP_BTRFS_MOUNT / sub_vol.name - - SysCommand(f'btrfs subvolume create -p {subvol_path}') - - if BtrfsMountOption.nodatacow.value in mount_options: - try: - SysCommand(f'chattr +C {subvol_path}') - except SysCallError as err: - raise DiskError(f'Could not set nodatacow attribute at {subvol_path}: {err}') - - if BtrfsMountOption.compress.value in mount_options: - try: - SysCommand(f'chattr +c {subvol_path}') - except SysCallError as err: - raise DiskError(f'Could not set compress attribute at {subvol_path}: {err}') - - umount(path) - - def create_btrfs_volumes( - self, - part_mod: PartitionModification, - enc_conf: DiskEncryption | None = None, - ) -> None: - info(f'Creating subvolumes: {part_mod.safe_dev_path}') - - # unlock the partition first if it's encrypted - if enc_conf is not None and part_mod in enc_conf.partitions: - if not part_mod.mapper_name: - raise ValueError('No device path specified for modification') - - luks_handler = self.unlock_luks2_dev( - part_mod.safe_dev_path, - part_mod.mapper_name, - enc_conf.encryption_password, - ) - - if not luks_handler.mapper_dev: - raise DiskError('Failed to unlock luks device') - - dev_path = luks_handler.mapper_dev - else: - luks_handler = None - dev_path = part_mod.safe_dev_path - - self.mount( - dev_path, - self._TMP_BTRFS_MOUNT, - create_target_mountpoint=True, - options=part_mod.mount_options, - ) - - for sub_vol in sorted(part_mod.btrfs_subvols, key=lambda x: x.name): - debug(f'Creating subvolume: {sub_vol.name}') - - subvol_path = self._TMP_BTRFS_MOUNT / sub_vol.name - - SysCommand(f'btrfs subvolume create -p {subvol_path}') - - umount(dev_path) - - if luks_handler is not None and luks_handler.mapper_dev is not None: - luks_handler.lock() - - def unlock_luks2_dev( - self, - dev_path: Path, - mapper_name: str, - enc_password: Password | None, - ) -> Luks2: - luks_handler = Luks2(dev_path, mapper_name=mapper_name, password=enc_password) - - if not luks_handler.is_unlocked(): - luks_handler.unlock() - - return luks_handler - - def umount_all_existing(self, device_path: Path) -> None: - debug(f'Unmounting all existing partitions: {device_path}') - - existing_partitions = self._devices[device_path].partition_infos - - for partition in existing_partitions: - debug(f'Unmounting: {partition.path}') - - # un-mount for existing encrypted partitions - if partition.fs_type == FilesystemType.Crypto_luks: - Luks2(partition.path).lock() - else: - umount(partition.path, recursive=True) - - def partition( - self, - modification: DeviceModification, - partition_table: PartitionTable | None = None, - ) -> None: - """ - Create a partition table on the block device and create all partitions. - """ - partition_table = partition_table or self.partition_table - - # WARNING: the entire device will be wiped and all data lost - if modification.wipe: - if partition_table.is_mbr() and len(modification.partitions) > 3: - raise DiskError('Too many partitions on disk, MBR disks can only have 3 primary partitions') - - self.wipe_dev(modification.device) - disk = freshDisk(modification.device.disk.device, partition_table.value) - else: - info(f'Use existing device: {modification.device_path}') - disk = modification.device.disk - - info(f'Creating partitions: {modification.device_path}') - - # don't touch existing partitions - filtered_part = [p for p in modification.partitions if not p.exists()] - - for part_mod in filtered_part: - # if the entire disk got nuked then we don't have to delete - # any existing partitions anymore because they're all gone already - requires_delete = modification.wipe is False - self._setup_partition(part_mod, modification.device, disk, requires_delete=requires_delete) - - disk.commit() - - @staticmethod - def swapon(path: Path) -> None: - try: - SysCommand(['swapon', str(path)]) - except SysCallError as err: - raise DiskError(f'Could not enable swap {path}:\n{err.message}') - - def mount( - self, - dev_path: Path, - target_mountpoint: Path, - mount_fs: str | None = None, - create_target_mountpoint: bool = True, - options: list[str] = [], - ) -> None: - if create_target_mountpoint and not target_mountpoint.exists(): - target_mountpoint.mkdir(parents=True, exist_ok=True) - - if not target_mountpoint.exists(): - raise ValueError('Target mountpoint does not exist') - - lsblk_info = get_lsblk_info(dev_path) - if target_mountpoint in lsblk_info.mountpoints: - info(f'Device already mounted at {target_mountpoint}') - return - - cmd = ['mount'] - - if len(options): - cmd.extend(('-o', ','.join(options))) - if mount_fs: - cmd.extend(('-t', mount_fs)) - - cmd.extend((str(dev_path), str(target_mountpoint))) - - command = ' '.join(cmd) - - debug(f'Mounting {dev_path}: {command}') - - try: - SysCommand(command) - except SysCallError as err: - raise DiskError(f'Could not mount {dev_path}: {command}\n{err.message}') - - def detect_pre_mounted_mods(self, base_mountpoint: Path) -> list[DeviceModification]: - part_mods: dict[Path, list[PartitionModification]] = {} - - for device in self.devices: - for part_info in device.partition_infos: - for mountpoint in part_info.mountpoints: - if is_subpath(mountpoint, base_mountpoint): - path = Path(part_info.disk.device.path) - part_mods.setdefault(path, []) - part_mod = PartitionModification.from_existing_partition(part_info) - if part_mod.mountpoint: - part_mod.mountpoint = mountpoint.root / mountpoint.relative_to(base_mountpoint) - else: - for subvol in part_mod.btrfs_subvols: - if sm := subvol.mountpoint: - subvol.mountpoint = sm.root / sm.relative_to(base_mountpoint) - part_mods[path].append(part_mod) - break - - device_mods: list[DeviceModification] = [] - for device_path, mods in part_mods.items(): - device_mod = DeviceModification(self._devices[device_path], False, mods) - device_mods.append(device_mod) - - return device_mods - - def partprobe(self, path: Path | None = None) -> None: - if path is not None: - command = f'partprobe {path}' - else: - command = 'partprobe' - - try: - debug(f'Calling partprobe: {command}') - SysCommand(command) - except SysCallError as err: - if 'have been written, but we have been unable to inform the kernel of the change' in str(err): - log(f'Partprobe was not able to inform the kernel of the new disk state (ignoring error): {err}', fg='gray', level=logging.INFO) - else: - error(f'"{command}" failed to run (continuing anyway): {err}') - - def _wipe(self, dev_path: Path) -> None: - """ - Wipe a device (partition or otherwise) of meta-data, be it file system, LVM, etc. - @param dev_path: Device path of the partition to be wiped. - @type dev_path: str - """ - with open(dev_path, 'wb') as p: - p.write(bytearray(1024)) - - def wipe_dev(self, block_device: BDevice) -> None: - """ - Wipe the block device of meta-data, be it file system, LVM, etc. - This is not intended to be secure, but rather to ensure that - auto-discovery tools don't recognize anything here. - """ - info(f'Wiping partitions and metadata: {block_device.device_info.path}') - - for partition in block_device.partition_infos: - luks = Luks2(partition.path) - if luks.isLuks(): - luks.erase() - - self._wipe(partition.path) - - self._wipe(block_device.device_info.path) - - @staticmethod - def udev_sync() -> None: - try: - SysCommand('udevadm settle') - except SysCallError as err: - debug(f'Failed to synchronize with udev: {err}') - - -device_handler = DeviceHandler() diff --git a/examples/archinstall/archinstall/lib/disk/disk_menu.py b/examples/archinstall/archinstall/lib/disk/disk_menu.py deleted file mode 100644 index 4a5a84b..0000000 --- a/examples/archinstall/archinstall/lib/disk/disk_menu.py +++ /dev/null @@ -1,278 +0,0 @@ -from dataclasses import dataclass -from typing import override - -from archinstall.lib.disk.encryption_menu import DiskEncryptionMenu -from archinstall.lib.models.device import ( - DEFAULT_ITER_TIME, - BtrfsOptions, - DiskEncryption, - DiskLayoutConfiguration, - DiskLayoutType, - EncryptionType, - LvmConfiguration, - SnapshotConfig, - SnapshotType, -) -from archinstall.lib.translationhandler import tr -from archinstall.tui.curses_menu import SelectMenu -from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.result import ResultType -from archinstall.tui.types import Alignment, FrameProperties - -from ..interactions.disk_conf import select_disk_config, select_lvm_config -from ..menu.abstract_menu import AbstractSubMenu -from ..output import FormattedOutput - - -@dataclass -class DiskMenuConfig: - disk_config: DiskLayoutConfiguration | None - lvm_config: LvmConfiguration | None - btrfs_snapshot_config: SnapshotConfig | None - disk_encryption: DiskEncryption | None - - -class DiskLayoutConfigurationMenu(AbstractSubMenu[DiskLayoutConfiguration]): - def __init__(self, disk_layout_config: DiskLayoutConfiguration | None): - if not disk_layout_config: - self._disk_menu_config = DiskMenuConfig( - disk_config=None, - lvm_config=None, - btrfs_snapshot_config=None, - disk_encryption=None, - ) - else: - snapshot_config = disk_layout_config.btrfs_options.snapshot_config if disk_layout_config.btrfs_options else None - - self._disk_menu_config = DiskMenuConfig( - disk_config=disk_layout_config, - lvm_config=disk_layout_config.lvm_config, - disk_encryption=disk_layout_config.disk_encryption, - btrfs_snapshot_config=snapshot_config, - ) - - menu_optioons = self._define_menu_options() - self._item_group = MenuItemGroup(menu_optioons, sort_items=False, checkmarks=True) - - super().__init__( - self._item_group, - self._disk_menu_config, - allow_reset=True, - ) - - def _define_menu_options(self) -> list[MenuItem]: - return [ - MenuItem( - text=tr('Partitioning'), - action=self._select_disk_layout_config, - value=self._disk_menu_config.disk_config, - preview_action=self._prev_disk_layouts, - key='disk_config', - ), - MenuItem( - text='LVM', - action=self._select_lvm_config, - value=self._disk_menu_config.lvm_config, - preview_action=self._prev_lvm_config, - dependencies=[self._check_dep_lvm], - key='lvm_config', - ), - MenuItem( - text=tr('Disk encryption'), - action=self._select_disk_encryption, - preview_action=self._prev_disk_encryption, - dependencies=['disk_config'], - key='disk_encryption', - ), - MenuItem( - text='Btrfs snapshots', - action=self._select_btrfs_snapshots, - value=self._disk_menu_config.btrfs_snapshot_config, - preview_action=self._prev_btrfs_snapshots, - dependencies=[self._check_dep_btrfs], - key='btrfs_snapshot_config', - ), - ] - - @override - def run(self, additional_title: str | None = None) -> DiskLayoutConfiguration | None: - super().run(additional_title=additional_title) - - if self._disk_menu_config.disk_config: - self._disk_menu_config.disk_config.lvm_config = self._disk_menu_config.lvm_config - self._disk_menu_config.disk_config.btrfs_options = BtrfsOptions(snapshot_config=self._disk_menu_config.btrfs_snapshot_config) - self._disk_menu_config.disk_config.disk_encryption = self._disk_menu_config.disk_encryption - return self._disk_menu_config.disk_config - - return None - - def _check_dep_lvm(self) -> bool: - disk_layout_conf: DiskLayoutConfiguration | None = self._menu_item_group.find_by_key('disk_config').value - - if disk_layout_conf and disk_layout_conf.config_type == DiskLayoutType.Default: - return True - - return False - - def _check_dep_btrfs(self) -> bool: - disk_layout_conf: DiskLayoutConfiguration | None = self._menu_item_group.find_by_key('disk_config').value - - if disk_layout_conf: - return disk_layout_conf.has_default_btrfs_vols() - - return False - - def _select_disk_encryption(self, preset: DiskEncryption | None) -> DiskEncryption | None: - disk_config: DiskLayoutConfiguration | None = self._item_group.find_by_key('disk_config').value - lvm_config: LvmConfiguration | None = self._item_group.find_by_key('lvm_config').value - - if not disk_config: - return preset - - modifications = disk_config.device_modifications - - if not DiskEncryption.validate_enc(modifications, lvm_config): - return None - - disk_encryption = DiskEncryptionMenu(modifications, lvm_config=lvm_config, preset=preset).run() - - return disk_encryption - - def _select_disk_layout_config(self, preset: DiskLayoutConfiguration | None) -> DiskLayoutConfiguration | None: - disk_config = select_disk_config(preset) - - if disk_config != preset: - self._menu_item_group.find_by_key('lvm_config').value = None - self._menu_item_group.find_by_key('disk_encryption').value = None - - return disk_config - - def _select_lvm_config(self, preset: LvmConfiguration | None) -> LvmConfiguration | None: - disk_config: DiskLayoutConfiguration | None = self._item_group.find_by_key('disk_config').value - - if not disk_config: - return preset - - lvm_config = select_lvm_config(disk_config, preset=preset) - - if lvm_config != preset: - self._menu_item_group.find_by_key('disk_encryption').value = None - - return lvm_config - - def _select_btrfs_snapshots(self, preset: SnapshotConfig | None) -> SnapshotConfig | None: - preset_type = preset.snapshot_type if preset else None - - group = MenuItemGroup.from_enum( - SnapshotType, - sort_items=True, - preset=preset_type, - ) - - result = SelectMenu[SnapshotType]( - group, - allow_reset=True, - allow_skip=True, - frame=FrameProperties.min(tr('Snapshot type')), - alignment=Alignment.CENTER, - ).run() - - match result.type_: - case ResultType.Skip: - return preset - case ResultType.Reset: - return None - case ResultType.Selection: - return SnapshotConfig(snapshot_type=result.get_value()) - - def _prev_disk_layouts(self, item: MenuItem) -> str | None: - if not item.value: - return None - - disk_layout_conf = item.get_value() - - if disk_layout_conf.config_type == DiskLayoutType.Pre_mount: - msg = tr('Configuration type: {}').format(disk_layout_conf.config_type.display_msg()) + '\n' - msg += tr('Mountpoint') + ': ' + str(disk_layout_conf.mountpoint) - return msg - - device_mods = [d for d in disk_layout_conf.device_modifications if d.partitions] - - if device_mods: - output_partition = '{}: {}\n'.format(tr('Configuration'), disk_layout_conf.config_type.display_msg()) - output_btrfs = '' - - for mod in device_mods: - # create partition table - partition_table = FormattedOutput.as_table(mod.partitions) - - output_partition += f'{mod.device_path}: {mod.device.device_info.model}\n' - output_partition += '{}: {}\n'.format(tr('Wipe'), mod.wipe) - output_partition += partition_table + '\n' - - # create btrfs table - btrfs_partitions = [p for p in mod.partitions if p.btrfs_subvols] - for partition in btrfs_partitions: - output_btrfs += FormattedOutput.as_table(partition.btrfs_subvols) + '\n' - - output = output_partition + output_btrfs - return output.rstrip() - - return None - - def _prev_lvm_config(self, item: MenuItem) -> str | None: - if not item.value: - return None - - lvm_config: LvmConfiguration = item.value - - output = '{}: {}\n'.format(tr('Configuration'), lvm_config.config_type.display_msg()) - - for vol_gp in lvm_config.vol_groups: - pv_table = FormattedOutput.as_table(vol_gp.pvs) - output += '{}:\n{}'.format(tr('Physical volumes'), pv_table) - - output += f'\nVolume Group: {vol_gp.name}' - - lvm_volumes = FormattedOutput.as_table(vol_gp.volumes) - output += '\n\n{}:\n{}'.format(tr('Volumes'), lvm_volumes) - - return output - - return None - - def _prev_btrfs_snapshots(self, item: MenuItem) -> str | None: - if not item.value: - return None - - snapshot_config: SnapshotConfig = item.value - return tr('Snapshot type: {}').format(snapshot_config.snapshot_type.value) - - def _prev_disk_encryption(self, item: MenuItem) -> str | None: - disk_config: DiskLayoutConfiguration | None = self._item_group.find_by_key('disk_config').value - enc_config: DiskEncryption | None = item.value - - if disk_config and not DiskEncryption.validate_enc(disk_config.device_modifications, disk_config.lvm_config): - return tr('LVM disk encryption with more than 2 partitions is currently not supported') - - if enc_config: - enc_type = enc_config.encryption_type - output = tr('Encryption type') + f': {EncryptionType.type_to_text(enc_type)}\n' - - if enc_config.encryption_password: - output += tr('Password') + f': {enc_config.encryption_password.hidden()}\n' - - if enc_type != EncryptionType.NoEncryption: - output += tr('Iteration time') + f': {enc_config.iter_time or DEFAULT_ITER_TIME}ms\n' - - if enc_config.partitions: - output += f'Partitions: {len(enc_config.partitions)} selected\n' - elif enc_config.lvm_volumes: - output += f'LVM volumes: {len(enc_config.lvm_volumes)} selected\n' - - if enc_config.hsm_device: - output += f'HSM: {enc_config.hsm_device.manufacturer}' - - return output - - return None diff --git a/examples/archinstall/archinstall/lib/disk/encryption_menu.py b/examples/archinstall/archinstall/lib/disk/encryption_menu.py deleted file mode 100644 index 9375a06..0000000 --- a/examples/archinstall/archinstall/lib/disk/encryption_menu.py +++ /dev/null @@ -1,417 +0,0 @@ -from pathlib import Path -from typing import override - -from archinstall.lib.menu.menu_helper import MenuHelper -from archinstall.lib.models.device import ( - DeviceModification, - DiskEncryption, - EncryptionType, - LvmConfiguration, - LvmVolume, - PartitionModification, -) -from archinstall.lib.translationhandler import tr -from archinstall.tui.curses_menu import EditMenu, SelectMenu -from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.result import ResultType -from archinstall.tui.types import Alignment, FrameProperties - -from ..menu.abstract_menu import AbstractSubMenu -from ..models.device import DEFAULT_ITER_TIME, Fido2Device -from ..models.users import Password -from ..output import FormattedOutput -from ..utils.util import get_password -from .fido import Fido2 - - -class DiskEncryptionMenu(AbstractSubMenu[DiskEncryption]): - def __init__( - self, - device_modifications: list[DeviceModification], - lvm_config: LvmConfiguration | None = None, - preset: DiskEncryption | None = None, - ): - if preset: - self._enc_config = preset - else: - self._enc_config = DiskEncryption() - - self._device_modifications = device_modifications - self._lvm_config = lvm_config - - menu_optioons = self._define_menu_options() - self._item_group = MenuItemGroup(menu_optioons, sort_items=False, checkmarks=True) - - super().__init__( - self._item_group, - self._enc_config, - allow_reset=True, - ) - - def _define_menu_options(self) -> list[MenuItem]: - return [ - MenuItem( - text=tr('Encryption type'), - action=lambda x: select_encryption_type(self._device_modifications, self._lvm_config, x), - value=self._enc_config.encryption_type, - preview_action=self._preview, - key='encryption_type', - ), - MenuItem( - text=tr('Encryption password'), - action=lambda x: select_encrypted_password(), - value=self._enc_config.encryption_password, - dependencies=[self._check_dep_enc_type], - preview_action=self._preview, - key='encryption_password', - ), - MenuItem( - text=tr('Iteration time'), - action=select_iteration_time, - value=self._enc_config.iter_time, - dependencies=[self._check_dep_enc_type], - preview_action=self._preview, - key='iter_time', - ), - MenuItem( - text=tr('Partitions'), - action=lambda x: select_partitions_to_encrypt(self._device_modifications, x), - value=self._enc_config.partitions, - dependencies=[self._check_dep_partitions], - preview_action=self._preview, - key='partitions', - ), - MenuItem( - text=tr('LVM volumes'), - action=self._select_lvm_vols, - value=self._enc_config.lvm_volumes, - dependencies=[self._check_dep_lvm_vols], - preview_action=self._preview, - key='lvm_volumes', - ), - MenuItem( - text=tr('HSM'), - action=select_hsm, - value=self._enc_config.hsm_device, - dependencies=[self._check_dep_enc_type], - preview_action=self._preview, - key='hsm_device', - ), - ] - - def _select_lvm_vols(self, preset: list[LvmVolume]) -> list[LvmVolume]: - if self._lvm_config: - return select_lvm_vols_to_encrypt(self._lvm_config, preset=preset) - return [] - - def _check_dep_enc_type(self) -> bool: - enc_type: EncryptionType | None = self._item_group.find_by_key('encryption_type').value - if enc_type and enc_type != EncryptionType.NoEncryption: - return True - return False - - def _check_dep_partitions(self) -> bool: - enc_type: EncryptionType | None = self._item_group.find_by_key('encryption_type').value - if enc_type and enc_type in [EncryptionType.Luks, EncryptionType.LvmOnLuks]: - return True - return False - - def _check_dep_lvm_vols(self) -> bool: - enc_type: EncryptionType | None = self._item_group.find_by_key('encryption_type').value - if enc_type and enc_type == EncryptionType.LuksOnLvm: - return True - return False - - @override - def run(self, additional_title: str | None = None) -> DiskEncryption | None: - super().run(additional_title=additional_title) - - enc_type: EncryptionType | None = self._item_group.find_by_key('encryption_type').value - enc_password: Password | None = self._item_group.find_by_key('encryption_password').value - iter_time: int | None = self._item_group.find_by_key('iter_time').value - enc_partitions = self._item_group.find_by_key('partitions').value - enc_lvm_vols = self._item_group.find_by_key('lvm_volumes').value - - assert enc_type is not None - assert enc_partitions is not None - assert enc_lvm_vols is not None - - if enc_type in [EncryptionType.Luks, EncryptionType.LvmOnLuks] and enc_partitions: - enc_lvm_vols = [] - - if enc_type == EncryptionType.LuksOnLvm: - enc_partitions = [] - - if enc_type != EncryptionType.NoEncryption and enc_password and (enc_partitions or enc_lvm_vols): - return DiskEncryption( - encryption_password=enc_password, - encryption_type=enc_type, - partitions=enc_partitions, - lvm_volumes=enc_lvm_vols, - hsm_device=self._enc_config.hsm_device, - iter_time=iter_time or DEFAULT_ITER_TIME, - ) - - return None - - def _preview(self, item: MenuItem) -> str | None: - output = '' - - if (enc_type := self._prev_type()) is not None: - output += enc_type - - if (enc_pwd := self._prev_password()) is not None: - output += f'\n{enc_pwd}' - - if (iter_time := self._prev_iter_time()) is not None: - output += f'\n{iter_time}' - - if (fido_device := self._prev_hsm()) is not None: - output += f'\n{fido_device}' - - if (partitions := self._prev_partitions()) is not None: - output += f'\n\n{partitions}' - - if (lvm := self._prev_lvm_vols()) is not None: - output += f'\n\n{lvm}' - - if not output: - return None - - return output - - def _prev_type(self) -> str | None: - enc_type = self._item_group.find_by_key('encryption_type').value - - if enc_type: - enc_text = EncryptionType.type_to_text(enc_type) - return f'{tr("Encryption type")}: {enc_text}' - - return None - - def _prev_password(self) -> str | None: - enc_pwd = self._item_group.find_by_key('encryption_password').value - - if enc_pwd: - return f'{tr("Encryption password")}: {enc_pwd.hidden()}' - - return None - - def _prev_partitions(self) -> str | None: - partitions: list[PartitionModification] | None = self._item_group.find_by_key('partitions').value - - if partitions: - output = tr('Partitions to be encrypted') + '\n' - output += FormattedOutput.as_table(partitions) - return output.rstrip() - - return None - - def _prev_lvm_vols(self) -> str | None: - volumes: list[PartitionModification] | None = self._item_group.find_by_key('lvm_volumes').value - - if volumes: - output = tr('LVM volumes to be encrypted') + '\n' - output += FormattedOutput.as_table(volumes) - return output.rstrip() - - return None - - def _prev_hsm(self) -> str | None: - fido_device: Fido2Device | None = self._item_group.find_by_key('hsm_device').value - - if not fido_device: - return None - - output = str(fido_device.path) - output += f' ({fido_device.manufacturer}, {fido_device.product})' - return f'{tr("HSM device")}: {output}' - - def _prev_iter_time(self) -> str | None: - iter_time = self._item_group.find_by_key('iter_time').value - enc_type = self._item_group.find_by_key('encryption_type').value - - if iter_time and enc_type != EncryptionType.NoEncryption: - return f'{tr("Iteration time")}: {iter_time}ms' - - return None - - -def select_encryption_type( - device_modifications: list[DeviceModification], - lvm_config: LvmConfiguration | None = None, - preset: EncryptionType | None = None, -) -> EncryptionType | None: - options: list[EncryptionType] = [] - - if lvm_config: - options = [EncryptionType.LvmOnLuks, EncryptionType.LuksOnLvm] - else: - options = [EncryptionType.Luks] - - if not preset: - preset = options[0] - - preset_value = EncryptionType.type_to_text(preset) - - items = [MenuItem(EncryptionType.type_to_text(o), value=o) for o in options] - group = MenuItemGroup(items) - group.set_focus_by_value(preset_value) - - result = SelectMenu[EncryptionType]( - group, - allow_skip=True, - allow_reset=True, - alignment=Alignment.CENTER, - frame=FrameProperties.min(tr('Encryption type')), - ).run() - - match result.type_: - case ResultType.Reset: - return None - case ResultType.Skip: - return preset - case ResultType.Selection: - return result.get_value() - - -def select_encrypted_password() -> Password | None: - header = tr('Enter disk encryption password (leave blank for no encryption)') + '\n' - password = get_password( - text=tr('Disk encryption password'), - header=header, - allow_skip=True, - ) - - return password - - -def select_hsm(preset: Fido2Device | None = None) -> Fido2Device | None: - header = tr('Select a FIDO2 device to use for HSM') + '\n' - - try: - fido_devices = Fido2.get_cryptenroll_devices() - except ValueError: - return None - - if fido_devices: - group = MenuHelper(data=fido_devices).create_menu_group() - - result = SelectMenu[Fido2Device]( - group, - header=header, - alignment=Alignment.CENTER, - allow_skip=True, - ).run() - - match result.type_: - case ResultType.Reset: - return None - case ResultType.Skip: - return preset - case ResultType.Selection: - return result.get_value() - - return None - - -def select_partitions_to_encrypt( - modification: list[DeviceModification], - preset: list[PartitionModification], -) -> list[PartitionModification]: - partitions: list[PartitionModification] = [] - - # do not allow encrypting the boot partition - for mod in modification: - partitions += [p for p in mod.partitions if p.mountpoint != Path('/boot') and not p.is_swap()] - - # do not allow encrypting existing partitions that are not marked as wipe - avail_partitions = [p for p in partitions if not p.exists()] - - if avail_partitions: - group = MenuHelper(data=avail_partitions).create_menu_group() - group.set_selected_by_value(preset) - - result = SelectMenu[PartitionModification]( - group, - alignment=Alignment.CENTER, - multi=True, - allow_skip=True, - ).run() - - match result.type_: - case ResultType.Reset: - return [] - case ResultType.Skip: - return preset - case ResultType.Selection: - partitions = result.get_values() - return partitions - - return [] - - -def select_lvm_vols_to_encrypt( - lvm_config: LvmConfiguration, - preset: list[LvmVolume], -) -> list[LvmVolume]: - volumes: list[LvmVolume] = lvm_config.get_all_volumes() - - if volumes: - group = MenuHelper(data=volumes).create_menu_group() - - result = SelectMenu[LvmVolume]( - group, - alignment=Alignment.CENTER, - multi=True, - ).run() - - match result.type_: - case ResultType.Reset: - return [] - case ResultType.Skip: - return preset - case ResultType.Selection: - volumes = result.get_values() - return volumes - - return [] - - -def select_iteration_time(preset: int | None = None) -> int | None: - header = tr('Enter iteration time for LUKS encryption (in milliseconds)') + '\n' - header += tr('Higher values increase security but slow down boot time') + '\n' - header += tr(f'Default: {DEFAULT_ITER_TIME}ms, Recommended range: 1000-60000') + '\n' - - def validate_iter_time(value: str | None) -> str | None: - if not value: - return None - - try: - iter_time = int(value) - if iter_time < 100: - return tr('Iteration time must be at least 100ms') - if iter_time > 120000: - return tr('Iteration time must be at most 120000ms') - return None - except ValueError: - return tr('Please enter a valid number') - - result = EditMenu( - tr('Iteration time'), - header=header, - alignment=Alignment.CENTER, - allow_skip=True, - default_text=str(preset) if preset else str(DEFAULT_ITER_TIME), - validator=validate_iter_time, - ).input() - - match result.type_: - case ResultType.Skip: - return preset - case ResultType.Selection: - if not result.text(): - return preset - return int(result.text()) - case ResultType.Reset: - return None diff --git a/examples/archinstall/archinstall/lib/disk/fido.py b/examples/archinstall/archinstall/lib/disk/fido.py deleted file mode 100644 index 4cd633f..0000000 --- a/examples/archinstall/archinstall/lib/disk/fido.py +++ /dev/null @@ -1,125 +0,0 @@ -from __future__ import annotations - -import getpass -from pathlib import Path -from typing import ClassVar - -from archinstall.lib.models.device import Fido2Device - -from ..exceptions import SysCallError -from ..general import SysCommand, SysCommandWorker, clear_vt100_escape_codes_from_str -from ..models.users import Password -from ..output import error, info - - -class Fido2: - _loaded_cryptsetup: bool = False - _loaded_u2f: bool = False - _cryptenroll_devices: ClassVar[list[Fido2Device]] = [] - _u2f_devices: ClassVar[list[Fido2Device]] = [] - - @classmethod - def get_fido2_devices(cls) -> list[Fido2Device]: - """ - fido2-tool output example: - - /dev/hidraw4: vendor=0x1050, product=0x0407 (Yubico YubiKey OTP+FIDO+CCID) - """ - - if not cls._loaded_u2f: - cls._loaded_u2f = True - try: - ret = SysCommand('fido2-token -L').decode() - except Exception as e: - error(f'failed to read fido2 devices: {e}') - return [] - - fido_devices = clear_vt100_escape_codes_from_str(ret) - - if not fido_devices: - return [] - - for line in fido_devices.splitlines(): - path, details = line.replace(',', '').split(':', maxsplit=1) - _, product, manufacturer = details.strip().split(' ', maxsplit=2) - - cls._u2f_devices.append(Fido2Device(Path(path.strip()), manufacturer.strip(), product.strip().split('=')[1])) - - return cls._u2f_devices - - @classmethod - def get_cryptenroll_devices(cls, reload: bool = False) -> list[Fido2Device]: - """ - Uses systemd-cryptenroll to list the FIDO2 devices - connected that supports FIDO2. - Some devices might show up in udevadm as FIDO2 compliant - when they are in fact not. - - The drawback of systemd-cryptenroll is that it uses human readable format. - That means we get this weird table like structure that is of no use. - - So we'll look for `MANUFACTURER` and `PRODUCT`, we take their index - and we split each line based on those positions. - - Output example: - - PATH MANUFACTURER PRODUCT - /dev/hidraw1 Yubico YubiKey OTP+FIDO+CCID - """ - - # to prevent continuous reloading which will slow - # down moving the cursor in the menu - if not cls._loaded_cryptsetup or reload: - try: - ret = SysCommand('systemd-cryptenroll --fido2-device=list').decode() - except SysCallError: - error('fido2 support is most likely not installed') - raise ValueError('HSM devices can not be detected, is libfido2 installed?') - - fido_devices = clear_vt100_escape_codes_from_str(ret) - - manufacturer_pos = 0 - product_pos = 0 - devices = [] - - for line in fido_devices.split('\r\n'): - if '/dev' not in line: - manufacturer_pos = line.find('MANUFACTURER') - product_pos = line.find('PRODUCT') - continue - - path = line[:manufacturer_pos].rstrip() - manufacturer = line[manufacturer_pos:product_pos].rstrip() - product = line[product_pos:] - - devices.append( - Fido2Device(Path(path), manufacturer, product), - ) - - cls._loaded_cryptsetup = True - cls._cryptenroll_devices = devices - - return cls._cryptenroll_devices - - @classmethod - def fido2_enroll( - cls, - hsm_device: Fido2Device, - dev_path: Path, - password: Password, - ) -> None: - worker = SysCommandWorker(f'systemd-cryptenroll --fido2-device={hsm_device.path} {dev_path}', peek_output=True) - pw_inputted = False - pin_inputted = False - - while worker.is_alive(): - if pw_inputted is False: - if bytes(f'please enter current passphrase for disk {dev_path}', 'UTF-8') in worker._trace_log.lower(): - worker.write(bytes(password.plaintext, 'UTF-8')) - pw_inputted = True - elif pin_inputted is False: - if bytes('please enter security token pin', 'UTF-8') in worker._trace_log.lower(): - worker.write(bytes(getpass.getpass(' '), 'UTF-8')) - pin_inputted = True - - info('You might need to touch the FIDO2 device to unlock it if no prompt comes up after 3 seconds') diff --git a/examples/archinstall/archinstall/lib/disk/filesystem.py b/examples/archinstall/archinstall/lib/disk/filesystem.py deleted file mode 100644 index c397afa..0000000 --- a/examples/archinstall/archinstall/lib/disk/filesystem.py +++ /dev/null @@ -1,353 +0,0 @@ -from __future__ import annotations - -import math -import time -from pathlib import Path - -from archinstall.lib.translationhandler import tr -from archinstall.tui.curses_menu import Tui - -from ..interactions.general_conf import ask_abort -from ..luks import Luks2 -from ..models.device import ( - DiskEncryption, - DiskLayoutConfiguration, - DiskLayoutType, - EncryptionType, - FilesystemType, - LvmConfiguration, - LvmVolume, - LvmVolumeGroup, - PartitionModification, - SectorSize, - Size, - Unit, -) -from ..output import debug, info -from .device_handler import device_handler - - -class FilesystemHandler: - def __init__(self, disk_config: DiskLayoutConfiguration): - self._disk_config = disk_config - self._enc_config = disk_config.disk_encryption - - def perform_filesystem_operations(self, show_countdown: bool = True) -> None: - if self._disk_config.config_type == DiskLayoutType.Pre_mount: - debug('Disk layout configuration is set to pre-mount, not performing any operations') - return - - device_mods = [d for d in self._disk_config.device_modifications if d.partitions] - - if not device_mods: - debug('No modifications required') - return - - if show_countdown: - self._final_warning() - - # Setup the blockdevice, filesystem (and optionally encryption). - # Once that's done, we'll hand over to perform_installation() - - # make sure all devices are unmounted - for mod in device_mods: - device_handler.umount_all_existing(mod.device_path) - - for mod in device_mods: - device_handler.partition(mod) - - device_handler.udev_sync() - - if self._disk_config.lvm_config: - for mod in device_mods: - if boot_part := mod.get_boot_partition(): - debug(f'Formatting boot partition: {boot_part.dev_path}') - self._format_partitions([boot_part]) - - self.perform_lvm_operations() - else: - for mod in device_mods: - self._format_partitions(mod.partitions) - - for part_mod in mod.partitions: - if part_mod.fs_type == FilesystemType.Btrfs and part_mod.is_create_or_modify(): - device_handler.create_btrfs_volumes(part_mod, enc_conf=self._enc_config) - - def _format_partitions( - self, - partitions: list[PartitionModification], - ) -> None: - """ - Format can be given an overriding path, for instance /dev/null to test - the formatting functionality and in essence the support for the given filesystem. - """ - - # don't touch existing partitions - create_or_modify_parts = [p for p in partitions if p.is_create_or_modify()] - - self._validate_partitions(create_or_modify_parts) - - for part_mod in create_or_modify_parts: - # partition will be encrypted - if self._enc_config is not None and part_mod in self._enc_config.partitions: - device_handler.format_encrypted( - part_mod.safe_dev_path, - part_mod.mapper_name, - part_mod.safe_fs_type, - self._enc_config, - ) - else: - device_handler.format(part_mod.safe_fs_type, part_mod.safe_dev_path) - - # synchronize with udev before using lsblk - device_handler.udev_sync() - - lsblk_info = device_handler.fetch_part_info(part_mod.safe_dev_path) - - part_mod.partn = lsblk_info.partn - part_mod.partuuid = lsblk_info.partuuid - part_mod.uuid = lsblk_info.uuid - - def _validate_partitions(self, partitions: list[PartitionModification]) -> None: - checks = { - # verify that all partitions have a path set (which implies that they have been created) - lambda x: x.dev_path is None: ValueError('When formatting, all partitions must have a path set'), - # crypto luks is not a valid file system type - lambda x: x.fs_type is FilesystemType.Crypto_luks: ValueError('Crypto luks cannot be set as a filesystem type'), - # file system type must be set - lambda x: x.fs_type is None: ValueError('File system type must be set for modification'), - } - - for check, exc in checks.items(): - found = next(filter(check, partitions), None) - if found is not None: - raise exc - - def perform_lvm_operations(self) -> None: - info('Setting up LVM config...') - - if not self._disk_config.lvm_config: - return - - if self._enc_config: - self._setup_lvm_encrypted( - self._disk_config.lvm_config, - self._enc_config, - ) - else: - self._setup_lvm(self._disk_config.lvm_config) - self._format_lvm_vols(self._disk_config.lvm_config) - - def _setup_lvm_encrypted(self, lvm_config: LvmConfiguration, enc_config: DiskEncryption) -> None: - if enc_config.encryption_type == EncryptionType.LvmOnLuks: - enc_mods = self._encrypt_partitions(enc_config, lock_after_create=False) - - self._setup_lvm(lvm_config, enc_mods) - self._format_lvm_vols(lvm_config) - - # export the lvm group safely otherwise the Luks cannot be closed - self._safely_close_lvm(lvm_config) - - for luks in enc_mods.values(): - luks.lock() - elif enc_config.encryption_type == EncryptionType.LuksOnLvm: - self._setup_lvm(lvm_config) - enc_vols = self._encrypt_lvm_vols(lvm_config, enc_config, False) - self._format_lvm_vols(lvm_config, enc_vols) - - for luks in enc_vols.values(): - luks.lock() - - self._safely_close_lvm(lvm_config) - - def _safely_close_lvm(self, lvm_config: LvmConfiguration) -> None: - for vg in lvm_config.vol_groups: - for vol in vg.volumes: - device_handler.lvm_vol_change(vol, False) - - device_handler.lvm_export_vg(vg) - - def _setup_lvm( - self, - lvm_config: LvmConfiguration, - enc_mods: dict[PartitionModification, Luks2] = {}, - ) -> None: - self._lvm_create_pvs(lvm_config, enc_mods) - - for vg in lvm_config.vol_groups: - pv_dev_paths = self._get_all_pv_dev_paths(vg.pvs, enc_mods) - - device_handler.lvm_vg_create(pv_dev_paths, vg.name) - - # figure out what the actual available size in the group is - vg_info = device_handler.lvm_group_info(vg.name) - - if not vg_info: - raise ValueError('Unable to fetch VG info') - - # the actual available LVM Group size will be smaller than the - # total PVs size due to reserved metadata storage etc. - # so we'll have a look at the total avail. size, check the delta - # to the desired sizes and subtract some equally from the actually - # created volume - avail_size = vg_info.vg_size - desired_size = sum([vol.length for vol in vg.volumes], Size(0, Unit.B, SectorSize.default())) - - delta = desired_size - avail_size - delta_bytes = delta.convert(Unit.B) - - # Round the offset up to the next physical extent (PE, 4 MiB by default) - # to ensure lvcreate`s internal rounding doesn`t consume space reserved - # for subsequent logical volumes. - pe_bytes = Size(4, Unit.MiB, SectorSize.default()).convert(Unit.B) - pe_count = math.ceil(delta_bytes.value / pe_bytes.value) - rounded_offset = pe_count * pe_bytes.value - max_vol_offset = Size(rounded_offset, Unit.B, SectorSize.default()) - - max_vol = max(vg.volumes, key=lambda x: x.length) - - for lv in vg.volumes: - offset = max_vol_offset if lv == max_vol else None - - debug(f'vg: {vg.name}, vol: {lv.name}, offset: {offset}') - device_handler.lvm_vol_create(vg.name, lv, offset) - - while True: - debug('Fetching LVM volume info') - lv_info = device_handler.lvm_vol_info(lv.name) - if lv_info is not None: - break - - time.sleep(1) - - self._lvm_vol_handle_e2scrub(vg) - - def _format_lvm_vols( - self, - lvm_config: LvmConfiguration, - enc_vols: dict[LvmVolume, Luks2] = {}, - ) -> None: - for vol in lvm_config.get_all_volumes(): - if enc_vol := enc_vols.get(vol, None): - if not enc_vol.mapper_dev: - raise ValueError('No mapper device defined') - path = enc_vol.mapper_dev - else: - path = vol.safe_dev_path - - # wait a bit otherwise the mkfs will fail as it can't - # find the mapper device yet - device_handler.format(vol.fs_type, path) - - if vol.fs_type == FilesystemType.Btrfs: - device_handler.create_lvm_btrfs_subvolumes(path, vol.btrfs_subvols, vol.mount_options) - - def _lvm_create_pvs( - self, - lvm_config: LvmConfiguration, - enc_mods: dict[PartitionModification, Luks2] = {}, - ) -> None: - pv_paths: set[Path] = set() - - for vg in lvm_config.vol_groups: - pv_paths |= self._get_all_pv_dev_paths(vg.pvs, enc_mods) - - device_handler.lvm_pv_create(pv_paths) - - def _get_all_pv_dev_paths( - self, - pvs: list[PartitionModification], - enc_mods: dict[PartitionModification, Luks2] = {}, - ) -> set[Path]: - pv_paths: set[Path] = set() - - for pv in pvs: - if enc_pv := enc_mods.get(pv, None): - if mapper := enc_pv.mapper_dev: - pv_paths.add(mapper) - else: - pv_paths.add(pv.safe_dev_path) - - return pv_paths - - def _encrypt_lvm_vols( - self, - lvm_config: LvmConfiguration, - enc_config: DiskEncryption, - lock_after_create: bool = True, - ) -> dict[LvmVolume, Luks2]: - enc_vols: dict[LvmVolume, Luks2] = {} - - for vol in lvm_config.get_all_volumes(): - if vol in enc_config.lvm_volumes: - luks_handler = device_handler.encrypt( - vol.safe_dev_path, - vol.mapper_name, - enc_config.encryption_password, - lock_after_create, - iter_time=enc_config.iter_time, - ) - - enc_vols[vol] = luks_handler - - return enc_vols - - def _encrypt_partitions( - self, - enc_config: DiskEncryption, - lock_after_create: bool = True, - ) -> dict[PartitionModification, Luks2]: - enc_mods: dict[PartitionModification, Luks2] = {} - - for mod in self._disk_config.device_modifications: - partitions = mod.partitions - - # don't touch existing partitions - filtered_part = [p for p in partitions if not p.exists()] - - self._validate_partitions(filtered_part) - - enc_mods = {} - - for part_mod in filtered_part: - if part_mod in enc_config.partitions: - luks_handler = device_handler.encrypt( - part_mod.safe_dev_path, - part_mod.mapper_name, - enc_config.encryption_password, - lock_after_create=lock_after_create, - iter_time=enc_config.iter_time, - ) - - enc_mods[part_mod] = luks_handler - - return enc_mods - - def _lvm_vol_handle_e2scrub(self, vol_gp: LvmVolumeGroup) -> None: - # from arch wiki: - # If a logical volume will be formatted with ext4, leave at least 256 MiB - # free space in the volume group to allow using e2scrub - if any([vol.fs_type == FilesystemType.Ext4 for vol in vol_gp.volumes]): - largest_vol = max(vol_gp.volumes, key=lambda x: x.length) - - device_handler.lvm_vol_reduce( - largest_vol.safe_dev_path, - Size(256, Unit.MiB, SectorSize.default()), - ) - - def _final_warning(self) -> bool: - # Issue a final warning before we continue with something un-revertable. - # We mention the drive one last time, and count from 5 to 0. - out = tr('Starting device modifications in ') - Tui.print(out, row=0, endl='', clear_screen=True) - - try: - countdown = '\n5...4...3...2...1\n' - for c in countdown: - Tui.print(c, row=0, endl='') - time.sleep(0.25) - except KeyboardInterrupt: - with Tui(): - ask_abort() - - return True diff --git a/examples/archinstall/archinstall/lib/disk/partitioning_menu.py b/examples/archinstall/archinstall/lib/disk/partitioning_menu.py deleted file mode 100644 index baac9f7..0000000 --- a/examples/archinstall/archinstall/lib/disk/partitioning_menu.py +++ /dev/null @@ -1,589 +0,0 @@ -from __future__ import annotations - -import re -from pathlib import Path -from typing import override - -from archinstall.lib.models.device import ( - BtrfsMountOption, - DeviceModification, - FilesystemType, - ModificationStatus, - PartitionFlag, - PartitionModification, - PartitionTable, - PartitionType, - SectorSize, - Size, - Unit, -) -from archinstall.lib.translationhandler import tr -from archinstall.tui.curses_menu import EditMenu, SelectMenu -from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.result import ResultType -from archinstall.tui.types import Alignment, FrameProperties, Orientation - -from ..menu.list_manager import ListManager -from ..output import FormattedOutput -from ..utils.util import prompt_dir -from .subvolume_menu import SubvolumeMenu - - -class FreeSpace: - def __init__(self, start: Size, end: Size) -> None: - self.start = start - self.end = end - - @property - def length(self) -> Size: - return self.end - self.start - - def table_data(self) -> dict[str, str]: - """ - Called for displaying data in table format - """ - return { - 'Start': self.start.format_size(Unit.sectors, self.start.sector_size, include_unit=False), - 'End': self.end.format_size(Unit.sectors, self.start.sector_size, include_unit=False), - 'Size': self.length.format_highest(), - } - - -class DiskSegment: - def __init__(self, segment: PartitionModification | FreeSpace) -> None: - self.segment = segment - - def table_data(self) -> dict[str, str]: - """ - Called for displaying data in table format - """ - if isinstance(self.segment, PartitionModification): - return self.segment.table_data() - - part_mod = PartitionModification( - status=ModificationStatus.Create, - type=PartitionType._Unknown, - start=self.segment.start, - length=self.segment.length, - ) - data = part_mod.table_data() - data.update({'Status': 'free', 'Type': '', 'FS type': ''}) - return data - - -class PartitioningList(ListManager[DiskSegment]): - def __init__( - self, - device_mod: DeviceModification, - partition_table: PartitionTable, - ) -> None: - device = device_mod.device - - self._device = device - self._wipe = device_mod.wipe - self._buffer = Size(1, Unit.MiB, device.device_info.sector_size) - self._using_gpt = device_mod.using_gpt(partition_table) - - self._actions = { - 'suggest_partition_layout': tr('Suggest partition layout'), - 'remove_added_partitions': tr('Remove all newly added partitions'), - 'assign_mountpoint': tr('Assign mountpoint'), - 'mark_formatting': tr('Mark/Unmark to be formatted (wipes data)'), - 'mark_bootable': tr('Mark/Unmark as bootable'), - } - if self._using_gpt: - self._actions.update( - { - 'mark_esp': tr('Mark/Unmark as ESP'), - 'mark_xbootldr': tr('Mark/Unmark as XBOOTLDR'), - } - ) - self._actions.update( - { - 'set_filesystem': tr('Change filesystem'), - 'btrfs_mark_compressed': tr('Mark/Unmark as compressed'), # btrfs only - 'btrfs_mark_nodatacow': tr('Mark/Unmark as nodatacow'), # btrfs only - 'btrfs_set_subvolumes': tr('Set subvolumes'), # btrfs only - 'delete_partition': tr('Delete partition'), - } - ) - - device_partitions = [] - - if not device_mod.partitions: - # we'll display the existing partitions of the device - for partition in device.partition_infos: - device_partitions.append( - PartitionModification.from_existing_partition(partition), - ) - else: - device_partitions = device_mod.partitions - - prompt = tr('Partition management: {}').format(device.device_info.path) + '\n' - prompt += tr('Total length: {}').format(device.device_info.total_size.format_size(Unit.MiB)) - self._info = prompt + '\n' - - display_actions = list(self._actions.values()) - super().__init__( - self.as_segments(device_partitions), - display_actions[:1], - display_actions[2:], - self._info + self.wipe_str(), - ) - - def wipe_str(self) -> str: - return '{}: {}'.format(tr('Wipe'), self._wipe) - - def as_segments(self, device_partitions: list[PartitionModification]) -> list[DiskSegment]: - end = self._device.device_info.total_size - - if self._using_gpt: - end = end.gpt_end() - - end = end.align() - - # Reorder device_partitions to move all deleted partitions to the top - device_partitions.sort(key=lambda p: p.is_delete(), reverse=True) - - partitions = [DiskSegment(p) for p in device_partitions if not p.is_delete()] - segments = [DiskSegment(p) for p in device_partitions] - - if not partitions: - free_space = FreeSpace(self._buffer, end) - if free_space.length > self._buffer: - return segments + [DiskSegment(free_space)] - return segments - - first_part_index, first_partition = next( - (i, disk_segment) - for i, disk_segment in enumerate(segments) - if isinstance(disk_segment.segment, PartitionModification) and not disk_segment.segment.is_delete() - ) - - prev_partition = first_partition - index = 0 - - for partition in segments[1:]: - index += 1 - - if isinstance(partition.segment, PartitionModification) and partition.segment.is_delete(): - continue - - if prev_partition.segment.end < partition.segment.start: - free_space = FreeSpace(prev_partition.segment.end, partition.segment.start) - if free_space.length > self._buffer: - segments.insert(index, DiskSegment(free_space)) - index += 1 - - prev_partition = partition - - if first_partition.segment.start > self._buffer: - free_space = FreeSpace(self._buffer, first_partition.segment.start) - if free_space.length > self._buffer: - segments.insert(first_part_index, DiskSegment(free_space)) - - if partitions[-1].segment.end < end: - free_space = FreeSpace(partitions[-1].segment.end, end) - if free_space.length > self._buffer: - segments.append(DiskSegment(free_space)) - - return segments - - @staticmethod - def get_part_mods(disk_segments: list[DiskSegment]) -> list[PartitionModification]: - return [s.segment for s in disk_segments if isinstance(s.segment, PartitionModification)] - - def get_device_mod(self) -> DeviceModification: - disk_segments = super().run() - partitions = self.get_part_mods(disk_segments) - return DeviceModification(self._device, self._wipe, partitions) - - @override - def _run_actions_on_entry(self, entry: DiskSegment) -> None: - # Do not create a menu when the segment is free space - if isinstance(entry.segment, FreeSpace): - self._data = self.handle_action('', entry, self._data) - else: - super()._run_actions_on_entry(entry) - - @override - def selected_action_display(self, selection: DiskSegment) -> str: - if isinstance(selection.segment, PartitionModification): - if selection.segment.status == ModificationStatus.Create: - return tr('Partition - New') - elif selection.segment.is_delete() and selection.segment.dev_path: - title = tr('Partition') + '\n\n' - title += 'status: delete\n' - title += f'device: {selection.segment.dev_path}\n' - for part in self._device.partition_infos: - if part.path == selection.segment.dev_path: - if part.partuuid: - title += f'partuuid: {part.partuuid}' - return title - return str(selection.segment.dev_path) - return '' - - @override - def filter_options(self, selection: DiskSegment, options: list[str]) -> list[str]: - not_filter = [] - - if isinstance(selection.segment, PartitionModification): - if selection.segment.is_delete(): - not_filter = list(self._actions.values()) - # only display formatting if the partition exists already - elif not selection.segment.exists(): - not_filter += [self._actions['mark_formatting']] - else: - # only allow options if the existing partition - # was marked as formatting, otherwise we run into issues where - # 1. select a new fs -> potentially mark as wipe now - # 2. Switch back to old filesystem -> should unmark wipe now, but - # how do we know it was the original one? - not_filter += [ - self._actions['set_filesystem'], - self._actions['mark_bootable'], - ] - if self._using_gpt: - not_filter += [ - self._actions['mark_esp'], - self._actions['mark_xbootldr'], - ] - not_filter += [ - self._actions['btrfs_mark_compressed'], - self._actions['btrfs_mark_nodatacow'], - self._actions['btrfs_set_subvolumes'], - ] - - # non btrfs partitions shouldn't get btrfs options - if selection.segment.fs_type != FilesystemType.Btrfs: - not_filter += [ - self._actions['btrfs_mark_compressed'], - self._actions['btrfs_mark_nodatacow'], - self._actions['btrfs_set_subvolumes'], - ] - else: - not_filter += [self._actions['assign_mountpoint']] - - return [o for o in options if o not in not_filter] - - @override - def handle_action( - self, - action: str, - entry: DiskSegment | None, - data: list[DiskSegment], - ) -> list[DiskSegment]: - if not entry: - action_key = [k for k, v in self._actions.items() if v == action][0] - match action_key: - case 'suggest_partition_layout': - part_mods = self.get_part_mods(data) - device_mod = self._suggest_partition_layout(part_mods) - if device_mod and device_mod.partitions: - data = self.as_segments(device_mod.partitions) - self._wipe = device_mod.wipe - self._prompt = self._info + self.wipe_str() - case 'remove_added_partitions': - if self._reset_confirmation(): - data = [s for s in data if isinstance(s.segment, PartitionModification) and s.segment.is_exists_or_modify()] - elif isinstance(entry.segment, PartitionModification): - partition = entry.segment - action_key = [k for k, v in self._actions.items() if v == action][0] - match action_key: - case 'assign_mountpoint': - new_mountpoint = self._prompt_mountpoint() - if not partition.is_swap(): - if partition.is_home(): - partition.invert_flag(PartitionFlag.LINUX_HOME) - partition.mountpoint = new_mountpoint - if partition.is_root(): - partition.flags = [] - if partition.is_boot(): - partition.flags = [] - partition.set_flag(PartitionFlag.BOOT) - if self._using_gpt: - partition.set_flag(PartitionFlag.ESP) - if partition.is_home(): - partition.flags = [] - partition.set_flag(PartitionFlag.LINUX_HOME) - case 'mark_formatting': - self._prompt_formatting(partition) - case 'mark_bootable': - if not partition.is_swap(): - partition.invert_flag(PartitionFlag.BOOT) - case 'mark_esp': - if not partition.is_root() and not partition.is_home() and not partition.is_swap(): - if PartitionFlag.XBOOTLDR in partition.flags: - partition.invert_flag(PartitionFlag.XBOOTLDR) - partition.invert_flag(PartitionFlag.ESP) - case 'mark_xbootldr': - if not partition.is_root() and not partition.is_home() and not partition.is_swap(): - if PartitionFlag.ESP in partition.flags: - partition.invert_flag(PartitionFlag.ESP) - partition.invert_flag(PartitionFlag.XBOOTLDR) - case 'set_filesystem': - fs_type = self._prompt_partition_fs_type() - - if partition.is_swap(): - partition.invert_flag(PartitionFlag.SWAP) - partition.fs_type = fs_type - if partition.is_swap(): - partition.mountpoint = None - partition.flags = [] - partition.set_flag(PartitionFlag.SWAP) - # btrfs subvolumes will define mountpoints - if fs_type == FilesystemType.Btrfs: - partition.mountpoint = None - case 'btrfs_mark_compressed': - self._toggle_mount_option(partition, BtrfsMountOption.compress) - case 'btrfs_mark_nodatacow': - self._toggle_mount_option(partition, BtrfsMountOption.nodatacow) - case 'btrfs_set_subvolumes': - self._set_btrfs_subvolumes(partition) - case 'delete_partition': - data = self._delete_partition(partition, data) - else: - part_mods = self.get_part_mods(data) - index = data.index(entry) - part_mods.insert(index, self._create_new_partition(entry.segment)) - data = self.as_segments(part_mods) - - return data - - def _delete_partition( - self, - entry: PartitionModification, - data: list[DiskSegment], - ) -> list[DiskSegment]: - if entry.is_exists_or_modify(): - entry.status = ModificationStatus.Delete - part_mods = self.get_part_mods(data) - else: - part_mods = [d.segment for d in data if isinstance(d.segment, PartitionModification) and d.segment != entry] - - return self.as_segments(part_mods) - - def _toggle_mount_option( - self, - partition: PartitionModification, - option: BtrfsMountOption, - ) -> None: - if option.value not in partition.mount_options: - if option == BtrfsMountOption.compress: - partition.mount_options = [o for o in partition.mount_options if o != BtrfsMountOption.nodatacow.value] - - partition.mount_options = [o for o in partition.mount_options if not o.startswith(BtrfsMountOption.compress.name)] - - partition.mount_options.append(option.value) - else: - partition.mount_options = [o for o in partition.mount_options if o != option.value] - - def _set_btrfs_subvolumes(self, partition: PartitionModification) -> None: - partition.btrfs_subvols = SubvolumeMenu( - partition.btrfs_subvols, - None, - ).run() - - def _prompt_formatting(self, partition: PartitionModification) -> None: - # an existing partition can toggle between Exist or Modify - if partition.is_modify(): - partition.status = ModificationStatus.Exist - return - elif partition.exists(): - partition.status = ModificationStatus.Modify - - # If we mark a partition for formatting, but the format is CRYPTO LUKS, there's no point in formatting it really - # without asking the user which inner-filesystem they want to use. Since the flag 'encrypted' = True is already set, - # it's safe to change the filesystem for this partition. - if partition.fs_type == FilesystemType.Crypto_luks: - prompt = tr('This partition is currently encrypted, to format it a filesystem has to be specified') + '\n' - fs_type = self._prompt_partition_fs_type(prompt) - partition.fs_type = fs_type - - if fs_type == FilesystemType.Btrfs: - partition.mountpoint = None - - def _prompt_mountpoint(self) -> Path: - header = tr('Partition mount-points are relative to inside the installation, the boot would be /boot as an example.') + '\n' - prompt = tr('Mountpoint') - - mountpoint = prompt_dir(prompt, header, validate=False, allow_skip=False) - assert mountpoint - - return mountpoint - - def _prompt_partition_fs_type(self, prompt: str | None = None) -> FilesystemType: - fs_types = filter(lambda fs: fs != FilesystemType.Crypto_luks, FilesystemType) - items = [MenuItem(fs.value, value=fs) for fs in fs_types] - group = MenuItemGroup(items, sort_items=False) - - result = SelectMenu[FilesystemType]( - group, - header=prompt, - alignment=Alignment.CENTER, - frame=FrameProperties.min(tr('Filesystem')), - allow_skip=False, - ).run() - - match result.type_: - case ResultType.Selection: - return result.get_value() - case _: - raise ValueError('Unhandled result type') - - def _validate_value( - self, - sector_size: SectorSize, - max_size: Size, - text: str, - ) -> Size | None: - match = re.match(r'([0-9]+)([a-zA-Z|%]*)', text, re.I) - - if not match: - return None - - str_value, unit = match.groups() - - if unit == '%': - value = int(max_size.value * (int(str_value) / 100)) - unit = max_size.unit.name - else: - value = int(str_value) - - if unit and unit not in Unit.get_all_units(): - return None - - unit = Unit[unit] if unit else Unit.sectors - size = Size(value, unit, sector_size) - - if size.format_highest() == max_size.format_highest(): - return max_size - elif size > max_size or size < self._buffer: - return None - - return size - - def _prompt_size(self, free_space: FreeSpace) -> Size: - def validate(value: str | None) -> str | None: - if not value: - return None - - size = self._validate_value(sector_size, max_size, value) - if not size: - return tr('Invalid size') - return None - - device_info = self._device.device_info - sector_size = device_info.sector_size - - text = tr('Selected free space segment on device {}:').format(device_info.path) + '\n\n' - free_space_table = FormattedOutput.as_table([free_space]) - prompt = text + free_space_table + '\n' - - max_sectors = free_space.length.format_size(Unit.sectors, sector_size) - max_bytes = free_space.length.format_size(Unit.B) - - prompt += tr('Size: {} / {}').format(max_sectors, max_bytes) + '\n\n' - prompt += tr('All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB...') + '\n' - prompt += tr('If no unit is provided, the value is interpreted as sectors') + '\n' - - max_size = free_space.length - - title = tr('Size (default: {}): ').format(max_size.format_highest()) - - result = EditMenu( - title, - header=f'{prompt}\b', - allow_skip=True, - validator=validate, - ).input() - - size: Size | None = None - - match result.type_: - case ResultType.Skip: - size = max_size - case ResultType.Selection: - value = result.text() - - if value: - size = self._validate_value(sector_size, max_size, value) - else: - size = max_size - - assert size - return size - - def _create_new_partition(self, free_space: FreeSpace) -> PartitionModification: - length = self._prompt_size(free_space) - - fs_type = self._prompt_partition_fs_type() - - mountpoint = None - if fs_type not in (FilesystemType.Btrfs, FilesystemType.LinuxSwap): - mountpoint = self._prompt_mountpoint() - - partition = PartitionModification( - status=ModificationStatus.Create, - type=PartitionType.Primary, - start=free_space.start, - length=length, - fs_type=fs_type, - mountpoint=mountpoint, - ) - - if partition.mountpoint == Path('/boot'): - partition.set_flag(PartitionFlag.BOOT) - if self._using_gpt: - partition.set_flag(PartitionFlag.ESP) - elif partition.is_swap(): - partition.mountpoint = None - partition.flags = [] - partition.set_flag(PartitionFlag.SWAP) - - return partition - - def _reset_confirmation(self) -> bool: - prompt = tr('This will remove all newly added partitions, continue?') + '\n' - - result = SelectMenu[bool]( - MenuItemGroup.yes_no(), - header=prompt, - alignment=Alignment.CENTER, - orientation=Orientation.HORIZONTAL, - columns=2, - reset_warning_msg=prompt, - allow_skip=False, - ).run() - - return result.item() == MenuItem.yes() - - def _suggest_partition_layout( - self, - data: list[PartitionModification], - ) -> DeviceModification | None: - # if modifications have been done already, inform the user - # that this operation will erase those modifications - if any([not entry.exists() for entry in data]): - if not self._reset_confirmation(): - return None - - from ..interactions.disk_conf import suggest_single_disk_layout - - return suggest_single_disk_layout(self._device) - - -def manual_partitioning( - device_mod: DeviceModification, - partition_table: PartitionTable, -) -> DeviceModification | None: - menu_list = PartitioningList(device_mod, partition_table) - mod = menu_list.get_device_mod() - - if menu_list.is_last_choice_cancel(): - return device_mod - - if mod.partitions: - return mod - - return None diff --git a/examples/archinstall/archinstall/lib/disk/subvolume_menu.py b/examples/archinstall/archinstall/lib/disk/subvolume_menu.py deleted file mode 100644 index 5b66334..0000000 --- a/examples/archinstall/archinstall/lib/disk/subvolume_menu.py +++ /dev/null @@ -1,102 +0,0 @@ -from pathlib import Path -from typing import assert_never, override - -from archinstall.lib.models.device import SubvolumeModification -from archinstall.lib.translationhandler import tr -from archinstall.tui.curses_menu import EditMenu -from archinstall.tui.result import ResultType -from archinstall.tui.types import Alignment - -from ..menu.list_manager import ListManager -from ..utils.util import prompt_dir - - -class SubvolumeMenu(ListManager[SubvolumeModification]): - def __init__( - self, - btrfs_subvols: list[SubvolumeModification], - prompt: str | None = None, - ): - self._actions = [ - tr('Add subvolume'), - tr('Edit subvolume'), - tr('Delete subvolume'), - ] - - super().__init__( - btrfs_subvols, - [self._actions[0]], - self._actions[1:], - prompt, - ) - - @override - def selected_action_display(self, selection: SubvolumeModification) -> str: - return str(selection.name) - - def _add_subvolume(self, preset: SubvolumeModification | None = None) -> SubvolumeModification | None: - def validate(value: str | None) -> str | None: - if value: - return None - return tr('Value cannot be empty') - - result = EditMenu( - tr('Subvolume name'), - alignment=Alignment.CENTER, - allow_skip=True, - default_text=str(preset.name) if preset else None, - validator=validate, - ).input() - - match result.type_: - case ResultType.Skip: - return preset - case ResultType.Selection: - name = result.text() - case ResultType.Reset: - raise ValueError('Unhandled result type') - case _: - assert_never(result.type_) - - header = f'{tr("Subvolume name")}: {name}\n' - - path = prompt_dir( - tr('Subvolume mountpoint'), - header=header, - allow_skip=True, - validate=True, - must_exist=False, - ) - - if not path: - return preset - - return SubvolumeModification(Path(name), path) - - @override - def handle_action( - self, - action: str, - entry: SubvolumeModification | None, - data: list[SubvolumeModification], - ) -> list[SubvolumeModification]: - if action == self._actions[0]: # add - new_subvolume = self._add_subvolume() - - if new_subvolume is not None: - # in case a user with the same username as an existing user - # was created we'll replace the existing one - data = [d for d in data if d.name != new_subvolume.name] - data += [new_subvolume] - elif entry is not None: # edit - if action == self._actions[1]: # edit subvolume - new_subvolume = self._add_subvolume(entry) - - if new_subvolume is not None: - # we'll remove the original subvolume and add the modified version - data = [d for d in data if d.name != entry.name and d.name != new_subvolume.name] - data += [new_subvolume] - elif action == self._actions[2]: # delete - data = [d for d in data if d != entry] - - return data diff --git a/examples/archinstall/archinstall/lib/disk/utils.py b/examples/archinstall/archinstall/lib/disk/utils.py deleted file mode 100644 index 95a0871..0000000 --- a/examples/archinstall/archinstall/lib/disk/utils.py +++ /dev/null @@ -1,128 +0,0 @@ -from pathlib import Path - -from pydantic import BaseModel - -from archinstall.lib.exceptions import DiskError, SysCallError -from archinstall.lib.general import SysCommand -from archinstall.lib.models.device import LsblkInfo -from archinstall.lib.output import debug, warn - - -class LsblkOutput(BaseModel): - blockdevices: list[LsblkInfo] - - -def _fetch_lsblk_info( - dev_path: Path | str | None = None, - reverse: bool = False, - full_dev_path: bool = False, -) -> LsblkOutput: - cmd = ['lsblk', '--json', '--bytes', '--output', ','.join(LsblkInfo.fields())] - - if reverse: - cmd.append('--inverse') - - if full_dev_path: - cmd.append('--paths') - - if dev_path: - cmd.append(str(dev_path)) - - try: - worker = SysCommand(cmd) - except SysCallError 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 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) - - -def get_lsblk_info( - dev_path: Path | str, - reverse: bool = False, - full_dev_path: bool = False, -) -> LsblkInfo: - infos = _fetch_lsblk_info(dev_path, reverse=reverse, full_dev_path=full_dev_path) - - if infos.blockdevices: - return infos.blockdevices[0] - - raise DiskError(f'lsblk failed to retrieve information for "{dev_path}"') - - -def get_all_lsblk_info() -> list[LsblkInfo]: - return _fetch_lsblk_info().blockdevices - - -def get_lsblk_output() -> LsblkOutput: - return _fetch_lsblk_info() - - -def find_lsblk_info( - dev_path: Path | str, - info: list[LsblkInfo], -) -> LsblkInfo | None: - if isinstance(dev_path, str): - dev_path = Path(dev_path) - - for lsblk_info in info: - if lsblk_info.path == dev_path: - return lsblk_info - - return None - - -def get_lsblk_by_mountpoint(mountpoint: Path, as_prefix: bool = False) -> list[LsblkInfo]: - def _check(infos: list[LsblkInfo]) -> list[LsblkInfo]: - devices = [] - for entry in infos: - if as_prefix: - matches = [m for m in entry.mountpoints if str(m).startswith(str(mountpoint))] - if matches: - devices += [entry] - elif mountpoint in entry.mountpoints: - devices += [entry] - - if len(entry.children) > 0: - if len(match := _check(entry.children)) > 0: - devices += match - - return devices - - all_info = get_all_lsblk_info() - return _check(all_info) - - -def disk_layouts() -> str: - try: - lsblk_output = get_lsblk_output() - except SysCallError as err: - warn(f'Could not return disk layouts: {err}') - return '' - - return lsblk_output.model_dump_json(indent=4) - - -def umount(mountpoint: Path, recursive: bool = False) -> None: - lsblk_info = get_lsblk_info(mountpoint) - - if not lsblk_info.mountpoints: - return - - debug(f'Partition {mountpoint} is currently mounted at: {[str(m) for m in lsblk_info.mountpoints]}') - - cmd = ['umount'] - - if recursive: - cmd.append('-R') - - for path in lsblk_info.mountpoints: - debug(f'Unmounting mountpoint: {path}') - SysCommand(cmd + [str(path)]) diff --git a/examples/archinstall/archinstall/lib/exceptions.py b/examples/archinstall/archinstall/lib/exceptions.py deleted file mode 100644 index fb37ef2..0000000 --- a/examples/archinstall/archinstall/lib/exceptions.py +++ /dev/null @@ -1,40 +0,0 @@ -class RequirementError(Exception): - pass - - -class DiskError(Exception): - pass - - -class UnknownFilesystemFormat(Exception): - pass - - -class SysCallError(Exception): - def __init__(self, message: str, exit_code: int | None = None, worker_log: bytes = b'') -> None: - super().__init__(message) - self.message = message - self.exit_code = exit_code - self.worker_log = worker_log - - -class HardwareIncompatibilityError(Exception): - pass - - -class ServiceException(Exception): - pass - - -class PackageError(Exception): - pass - - -class Deprecated(Exception): - pass - - -class DownloadTimeout(Exception): - """ - Download timeout exception raised by DownloadTimer. - """ diff --git a/examples/archinstall/archinstall/lib/general.py b/examples/archinstall/archinstall/lib/general.py deleted file mode 100644 index 66d8ee0..0000000 --- a/examples/archinstall/archinstall/lib/general.py +++ /dev/null @@ -1,461 +0,0 @@ -from __future__ import annotations - -import json -import os -import re -import secrets -import shlex -import stat -import string -import subprocess -import sys -import time -from collections.abc import Iterator -from datetime import date, datetime -from enum import Enum -from pathlib import Path -from select import EPOLLHUP, EPOLLIN, epoll -from shutil import which -from types import TracebackType -from typing import Any, override - -from .exceptions import RequirementError, SysCallError -from .output import debug, error, logger - -# https://stackoverflow.com/a/43627833/929999 -_VT100_ESCAPE_REGEX = r'\x1B\[[?0-9;]*[a-zA-Z]' -_VT100_ESCAPE_REGEX_BYTES = _VT100_ESCAPE_REGEX.encode() - - -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 locate_binary(name: str) -> str: - if path := which(name): - return path - raise RequirementError(f'Binary {name} does not exist.') - - -def clear_vt100_escape_codes(data: bytes) -> bytes: - return re.sub(_VT100_ESCAPE_REGEX_BYTES, b'', data) - - -def clear_vt100_escape_codes_from_str(data: str) -> str: - return re.sub(_VT100_ESCAPE_REGEX, '', data) - - -def jsonify(obj: object, safe: bool = True) -> object: - """ - Converts objects into json.dumps() compatible nested dictionaries. - Setting safe to True skips dictionary keys starting with a bang (!) - """ - - compatible_types = str, int, float, bool - if isinstance(obj, dict): - return { - key: jsonify(value, safe) - for key, value in obj.items() - if isinstance(key, compatible_types) and not (isinstance(key, str) and key.startswith('!') and safe) - } - if isinstance(obj, Enum): - return obj.value - if hasattr(obj, 'json'): - # json() is a friendly name for json-helper, it should return - # a dictionary representation of the object so that it can be - # processed by the json library. - return jsonify(obj.json(), safe) - if isinstance(obj, datetime | date): - return obj.isoformat() - if isinstance(obj, list | set | tuple): - return [jsonify(item, safe) for item in obj] - if isinstance(obj, Path): - return str(obj) - if hasattr(obj, '__dict__'): - return vars(obj) - - return obj - - -class JSON(json.JSONEncoder, json.JSONDecoder): - """ - A safe JSON encoder that will omit private information in dicts (starting with !) - """ - - @override - def encode(self, o: object) -> str: - return super().encode(jsonify(o)) - - -class UNSAFE_JSON(json.JSONEncoder, json.JSONDecoder): - """ - UNSAFE_JSON will call/encode and keep private information in dicts (starting with !) - """ - - @override - def encode(self, o: object) -> str: - return super().encode(jsonify(o, safe=False)) - - -class SysCommandWorker: - def __init__( - self, - cmd: str | list[str], - peek_output: bool | None = False, - environment_vars: dict[str, str] | None = None, - working_directory: str = './', - remove_vt100_escape_codes_from_lines: bool = True, - ): - if isinstance(cmd, str): - cmd = shlex.split(cmd) - - if cmd and not cmd[0].startswith(('/', './')): # Path() does not work well - cmd[0] = locate_binary(cmd[0]) - - self.cmd = cmd - self.peek_output = peek_output - # define the standard locale for command outputs. For now the C ascii one. Can be overridden - self.environment_vars = {'LC_ALL': 'C'} - if environment_vars: - self.environment_vars.update(environment_vars) - - self.working_directory = working_directory - - self.exit_code: int | None = None - self._trace_log = b'' - self._trace_log_pos = 0 - self.poll_object = epoll() - self.child_fd: int | None = None - self.started: float | None = None - self.ended: float | None = None - self.remove_vt100_escape_codes_from_lines: bool = remove_vt100_escape_codes_from_lines - - def __contains__(self, key: bytes) -> bool: - """ - Contains will also move the current buffert position forward. - This is to avoid re-checking the same data when looking for output. - """ - assert isinstance(key, bytes) - - index = self._trace_log.find(key, self._trace_log_pos) - if index >= 0: - self._trace_log_pos += index + len(key) - return True - - return False - - def __iter__(self, *args: str, **kwargs: dict[str, Any]) -> Iterator[bytes]: - last_line = self._trace_log.rfind(b'\n') - lines = filter(None, self._trace_log[self._trace_log_pos : last_line].splitlines()) - for line in lines: - if self.remove_vt100_escape_codes_from_lines: - line = clear_vt100_escape_codes(line) - - yield line + b'\n' - - self._trace_log_pos = last_line - - @override - def __repr__(self) -> str: - self.make_sure_we_are_executing() - return str(self._trace_log) - - @override - def __str__(self) -> str: - try: - return self._trace_log.decode('utf-8') - except UnicodeDecodeError: - return str(self._trace_log) - - def __enter__(self) -> 'SysCommandWorker': - return self - - def __exit__(self, exc_type: type[BaseException] | None, exc_value: BaseException | None, traceback: TracebackType | None) -> None: - # b''.join(sys_command('sync')) # No need to, since the underlying fs() object will call sync. - # TODO: https://stackoverflow.com/questions/28157929/how-to-safely-handle-an-exception-inside-a-context-manager - - if self.child_fd: - try: - os.close(self.child_fd) - except Exception: - pass - - if self.peek_output: - # To make sure any peaked output didn't leave us hanging - # on the same line we were on. - sys.stdout.write('\n') - sys.stdout.flush() - - if exc_type is not None: - debug(str(exc_value)) - - if self.exit_code != 0: - raise SysCallError( - f'{self.cmd} exited with abnormal exit code [{self.exit_code}]: {str(self)[-500:]}', - self.exit_code, - worker_log=self._trace_log, - ) - - def is_alive(self) -> bool: - self.poll() - - if self.started and self.ended is None: - return True - - return False - - def write(self, data: bytes, line_ending: bool = True) -> int: - assert isinstance(data, bytes) # TODO: Maybe we can support str as well and encode it - - self.make_sure_we_are_executing() - - if self.child_fd: - return os.write(self.child_fd, data + (b'\n' if line_ending else b'')) - - return 0 - - def make_sure_we_are_executing(self) -> bool: - if not self.started: - return self.execute() - return True - - def tell(self) -> int: - self.make_sure_we_are_executing() - return self._trace_log_pos - - def seek(self, pos: int) -> None: - self.make_sure_we_are_executing() - # Safety check to ensure 0 < pos < len(tracelog) - self._trace_log_pos = min(max(0, pos), len(self._trace_log)) - - def peak(self, output: str | bytes) -> bool: - if self.peek_output: - if isinstance(output, bytes): - try: - output = output.decode('UTF-8') - except UnicodeDecodeError: - return False - - _cmd_output(output) - - sys.stdout.write(output) - sys.stdout.flush() - - return True - - def poll(self) -> None: - self.make_sure_we_are_executing() - - if self.child_fd: - got_output = False - for _fileno, _event in self.poll_object.poll(0.1): - try: - output = os.read(self.child_fd, 8192) - got_output = True - self.peak(output) - self._trace_log += output - except OSError: - self.ended = time.time() - break - - if self.ended or (not got_output and not _pid_exists(self.pid)): - self.ended = time.time() - try: - wait_status = os.waitpid(self.pid, 0)[1] - self.exit_code = os.waitstatus_to_exitcode(wait_status) - except ChildProcessError: - try: - wait_status = os.waitpid(self.child_fd, 0)[1] - self.exit_code = os.waitstatus_to_exitcode(wait_status) - except ChildProcessError: - self.exit_code = 1 - - def execute(self) -> bool: - import pty - - if (old_dir := os.getcwd()) != self.working_directory: - os.chdir(str(self.working_directory)) - - # Note: If for any reason, we get a Python exception between here - # and until os.close(), the traceback will get locked inside - # stdout of the child_fd object. `os.read(self.child_fd, 8192)` is the - # only way to get the traceback without losing it. - - self.pid, self.child_fd = pty.fork() - - # https://stackoverflow.com/questions/4022600/python-pty-fork-how-does-it-work - if not self.pid: - _cmd_history(self.cmd) - - try: - os.execve(self.cmd[0], list(self.cmd), {**os.environ, **self.environment_vars}) - except FileNotFoundError: - error(f'{self.cmd[0]} does not exist.') - self.exit_code = 1 - return False - else: - # Only parent process moves back to the original working directory - os.chdir(old_dir) - - self.started = time.time() - self.poll_object.register(self.child_fd, EPOLLIN | EPOLLHUP) - - return True - - def decode(self, encoding: str = 'UTF-8') -> str: - return self._trace_log.decode(encoding) - - -class SysCommand: - def __init__( - self, - cmd: str | list[str], - peek_output: bool | None = False, - environment_vars: dict[str, str] | None = None, - working_directory: str = './', - remove_vt100_escape_codes_from_lines: bool = True, - ): - self.cmd = cmd - self.peek_output = peek_output - self.environment_vars = environment_vars - self.working_directory = working_directory - self.remove_vt100_escape_codes_from_lines = remove_vt100_escape_codes_from_lines - - self.session: SysCommandWorker | None = None - self.create_session() - - def __enter__(self) -> SysCommandWorker | None: - return self.session - - def __exit__(self, exc_type: type[BaseException] | None, exc_value: BaseException | None, traceback: TracebackType | None) -> None: - # b''.join(sys_command('sync')) # No need to, since the underlying fs() object will call sync. - # TODO: https://stackoverflow.com/questions/28157929/how-to-safely-handle-an-exception-inside-a-context-manager - - if exc_type is not None: - error(str(exc_value)) - - def __iter__(self, *args: list[Any], **kwargs: dict[str, Any]) -> Iterator[bytes]: - if self.session: - yield from self.session - - def __getitem__(self, key: slice) -> bytes: - if not self.session: - raise KeyError('SysCommand() does not have an active session.') - elif type(key) is slice: - start = key.start or 0 - end = key.stop or len(self.session._trace_log) - - return self.session._trace_log[start:end] - else: - raise ValueError("SysCommand() doesn't have key & value pairs, only slices, SysCommand('ls')[:10] as an example.") - - @override - def __repr__(self, *args: list[Any], **kwargs: dict[str, Any]) -> str: - return self.decode('UTF-8', errors='backslashreplace') or '' - - def create_session(self) -> bool: - """ - Initiates a :ref:`SysCommandWorker` session in this class ``.session``. - It then proceeds to poll the process until it ends, after which it also - clears any printed output if ``.peek_output=True``. - """ - if self.session: - return True - - with SysCommandWorker( - self.cmd, - peek_output=self.peek_output, - environment_vars=self.environment_vars, - remove_vt100_escape_codes_from_lines=self.remove_vt100_escape_codes_from_lines, - working_directory=self.working_directory, - ) as session: - self.session = session - - while not self.session.ended: - self.session.poll() - - if self.peek_output: - sys.stdout.write('\n') - sys.stdout.flush() - - return True - - def decode(self, encoding: str = 'utf-8', errors: str = 'backslashreplace', strip: bool = True) -> str: - if not self.session: - raise ValueError('No session available to decode') - - val = self.session._trace_log.decode(encoding, errors=errors) - - if strip: - return val.strip() - return val - - def output(self, remove_cr: bool = True) -> bytes: - if not self.session: - raise ValueError('No session available') - - if remove_cr: - return self.session._trace_log.replace(b'\r\n', b'\n') - - return self.session._trace_log - - @property - def exit_code(self) -> int | None: - if self.session: - return self.session.exit_code - else: - return None - - @property - def trace_log(self) -> bytes | None: - if self.session: - return self.session._trace_log - return None - - -def _append_log(file: str, content: str) -> None: - path = logger.directory / file - - change_perm = not path.exists() - - try: - with path.open('a') as f: - f.write(content) - - if change_perm: - path.chmod(stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP) - except (PermissionError, FileNotFoundError): - # If the file does not exist, ignore the error - pass - - -def _cmd_history(cmd: list[str]) -> None: - content = f'{time.time()} {cmd}\n' - _append_log('cmd_history.txt', content) - - -def _cmd_output(output: str) -> None: - _append_log('cmd_output.txt', output) - - -def run( - cmd: list[str], - input_data: bytes | None = None, -) -> subprocess.CompletedProcess[bytes]: - _cmd_history(cmd) - - return subprocess.run( - cmd, - input=input_data, - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT, - check=True, - ) - - -def _pid_exists(pid: int) -> bool: - try: - return any(subprocess.check_output(['ps', '--no-headers', '-o', 'pid', '-p', str(pid)]).strip()) - except subprocess.CalledProcessError: - return False diff --git a/examples/archinstall/archinstall/lib/global_menu.py b/examples/archinstall/archinstall/lib/global_menu.py deleted file mode 100644 index 8acafd8..0000000 --- a/examples/archinstall/archinstall/lib/global_menu.py +++ /dev/null @@ -1,581 +0,0 @@ -from __future__ import annotations - -from typing import override - -from archinstall.lib.disk.disk_menu import DiskLayoutConfigurationMenu -from archinstall.lib.models.application import ApplicationConfiguration -from archinstall.lib.models.authentication import AuthenticationConfiguration -from archinstall.lib.models.device import DiskLayoutConfiguration, DiskLayoutType, EncryptionType, FilesystemType, PartitionModification -from archinstall.lib.packages import list_available_packages -from archinstall.tui.menu_item import MenuItem, MenuItemGroup - -from .applications.application_menu import ApplicationMenu -from .args import ArchConfig -from .authentication.authentication_menu import AuthenticationMenu -from .configuration import save_config -from .hardware import SysInfo -from .interactions.general_conf import ( - add_number_of_parallel_downloads, - ask_additional_packages_to_install, - ask_for_a_timezone, - ask_hostname, - ask_ntp, -) -from .interactions.network_menu import ask_to_configure_network -from .interactions.system_conf import ask_for_bootloader, ask_for_swap, ask_for_uki, select_kernel -from .locale.locale_menu import LocaleMenu -from .menu.abstract_menu import CONFIG_KEY, AbstractMenu -from .mirrors import MirrorMenu -from .models.bootloader import Bootloader -from .models.locale import LocaleConfiguration -from .models.mirrors import MirrorConfiguration -from .models.network import NetworkConfiguration, NicType -from .models.packages import Repository -from .models.profile import ProfileConfiguration -from .output import FormattedOutput -from .pacman.config import PacmanConfig -from .translationhandler import Language, tr, translation_handler - - -class GlobalMenu(AbstractMenu[None]): - def __init__(self, arch_config: ArchConfig) -> None: - self._arch_config = arch_config - menu_optioons = self._get_menu_options() - - self._item_group = MenuItemGroup( - menu_optioons, - sort_items=False, - checkmarks=True, - ) - - super().__init__(self._item_group, config=arch_config) - - def _get_menu_options(self) -> list[MenuItem]: - menu_options = [ - MenuItem( - text=tr('Archinstall language'), - action=self._select_archinstall_language, - display_action=lambda x: x.display_name if x else '', - key='archinstall_language', - ), - MenuItem( - text=tr('Locales'), - action=self._locale_selection, - preview_action=self._prev_locale, - key='locale_config', - ), - MenuItem( - text=tr('Mirrors and repositories'), - action=self._mirror_configuration, - preview_action=self._prev_mirror_config, - key='mirror_config', - ), - MenuItem( - text=tr('Disk configuration'), - action=self._select_disk_config, - preview_action=self._prev_disk_config, - mandatory=True, - key='disk_config', - ), - MenuItem( - text=tr('Swap'), - value=True, - action=ask_for_swap, - preview_action=self._prev_swap, - key='swap', - ), - MenuItem( - text=tr('Bootloader'), - value=Bootloader.get_default(), - action=self._select_bootloader, - preview_action=self._prev_bootloader, - mandatory=True, - key='bootloader', - ), - MenuItem( - text=tr('Unified kernel images'), - value=False, - enabled=SysInfo.has_uefi(), - action=ask_for_uki, - preview_action=self._prev_uki, - key='uki', - ), - MenuItem( - text=tr('Hostname'), - value='archlinux', - action=ask_hostname, - preview_action=self._prev_hostname, - key='hostname', - ), - MenuItem( - text=tr('Authentication'), - action=self._select_authentication, - preview_action=self._prev_authentication, - key='auth_config', - ), - MenuItem( - text=tr('Profile'), - action=self._select_profile, - preview_action=self._prev_profile, - key='profile_config', - ), - MenuItem( - text=tr('Applications'), - action=self._select_applications, - value=[], - preview_action=self._prev_applications, - key='app_config', - ), - MenuItem( - text=tr('Kernels'), - value=['linux'], - action=select_kernel, - preview_action=self._prev_kernel, - mandatory=True, - key='kernels', - ), - MenuItem( - text=tr('Network configuration'), - action=ask_to_configure_network, - value={}, - preview_action=self._prev_network_config, - key='network_config', - ), - MenuItem( - text=tr('Parallel Downloads'), - action=add_number_of_parallel_downloads, - value=0, - preview_action=self._prev_parallel_dw, - key='parallel_downloads', - ), - MenuItem( - text=tr('Additional packages'), - action=self._select_additional_packages, - value=[], - preview_action=self._prev_additional_pkgs, - key='packages', - ), - MenuItem( - text=tr('Timezone'), - action=ask_for_a_timezone, - value='UTC', - preview_action=self._prev_tz, - key='timezone', - ), - MenuItem( - text=tr('Automatic time sync (NTP)'), - action=ask_ntp, - value=True, - preview_action=self._prev_ntp, - key='ntp', - ), - MenuItem( - text='', - ), - MenuItem( - text=tr('Save configuration'), - action=lambda x: self._safe_config(), - key=f'{CONFIG_KEY}_save', - ), - MenuItem( - text=tr('Install'), - preview_action=self._prev_install_invalid_config, - key=f'{CONFIG_KEY}_install', - ), - MenuItem( - text=tr('Abort'), - action=lambda x: exit(1), - key=f'{CONFIG_KEY}_abort', - ), - ] - - return menu_options - - def _safe_config(self) -> None: - # data: dict[str, Any] = {} - # for item in self._item_group.items: - # if item.key is not None: - # data[item.key] = item.value - - self.sync_all_to_config() - save_config(self._arch_config) - - def _missing_configs(self) -> list[str]: - item: MenuItem = self._item_group.find_by_key('auth_config') - auth_config: AuthenticationConfiguration | None = item.value - - def check(s: str) -> bool: - item = self._item_group.find_by_key(s) - return item.has_value() - - def has_superuser() -> bool: - if auth_config and auth_config.users: - return any([u.sudo for u in auth_config.users]) - return False - - missing = set() - - if (auth_config is None or auth_config.root_enc_password is None) and not has_superuser(): - missing.add( - tr('Either root-password or at least 1 user with sudo privileges must be specified'), - ) - - for item in self._item_group.items: - if item.mandatory: - assert item.key is not None - if not check(item.key): - missing.add(item.text) - - return list(missing) - - @override - def _is_config_valid(self) -> bool: - """ - Checks the validity of the current configuration. - """ - if len(self._missing_configs()) != 0: - return False - return self._validate_bootloader() is None - - def _select_archinstall_language(self, preset: Language) -> Language: - from .interactions.general_conf import select_archinstall_language - - language = select_archinstall_language(translation_handler.translated_languages, preset) - translation_handler.activate(language) - - self._update_lang_text() - - return language - - def _select_applications(self, preset: ApplicationConfiguration | None) -> ApplicationConfiguration | None: - app_config = ApplicationMenu(preset).run() - return app_config - - def _select_authentication(self, preset: AuthenticationConfiguration | None) -> AuthenticationConfiguration | None: - auth_config = AuthenticationMenu(preset).run() - return auth_config - - def _update_lang_text(self) -> None: - """ - The options for the global menu are generated with a static text; - each entry of the menu needs to be updated with the new translation - """ - new_options = self._get_menu_options() - - for o in new_options: - if o.key is not None: - self._item_group.find_by_key(o.key).text = o.text - - def _locale_selection(self, preset: LocaleConfiguration) -> LocaleConfiguration: - locale_config = LocaleMenu(preset).run() - return locale_config - - def _prev_locale(self, item: MenuItem) -> str | None: - if not item.value: - return None - - config: LocaleConfiguration = item.value - return config.preview() - - def _prev_network_config(self, item: MenuItem) -> str | None: - if item.value: - network_config: NetworkConfiguration = item.value - if network_config.type == NicType.MANUAL: - output = FormattedOutput.as_table(network_config.nics) - else: - output = f'{tr("Network configuration")}:\n{network_config.type.display_msg()}' - - return output - return None - - def _prev_additional_pkgs(self, item: MenuItem) -> str | None: - if item.value: - output = '\n'.join(sorted(item.value)) - return output - return None - - def _prev_authentication(self, item: MenuItem) -> str | None: - if item.value: - auth_config: AuthenticationConfiguration = item.value - output = '' - - if auth_config.root_enc_password: - output += f'{tr("Root password")}: {auth_config.root_enc_password.hidden()}\n' - - if auth_config.users: - output += FormattedOutput.as_table(auth_config.users) + '\n' - - if auth_config.u2f_config: - u2f_config = auth_config.u2f_config - login_method = u2f_config.u2f_login_method.display_value() - output = tr('U2F login method: ') + login_method - - output += '\n' - output += tr('Passwordless sudo: ') + (tr('Enabled') if u2f_config.passwordless_sudo else tr('Disabled')) - - return output - - return None - - def _prev_applications(self, item: MenuItem) -> str | None: - if item.value: - app_config: ApplicationConfiguration = item.value - output = '' - - if app_config.bluetooth_config: - output += f'{tr("Bluetooth")}: ' - output += tr('Enabled') if app_config.bluetooth_config.enabled else tr('Disabled') - output += '\n' - - if app_config.audio_config: - audio_config = app_config.audio_config - output += f'{tr("Audio")}: {audio_config.audio.value}' - output += '\n' - - return output - - return None - - def _prev_tz(self, item: MenuItem) -> str | None: - if item.value: - return f'{tr("Timezone")}: {item.value}' - return None - - def _prev_ntp(self, item: MenuItem) -> str | None: - if item.value is not None: - output = f'{tr("NTP")}: ' - output += tr('Enabled') if item.value else tr('Disabled') - return output - return None - - def _prev_disk_config(self, item: MenuItem) -> str | None: - disk_layout_conf: DiskLayoutConfiguration | None = item.value - - if disk_layout_conf: - output = tr('Configuration type: {}').format(disk_layout_conf.config_type.display_msg()) + '\n' - - if disk_layout_conf.config_type == DiskLayoutType.Pre_mount: - output += tr('Mountpoint') + ': ' + str(disk_layout_conf.mountpoint) - - if disk_layout_conf.lvm_config: - output += '{}: {}'.format(tr('LVM configuration type'), disk_layout_conf.lvm_config.config_type.display_msg()) + '\n' - - if disk_layout_conf.disk_encryption: - output += tr('Disk encryption') + ': ' + EncryptionType.type_to_text(disk_layout_conf.disk_encryption.encryption_type) + '\n' - - if disk_layout_conf.btrfs_options: - btrfs_options = disk_layout_conf.btrfs_options - if btrfs_options.snapshot_config: - output += tr('Btrfs snapshot type: {}').format(btrfs_options.snapshot_config.snapshot_type.value) + '\n' - - return output - - return None - - def _prev_swap(self, item: MenuItem) -> str | None: - if item.value is not None: - output = f'{tr("Swap on zram")}: ' - output += tr('Enabled') if item.value else tr('Disabled') - return output - return None - - def _prev_uki(self, item: MenuItem) -> str | None: - if item.value is not None: - output = f'{tr("Unified kernel images")}: ' - output += tr('Enabled') if item.value else tr('Disabled') - return output - return None - - def _prev_hostname(self, item: MenuItem) -> str | None: - if item.value is not None: - return f'{tr("Hostname")}: {item.value}' - return None - - def _prev_parallel_dw(self, item: MenuItem) -> str | None: - if item.value is not None: - return f'{tr("Parallel Downloads")}: {item.value}' - return None - - def _prev_kernel(self, item: MenuItem) -> str | None: - if item.value: - kernel = ', '.join(item.value) - return f'{tr("Kernel")}: {kernel}' - return None - - def _prev_bootloader(self, item: MenuItem) -> str | None: - if item.value is not None: - return f'{tr("Bootloader")}: {item.value.value}' - return None - - def _validate_bootloader(self) -> str | None: - """ - Checks the selected bootloader is valid for the selected filesystem - type of the boot partition. - - Returns [`None`] if the bootloader is valid, otherwise returns a - string with the error message. - - XXX: The caller is responsible for wrapping the string with the translation - shim if necessary. - """ - bootloader: Bootloader | None = None - root_partition: PartitionModification | None = None - boot_partition: PartitionModification | None = None - efi_partition: PartitionModification | None = None - - bootloader = self._item_group.find_by_key('bootloader').value - - if bootloader == Bootloader.NO_BOOTLOADER: - return None - - if disk_config := self._item_group.find_by_key('disk_config').value: - for layout in disk_config.device_modifications: - if root_partition := layout.get_root_partition(): - break - for layout in disk_config.device_modifications: - if boot_partition := layout.get_boot_partition(): - break - if SysInfo.has_uefi(): - for layout in disk_config.device_modifications: - if efi_partition := layout.get_efi_partition(): - break - else: - return 'No disk layout selected' - - if root_partition is None: - return 'Root partition not found' - - if boot_partition is None: - return 'Boot partition not found' - - if SysInfo.has_uefi(): - if efi_partition is None: - return 'EFI system partition (ESP) not found' - - if efi_partition.fs_type not in [FilesystemType.Fat12, FilesystemType.Fat16, FilesystemType.Fat32]: - return 'ESP must be formatted as a FAT filesystem' - - if bootloader == Bootloader.Limine: - if boot_partition.fs_type not in [FilesystemType.Fat12, FilesystemType.Fat16, FilesystemType.Fat32]: - return 'Limine does not support booting with a non-FAT boot partition' - - return None - - def _prev_install_invalid_config(self, item: MenuItem) -> str | None: - if missing := self._missing_configs(): - text = tr('Missing configurations:\n') - for m in missing: - text += f'- {m}\n' - return text[:-1] # remove last new line - - if error := self._validate_bootloader(): - return tr(f'Invalid configuration: {error}') - - return None - - def _prev_profile(self, item: MenuItem) -> str | None: - profile_config: ProfileConfiguration | None = item.value - - if profile_config and profile_config.profile: - output = tr('Profiles') + ': ' - if profile_names := profile_config.profile.current_selection_names(): - output += ', '.join(profile_names) + '\n' - else: - output += profile_config.profile.name + '\n' - - if profile_config.gfx_driver: - output += tr('Graphics driver') + ': ' + profile_config.gfx_driver.value + '\n' - - if profile_config.greeter: - output += tr('Greeter') + ': ' + profile_config.greeter.value + '\n' - - return output - - return None - - def _select_disk_config( - self, - preset: DiskLayoutConfiguration | None = None, - ) -> DiskLayoutConfiguration | None: - disk_config = DiskLayoutConfigurationMenu(preset).run() - - return disk_config - - def _select_bootloader(self, preset: Bootloader | None) -> Bootloader | None: - bootloader = ask_for_bootloader(preset) - - if bootloader: - uki = self._item_group.find_by_key('uki') - if not SysInfo.has_uefi() or not bootloader.has_uki_support(): - uki.value = False - uki.enabled = False - else: - uki.enabled = True - - return bootloader - - def _select_profile(self, current_profile: ProfileConfiguration | None) -> ProfileConfiguration | None: - from .profile.profile_menu import ProfileMenu - - profile_config = ProfileMenu(preset=current_profile).run() - return profile_config - - def _select_additional_packages(self, preset: list[str]) -> list[str]: - config: MirrorConfiguration | None = self._item_group.find_by_key('mirror_config').value - - repositories: set[Repository] = set() - if config: - repositories = set(config.optional_repositories) - - packages = ask_additional_packages_to_install( - preset, - repositories=repositories, - ) - - return packages - - def _mirror_configuration(self, preset: MirrorConfiguration | None = None) -> MirrorConfiguration: - mirror_configuration = MirrorMenu(preset=preset).run() - - if mirror_configuration.optional_repositories: - # reset the package list cache in case the repository selection has changed - list_available_packages.cache_clear() - - # enable the repositories in the config - pacman_config = PacmanConfig(None) - pacman_config.enable(mirror_configuration.optional_repositories) - pacman_config.apply() - - return mirror_configuration - - def _prev_mirror_config(self, item: MenuItem) -> str | None: - if not item.value: - return None - - mirror_config: MirrorConfiguration = item.value - - output = '' - if mirror_config.mirror_regions: - title = tr('Selected mirror regions') - divider = '-' * len(title) - regions = mirror_config.region_names - output += f'{title}\n{divider}\n{regions}\n\n' - - if mirror_config.custom_servers: - title = tr('Custom servers') - divider = '-' * len(title) - servers = mirror_config.custom_server_urls - output += f'{title}\n{divider}\n{servers}\n\n' - - if mirror_config.optional_repositories: - title = tr('Optional repositories') - divider = '-' * len(title) - repos = ', '.join([r.value for r in mirror_config.optional_repositories]) - output += f'{title}\n{divider}\n{repos}\n\n' - - if mirror_config.custom_repositories: - title = tr('Custom repositories') - table = FormattedOutput.as_table(mirror_config.custom_repositories) - output += f'{title}:\n\n{table}' - - return output.strip() diff --git a/examples/archinstall/archinstall/lib/hardware.py b/examples/archinstall/archinstall/lib/hardware.py deleted file mode 100644 index e1278df..0000000 --- a/examples/archinstall/archinstall/lib/hardware.py +++ /dev/null @@ -1,323 +0,0 @@ -import os -from enum import Enum -from functools import cached_property -from pathlib import Path - -from .exceptions import SysCallError -from .general import SysCommand -from .networking import enrich_iface_types, list_interfaces -from .output import debug -from .translationhandler import tr - - -class CpuVendor(Enum): - AuthenticAMD = 'amd' - GenuineIntel = 'intel' - _Unknown = 'unknown' - - @classmethod - def get_vendor(cls, name: str) -> 'CpuVendor': - if vendor := getattr(cls, name, None): - return vendor - else: - debug(f"Unknown CPU vendor '{name}' detected.") - return cls._Unknown - - def _has_microcode(self) -> bool: - match self: - case CpuVendor.AuthenticAMD | CpuVendor.GenuineIntel: - return True - case _: - return False - - def get_ucode(self) -> Path | None: - if self._has_microcode(): - return Path(self.value + '-ucode.img') - return None - - -class GfxPackage(Enum): - Dkms = 'dkms' - IntelMediaDriver = 'intel-media-driver' - LibvaIntelDriver = 'libva-intel-driver' - LibvaMesaDriver = 'libva-mesa-driver' - LibvaNvidiaDriver = 'libva-nvidia-driver' - Mesa = 'mesa' - NvidiaDkms = 'nvidia-dkms' - NvidiaOpenDkms = 'nvidia-open-dkms' - VulkanIntel = 'vulkan-intel' - VulkanRadeon = 'vulkan-radeon' - VulkanNouveau = 'vulkan-nouveau' - Xf86VideoAmdgpu = 'xf86-video-amdgpu' - Xf86VideoAti = 'xf86-video-ati' - Xf86VideoNouveau = 'xf86-video-nouveau' - XorgServer = 'xorg-server' - XorgXinit = 'xorg-xinit' - - -class GfxDriver(Enum): - AllOpenSource = 'All open-source' - AmdOpenSource = 'AMD / ATI (open-source)' - IntelOpenSource = 'Intel (open-source)' - NvidiaOpenKernel = 'Nvidia (open kernel module for newer GPUs, Turing+)' - NvidiaOpenSource = 'Nvidia (open-source nouveau driver)' - NvidiaProprietary = 'Nvidia (proprietary)' - VMOpenSource = 'VirtualBox (open-source)' - - def is_nvidia(self) -> bool: - match self: - case GfxDriver.NvidiaProprietary | GfxDriver.NvidiaOpenSource | GfxDriver.NvidiaOpenKernel: - return True - case _: - return False - - def packages_text(self) -> str: - pkg_names = [p.value for p in self.gfx_packages()] - text = tr('Installed packages') + ':\n' - - for p in sorted(pkg_names): - text += f'\t- {p}\n' - - return text - - def gfx_packages(self) -> list[GfxPackage]: - packages = [GfxPackage.XorgServer, GfxPackage.XorgXinit] - - match self: - case GfxDriver.AllOpenSource: - packages += [ - GfxPackage.Mesa, - GfxPackage.Xf86VideoAmdgpu, - GfxPackage.Xf86VideoAti, - GfxPackage.Xf86VideoNouveau, - GfxPackage.LibvaMesaDriver, - GfxPackage.LibvaIntelDriver, - GfxPackage.IntelMediaDriver, - GfxPackage.VulkanRadeon, - GfxPackage.VulkanIntel, - GfxPackage.VulkanNouveau, - ] - case GfxDriver.AmdOpenSource: - packages += [ - GfxPackage.Mesa, - GfxPackage.Xf86VideoAmdgpu, - GfxPackage.Xf86VideoAti, - GfxPackage.LibvaMesaDriver, - GfxPackage.VulkanRadeon, - ] - case GfxDriver.IntelOpenSource: - packages += [ - GfxPackage.Mesa, - GfxPackage.LibvaIntelDriver, - GfxPackage.IntelMediaDriver, - GfxPackage.VulkanIntel, - ] - case GfxDriver.NvidiaOpenKernel: - packages += [ - GfxPackage.NvidiaOpenDkms, - GfxPackage.Dkms, - GfxPackage.LibvaNvidiaDriver, - ] - case GfxDriver.NvidiaOpenSource: - packages += [ - GfxPackage.Mesa, - GfxPackage.Xf86VideoNouveau, - GfxPackage.LibvaMesaDriver, - GfxPackage.VulkanNouveau, - ] - case GfxDriver.NvidiaProprietary: - packages += [ - GfxPackage.NvidiaDkms, - GfxPackage.Dkms, - GfxPackage.LibvaNvidiaDriver, - ] - case GfxDriver.VMOpenSource: - packages += [ - GfxPackage.Mesa, - ] - - return packages - - -class _SysInfo: - def __init__(self) -> None: - pass - - @cached_property - def cpu_info(self) -> dict[str, str]: - """ - Returns system cpu information - """ - cpu_info_path = Path('/proc/cpuinfo') - cpu: dict[str, str] = {} - - with cpu_info_path.open() as file: - for line in file: - if line := line.strip(): - key, value = line.split(':', maxsplit=1) - cpu[key.strip()] = value.strip() - - return cpu - - @cached_property - def mem_info(self) -> dict[str, int]: - """ - Returns system memory information - """ - mem_info_path = Path('/proc/meminfo') - mem_info: dict[str, int] = {} - - with mem_info_path.open() as file: - for line in file: - key, value = line.strip().split(':') - num = value.split()[0] - mem_info[key] = int(num) - - return mem_info - - def mem_info_by_key(self, key: str) -> int: - return self.mem_info[key] - - @cached_property - def loaded_modules(self) -> list[str]: - """ - Returns loaded kernel modules - """ - modules_path = Path('/proc/modules') - modules: list[str] = [] - - with modules_path.open() as file: - for line in file: - module = line.split(maxsplit=1)[0] - modules.append(module) - - return modules - - -_sys_info = _SysInfo() - - -class SysInfo: - @staticmethod - def has_wifi() -> bool: - ifaces = list(list_interfaces().values()) - return 'WIRELESS' in enrich_iface_types(ifaces).values() - - @staticmethod - def has_uefi() -> bool: - return os.path.isdir('/sys/firmware/efi') - - @staticmethod - def _graphics_devices() -> dict[str, str]: - cards: dict[str, str] = {} - for line in SysCommand('lspci'): - if b' VGA ' in line or b' 3D ' in line: - _, identifier = line.split(b': ', 1) - cards[identifier.strip().decode('UTF-8')] = str(line) - return cards - - @staticmethod - def has_nvidia_graphics() -> bool: - return any('nvidia' in x.lower() for x in SysInfo._graphics_devices()) - - @staticmethod - def has_amd_graphics() -> bool: - return any('amd' in x.lower() for x in SysInfo._graphics_devices()) - - @staticmethod - def has_intel_graphics() -> bool: - return any('intel' in x.lower() for x in SysInfo._graphics_devices()) - - @staticmethod - def cpu_vendor() -> CpuVendor | None: - if vendor := _sys_info.cpu_info.get('vendor_id'): - return CpuVendor.get_vendor(vendor) - return None - - @staticmethod - def cpu_model() -> str | None: - return _sys_info.cpu_info.get('model name', None) - - @staticmethod - def sys_vendor() -> str | None: - try: - with open('/sys/devices/virtual/dmi/id/sys_vendor') as vendor: - return vendor.read().strip() - except FileNotFoundError: - return None - - @staticmethod - def product_name() -> str | None: - try: - with open('/sys/devices/virtual/dmi/id/product_name') as product: - return product.read().strip() - except FileNotFoundError: - return None - - @staticmethod - def mem_available() -> int: - return _sys_info.mem_info_by_key('MemAvailable') - - @staticmethod - def mem_free() -> int: - return _sys_info.mem_info_by_key('MemFree') - - @staticmethod - def mem_total() -> int: - return _sys_info.mem_info_by_key('MemTotal') - - @staticmethod - def virtualization() -> str | None: - try: - return str(SysCommand('systemd-detect-virt')).strip('\r\n') - except SysCallError as err: - debug(f'Could not detect virtual system: {err}') - - return None - - @staticmethod - def is_vm() -> bool: - try: - result = SysCommand('systemd-detect-virt') - return b'none' not in b''.join(result).lower() - except SysCallError as err: - debug(f'System is not running in a VM: {err}') - - return False - - @staticmethod - def requires_sof_fw() -> bool: - return 'snd_sof' in _sys_info.loaded_modules - - @staticmethod - def requires_alsa_fw() -> bool: - modules = ( - 'snd_asihpi', - 'snd_cs46xx', - 'snd_darla20', - 'snd_darla24', - 'snd_echo3g', - 'snd_emu10k1', - 'snd_gina20', - 'snd_gina24', - 'snd_hda_codec_ca0132', - 'snd_hdsp', - 'snd_indigo', - 'snd_indigodj', - 'snd_indigodjx', - 'snd_indigoio', - 'snd_indigoiox', - 'snd_layla20', - 'snd_layla24', - 'snd_mia', - 'snd_mixart', - 'snd_mona', - 'snd_pcxhr', - 'snd_vx_lib', - ) - - for loaded_module in _sys_info.loaded_modules: - if loaded_module in modules: - return True - - return False diff --git a/examples/archinstall/archinstall/lib/installer.py b/examples/archinstall/archinstall/lib/installer.py deleted file mode 100644 index e9ddafc..0000000 --- a/examples/archinstall/archinstall/lib/installer.py +++ /dev/null @@ -1,1859 +0,0 @@ -import glob -import os -import platform -import re -import shlex -import shutil -import subprocess -import textwrap -import time -from collections.abc import Callable -from pathlib import Path -from subprocess import CalledProcessError -from types import TracebackType -from typing import Any - -from archinstall.lib.disk.device_handler import device_handler -from archinstall.lib.disk.fido import Fido2 -from archinstall.lib.disk.utils import get_lsblk_by_mountpoint, get_lsblk_info -from archinstall.lib.models.device import ( - DiskEncryption, - DiskLayoutConfiguration, - EncryptionType, - FilesystemType, - LvmVolume, - PartitionModification, - SectorSize, - Size, - SnapshotType, - SubvolumeModification, - Unit, -) -from archinstall.lib.models.packages import Repository -from archinstall.lib.packages import installed_package -from archinstall.lib.translationhandler import tr -from archinstall.tui.curses_menu import Tui - -from .args import arch_config_handler -from .exceptions import DiskError, HardwareIncompatibilityError, RequirementError, ServiceException, SysCallError -from .general import SysCommand, run -from .hardware import SysInfo -from .locale.utils import verify_keyboard_layout, verify_x11_keyboard_layout -from .luks import Luks2 -from .models.bootloader import Bootloader -from .models.locale import LocaleConfiguration -from .models.mirrors import MirrorConfiguration -from .models.network import Nic -from .models.users import User -from .output import debug, error, info, log, logger, warn -from .pacman import Pacman -from .pacman.config import PacmanConfig -from .plugins import plugins -from .storage import storage - -# Any package that the Installer() is responsible for (optional and the default ones) -__packages__ = ['base', 'base-devel', 'linux-firmware', 'linux', 'linux-lts', 'linux-zen', 'linux-hardened'] - -# Additional packages that are installed if the user is running the Live ISO with accessibility tools enabled -__accessibility_packages__ = ['brltty', 'espeakup', 'alsa-utils'] - - -class Installer: - def __init__( - self, - target: Path, - disk_config: DiskLayoutConfiguration, - base_packages: list[str] = [], - kernels: list[str] | None = None, - ): - """ - `Installer()` is the wrapper for most basic installation steps. - It also wraps :py:func:`~archinstall.Installer.pacstrap` among other things. - """ - self._base_packages = base_packages or __packages__[:3] - self.kernels = kernels or ['linux'] - self._disk_config = disk_config - - self._disk_encryption = disk_config.disk_encryption or DiskEncryption(EncryptionType.NoEncryption) - self.target: Path = target - - self.init_time = time.strftime('%Y-%m-%d_%H-%M-%S') - self.milliseconds = int(str(time.time()).split('.')[1]) - self._helper_flags: dict[str, str | bool | None] = { - 'base': False, - 'bootloader': None, - } - - for kernel in self.kernels: - self._base_packages.append(kernel) - - # If using accessibility tools in the live environment, append those to the packages list - if accessibility_tools_in_use(): - self._base_packages.extend(__accessibility_packages__) - - self.post_base_install: list[Callable] = [] # type: ignore[type-arg] - - storage['installation_session'] = self - - self._modules: list[str] = [] - self._binaries: list[str] = [] - self._files: list[str] = [] - - # systemd, sd-vconsole and sd-encrypt will be replaced by udev, keymap and encrypt - # if HSM is not used to encrypt the root volume. Check mkinitcpio() function for that override. - self._hooks: list[str] = [ - 'base', - 'systemd', - 'autodetect', - 'microcode', - 'modconf', - 'kms', - 'keyboard', - 'sd-vconsole', - 'block', - 'filesystems', - 'fsck', - ] - self._kernel_params: list[str] = [] - self._fstab_entries: list[str] = [] - - self._zram_enabled = False - self._disable_fstrim = False - - self.pacman = Pacman(self.target, arch_config_handler.args.silent) - - def __enter__(self) -> 'Installer': - return self - - def __exit__(self, exc_type: type[BaseException] | None, exc_value: BaseException | None, traceback: TracebackType | None) -> bool | None: - if exc_type is not None: - error(str(exc_value)) - - self.sync_log_to_install_medium() - - # We avoid printing /mnt/ because that might confuse people if they note it down - # and then reboot, and a identical log file will be found in the ISO medium anyway. - Tui.print(str(tr('[!] A log file has been created here: {}').format(logger.path))) - Tui.print(tr('Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues')) - - # Return None to propagate the exception - return None - - self.sync() - - if not (missing_steps := self.post_install_check()): - msg = f'Installation completed without any errors.\nLog files temporarily available at {logger.directory}.\nYou may reboot when ready.\n' - log(msg, fg='green') - self.sync_log_to_install_medium() - return True - else: - warn('Some required steps were not successfully installed/configured before leaving the installer:') - - for step in missing_steps: - warn(f' - {step}') - - warn(f'Detailed error logs can be found at: {logger.directory}') - warn('Submit this zip file as an issue to https://github.com/archlinux/archinstall/issues') - - self.sync_log_to_install_medium() - return False - - def sync(self) -> None: - info(tr('Syncing the system...')) - SysCommand('sync') - - def remove_mod(self, mod: str) -> None: - if mod in self._modules: - self._modules.remove(mod) - - def append_mod(self, mod: str) -> None: - if mod not in self._modules: - self._modules.append(mod) - - def _verify_service_stop(self) -> None: - """ - Certain services might be running that affects the system during installation. - One such service is "reflector.service" which updates /etc/pacman.d/mirrorlist - We need to wait for it before we continue since we opted in to use a custom mirror/region. - """ - - if not arch_config_handler.args.skip_ntp: - info(tr('Waiting for time sync (timedatectl show) to complete.')) - - started_wait = time.time() - notified = False - while True: - if not notified and time.time() - started_wait > 5: - notified = True - warn(tr('Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/')) - - time_val = SysCommand('timedatectl show --property=NTPSynchronized --value').decode() - if time_val and time_val.strip() == 'yes': - break - time.sleep(1) - else: - info(tr('Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)')) - - info('Waiting for automatic mirror selection (reflector) to complete.') - while self._service_state('reflector') not in ('dead', 'failed', 'exited'): - time.sleep(1) - - # info('Waiting for pacman-init.service to complete.') - # while self._service_state('pacman-init') not in ('dead', 'failed', 'exited'): - # time.sleep(1) - - if not arch_config_handler.args.skip_wkd: - info(tr('Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete.')) - # Wait for the timer to kick in - while self._service_started('archlinux-keyring-wkd-sync.timer') is None: - time.sleep(1) - - # Wait for the service to enter a finished state - while self._service_state('archlinux-keyring-wkd-sync.service') not in ('dead', 'failed', 'exited'): - time.sleep(1) - - def _verify_boot_part(self) -> None: - """ - Check that mounted /boot device has at minimum size for installation - The reason this check is here is to catch pre-mounted device configuration and potentially - configured one that has not gone through any previous checks (e.g. --silence mode) - - NOTE: this function should be run AFTER running the mount_ordered_layout function - """ - boot_mount = self.target / 'boot' - lsblk_info = get_lsblk_by_mountpoint(boot_mount) - - if len(lsblk_info) > 0: - if lsblk_info[0].size < Size(200, Unit.MiB, SectorSize.default()): - raise DiskError( - f'The boot partition mounted at {boot_mount} is not large enough to install a boot loader. ' - f'Please resize it to at least 200MiB and re-run the installation.', - ) - - def sanity_check(self) -> None: - # self._verify_boot_part() - self._verify_service_stop() - - def mount_ordered_layout(self) -> None: - debug('Mounting ordered layout') - - luks_handlers: dict[Any, Luks2] = {} - - match self._disk_encryption.encryption_type: - case EncryptionType.NoEncryption: - self._mount_lvm_layout() - case EncryptionType.Luks: - luks_handlers = self._prepare_luks_partitions(self._disk_encryption.partitions) - case EncryptionType.LvmOnLuks: - luks_handlers = self._prepare_luks_partitions(self._disk_encryption.partitions) - self._import_lvm() - self._mount_lvm_layout(luks_handlers) - case EncryptionType.LuksOnLvm: - self._import_lvm() - luks_handlers = self._prepare_luks_lvm(self._disk_encryption.lvm_volumes) - self._mount_lvm_layout(luks_handlers) - - # mount all regular partitions - self._mount_partition_layout(luks_handlers) - - def _mount_partition_layout(self, luks_handlers: dict[Any, Luks2]) -> None: - debug('Mounting partition layout') - - # do not mount any PVs part of the LVM configuration - pvs = [] - if self._disk_config.lvm_config: - pvs = self._disk_config.lvm_config.get_all_pvs() - - sorted_device_mods = self._disk_config.device_modifications.copy() - - # move the device with the root partition to the beginning of the list - for mod in self._disk_config.device_modifications: - if any(partition.is_root() for partition in mod.partitions): - sorted_device_mods.remove(mod) - sorted_device_mods.insert(0, mod) - break - - for mod in sorted_device_mods: - not_pv_part_mods = [p for p in mod.partitions if p not in pvs] - - # partitions have to mounted in the right order on btrfs the mountpoint will - # be empty as the actual subvolumes are getting mounted instead so we'll use - # '/' just for sorting - sorted_part_mods = sorted(not_pv_part_mods, key=lambda x: x.mountpoint or Path('/')) - - for part_mod in sorted_part_mods: - if luks_handler := luks_handlers.get(part_mod): - self._mount_luks_partition(part_mod, luks_handler) - else: - self._mount_partition(part_mod) - - def _mount_lvm_layout(self, luks_handlers: dict[Any, Luks2] = {}) -> None: - lvm_config = self._disk_config.lvm_config - - if not lvm_config: - debug('No lvm config defined to be mounted') - return - - debug('Mounting LVM layout') - - for vg in lvm_config.vol_groups: - sorted_vol = sorted(vg.volumes, key=lambda x: x.mountpoint or Path('/')) - - for vol in sorted_vol: - if luks_handler := luks_handlers.get(vol): - self._mount_luks_volume(vol, luks_handler) - else: - self._mount_lvm_vol(vol) - - def _prepare_luks_partitions( - self, - partitions: list[PartitionModification], - ) -> dict[PartitionModification, Luks2]: - return { - part_mod: device_handler.unlock_luks2_dev( - part_mod.dev_path, - part_mod.mapper_name, - self._disk_encryption.encryption_password, - ) - for part_mod in partitions - if part_mod.mapper_name and part_mod.dev_path - } - - def _import_lvm(self) -> None: - lvm_config = self._disk_config.lvm_config - - if not lvm_config: - debug('No lvm config defined to be imported') - return - - for vg in lvm_config.vol_groups: - device_handler.lvm_import_vg(vg) - - for vol in vg.volumes: - device_handler.lvm_vol_change(vol, True) - - def _prepare_luks_lvm( - self, - lvm_volumes: list[LvmVolume], - ) -> dict[LvmVolume, Luks2]: - return { - vol: device_handler.unlock_luks2_dev( - vol.dev_path, - vol.mapper_name, - self._disk_encryption.encryption_password, - ) - for vol in lvm_volumes - if vol.mapper_name and vol.dev_path - } - - def _mount_partition(self, part_mod: PartitionModification) -> None: - if not part_mod.dev_path: - return - - # it would be none if it's btrfs as the subvolumes will have the mountpoints defined - if part_mod.mountpoint: - target = self.target / part_mod.relative_mountpoint - device_handler.mount(part_mod.dev_path, target, options=part_mod.mount_options) - elif part_mod.fs_type == FilesystemType.Btrfs: - self._mount_btrfs_subvol( - part_mod.dev_path, - part_mod.btrfs_subvols, - part_mod.mount_options, - ) - elif part_mod.is_swap(): - device_handler.swapon(part_mod.dev_path) - - def _mount_lvm_vol(self, volume: LvmVolume) -> None: - if volume.fs_type != FilesystemType.Btrfs: - if volume.mountpoint and volume.dev_path: - target = self.target / volume.relative_mountpoint - device_handler.mount(volume.dev_path, target, options=volume.mount_options) - - if volume.fs_type == FilesystemType.Btrfs and volume.dev_path: - self._mount_btrfs_subvol(volume.dev_path, volume.btrfs_subvols, volume.mount_options) - - def _mount_luks_partition(self, part_mod: PartitionModification, luks_handler: Luks2) -> None: - if not luks_handler.mapper_dev: - return None - - if part_mod.fs_type == FilesystemType.Btrfs and part_mod.btrfs_subvols: - self._mount_btrfs_subvol(luks_handler.mapper_dev, part_mod.btrfs_subvols, part_mod.mount_options) - elif part_mod.mountpoint: - target = self.target / part_mod.relative_mountpoint - device_handler.mount(luks_handler.mapper_dev, target, options=part_mod.mount_options) - - def _mount_luks_volume(self, volume: LvmVolume, luks_handler: Luks2) -> None: - if volume.fs_type != FilesystemType.Btrfs: - if volume.mountpoint and luks_handler.mapper_dev: - target = self.target / volume.relative_mountpoint - device_handler.mount(luks_handler.mapper_dev, target, options=volume.mount_options) - - if volume.fs_type == FilesystemType.Btrfs and luks_handler.mapper_dev: - self._mount_btrfs_subvol(luks_handler.mapper_dev, volume.btrfs_subvols, volume.mount_options) - - def _mount_btrfs_subvol( - self, - dev_path: Path, - subvolumes: list[SubvolumeModification], - mount_options: list[str] = [], - ) -> None: - for subvol in sorted(subvolumes, key=lambda x: x.relative_mountpoint): - mountpoint = self.target / subvol.relative_mountpoint - options = mount_options + [f'subvol={subvol.name}'] - device_handler.mount(dev_path, mountpoint, options=options) - - def generate_key_files(self) -> None: - match self._disk_encryption.encryption_type: - case EncryptionType.Luks: - self._generate_key_files_partitions() - case EncryptionType.LuksOnLvm: - self._generate_key_file_lvm_volumes() - case EncryptionType.LvmOnLuks: - # currently LvmOnLuks only supports a single - # partitioning layout (boot + partition) - # so we won't need any keyfile generation atm - pass - - def _generate_key_files_partitions(self) -> None: - for part_mod in self._disk_encryption.partitions: - gen_enc_file = self._disk_encryption.should_generate_encryption_file(part_mod) - - luks_handler = Luks2( - part_mod.safe_dev_path, - mapper_name=part_mod.mapper_name, - password=self._disk_encryption.encryption_password, - ) - - if gen_enc_file and not part_mod.is_root(): - debug(f'Creating key-file: {part_mod.dev_path}') - luks_handler.create_keyfile(self.target) - - if part_mod.is_root() and not gen_enc_file: - if self._disk_encryption.hsm_device: - if self._disk_encryption.encryption_password: - Fido2.fido2_enroll( - self._disk_encryption.hsm_device, - part_mod.safe_dev_path, - self._disk_encryption.encryption_password, - ) - - def _generate_key_file_lvm_volumes(self) -> None: - for vol in self._disk_encryption.lvm_volumes: - gen_enc_file = self._disk_encryption.should_generate_encryption_file(vol) - - luks_handler = Luks2( - vol.safe_dev_path, - mapper_name=vol.mapper_name, - password=self._disk_encryption.encryption_password, - ) - - if gen_enc_file and not vol.is_root(): - info(f'Creating key-file: {vol.dev_path}') - luks_handler.create_keyfile(self.target) - - if vol.is_root() and not gen_enc_file: - if self._disk_encryption.hsm_device: - if self._disk_encryption.encryption_password: - Fido2.fido2_enroll( - self._disk_encryption.hsm_device, - vol.safe_dev_path, - self._disk_encryption.encryption_password, - ) - - def sync_log_to_install_medium(self) -> bool: - # Copy over the install log (if there is one) to the install medium if - # at least the base has been strapped in, otherwise we won't have a filesystem/structure to copy to. - if self._helper_flags.get('base-strapped', False) is True: - absolute_logfile = logger.path - - if not os.path.isdir(f'{self.target}/{os.path.dirname(absolute_logfile)}'): - os.makedirs(f'{self.target}/{os.path.dirname(absolute_logfile)}') - - shutil.copy2(absolute_logfile, f'{self.target}/{absolute_logfile}') - - return True - - def add_swapfile(self, size: str = '4G', enable_resume: bool = True, file: str = '/swapfile') -> None: - if file[:1] != '/': - file = f'/{file}' - if len(file.strip()) <= 0 or file == '/': - raise ValueError(f'The filename for the swap file has to be a valid path, not: {self.target}{file}') - - SysCommand(f'dd if=/dev/zero of={self.target}{file} bs={size} count=1') - SysCommand(f'chmod 0600 {self.target}{file}') - SysCommand(f'mkswap {self.target}{file}') - - self._fstab_entries.append(f'{file} none swap defaults 0 0') - - if enable_resume: - resume_uuid = SysCommand(f'findmnt -no UUID -T {self.target}{file}').decode() - resume_offset = ( - SysCommand( - f'filefrag -v {self.target}{file}', - ) - .decode() - .split('0:', 1)[1] - .split(':', 1)[1] - .split('..', 1)[0] - .strip() - ) - - self._hooks.append('resume') - self._kernel_params.append(f'resume=UUID={resume_uuid}') - self._kernel_params.append(f'resume_offset={resume_offset}') - - def post_install_check(self, *args: str, **kwargs: str) -> list[str]: - return [step for step, flag in self._helper_flags.items() if flag is False] - - def set_mirrors( - self, - mirror_config: MirrorConfiguration, - on_target: bool = False, - ) -> None: - """ - Set the mirror configuration for the installation. - - :param mirror_config: The mirror configuration to use. - :type mirror_config: MirrorConfiguration - - :on_target: Whether to set the mirrors on the target system or the live system. - :param on_target: bool - """ - debug('Setting mirrors on ' + ('target' if on_target else 'live system')) - - for plugin in plugins.values(): - if hasattr(plugin, 'on_mirrors'): - if result := plugin.on_mirrors(mirror_config): - mirror_config = result - - root = self.target if on_target else Path('/') - mirrorlist_config = root / 'etc/pacman.d/mirrorlist' - pacman_config = root / 'etc/pacman.conf' - - repositories_config = mirror_config.repositories_config() - if repositories_config: - debug(f'Pacman config: {repositories_config}') - - with open(pacman_config, 'a') as fp: - fp.write(repositories_config) - - regions_config = mirror_config.regions_config(speed_sort=True) - if regions_config: - debug(f'Mirrorlist:\n{regions_config}') - mirrorlist_config.write_text(regions_config) - - custom_servers = mirror_config.custom_servers_config() - if custom_servers: - debug(f'Custom servers:\n{custom_servers}') - - content = mirrorlist_config.read_text() - mirrorlist_config.write_text(f'{custom_servers}\n\n{content}') - - def genfstab(self, flags: str = '-pU') -> None: - fstab_path = self.target / 'etc' / 'fstab' - info(f'Updating {fstab_path}') - - try: - gen_fstab = SysCommand(f'genfstab {flags} {self.target}').output() - except SysCallError as err: - raise RequirementError(f'Could not generate fstab, strapping in packages most likely failed (disk out of space?)\n Error: {err}') - - with open(fstab_path, 'ab') as fp: - fp.write(gen_fstab) - - if not fstab_path.is_file(): - raise RequirementError('Could not create fstab file') - - for plugin in plugins.values(): - if hasattr(plugin, 'on_genfstab'): - if plugin.on_genfstab(self) is True: - break - - with open(fstab_path, 'a') as fp: - for entry in self._fstab_entries: - fp.write(f'{entry}\n') - - def set_hostname(self, hostname: str) -> None: - (self.target / 'etc/hostname').write_text(hostname + '\n') - - def set_locale(self, locale_config: LocaleConfiguration) -> bool: - modifier = '' - lang = locale_config.sys_lang - encoding = locale_config.sys_enc - - # This is a temporary patch to fix #1200 - if '.' in locale_config.sys_lang: - lang, potential_encoding = locale_config.sys_lang.split('.', 1) - - # Override encoding if encoding is set to the default parameter - # and the "found" encoding differs. - if locale_config.sys_enc == 'UTF-8' and locale_config.sys_enc != potential_encoding: - encoding = potential_encoding - - # Make sure we extract the modifier, that way we can put it in if needed. - if '@' in locale_config.sys_lang: - lang, modifier = locale_config.sys_lang.split('@', 1) - modifier = f'@{modifier}' - # - End patch - - locale_gen = self.target / 'etc/locale.gen' - locale_gen_lines = locale_gen.read_text().splitlines(True) - - # A locale entry in /etc/locale.gen may or may not contain the encoding - # 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.write_text(''.join(locale_gen_lines)) - lang_value = uncommented_line.split()[0] - break - - if lang_value is None: - error(f"Invalid locale: language '{locale_config.sys_lang}', encoding '{locale_config.sys_enc}'") - return False - - try: - self.arch_chroot('locale-gen') - except SysCallError as e: - error(f'Failed to run locale-gen on target: {e}') - return False - - (self.target / 'etc/locale.conf').write_text(f'LANG={lang_value}\n') - return True - - def set_timezone(self, zone: str) -> bool: - if not zone: - return True - if not len(zone): - return True # Redundant - - for plugin in plugins.values(): - if hasattr(plugin, 'on_timezone'): - if result := plugin.on_timezone(zone): - zone = result - - if (Path('/usr') / 'share' / 'zoneinfo' / zone).exists(): - (Path(self.target) / 'etc' / 'localtime').unlink(missing_ok=True) - self.arch_chroot(f'ln -s /usr/share/zoneinfo/{zone} /etc/localtime') - return True - - else: - warn(f'Time zone {zone} does not exist, continuing with system default') - - return False - - def activate_time_synchronization(self) -> None: - info('Activating systemd-timesyncd for time synchronization using Arch Linux and ntp.org NTP servers') - self.enable_service('systemd-timesyncd') - - def enable_espeakup(self) -> None: - info('Enabling espeakup.service for speech synthesis (accessibility)') - self.enable_service('espeakup') - - def enable_periodic_trim(self) -> None: - info('Enabling periodic TRIM') - # fstrim is owned by util-linux, a dependency of both base and systemd. - self.enable_service('fstrim.timer') - - def enable_service(self, services: str | list[str]) -> None: - if isinstance(services, str): - services = [services] - - for service in services: - info(f'Enabling service {service}') - - try: - SysCommand(f'systemctl --root={self.target} enable {service}') - except SysCallError as err: - raise ServiceException(f'Unable to start service {service}: {err}') - - for plugin in plugins.values(): - if hasattr(plugin, 'on_service'): - plugin.on_service(service) - - def run_command(self, cmd: str, peek_output: bool = False) -> SysCommand: - return SysCommand(f'arch-chroot -S {self.target} {cmd}', peek_output=peek_output) - - def arch_chroot(self, cmd: str, run_as: str | None = None, peek_output: bool = False) -> SysCommand: - if run_as: - cmd = f'su - {run_as} -c {shlex.quote(cmd)}' - - return self.run_command(cmd, peek_output=peek_output) - - def drop_to_shell(self) -> None: - subprocess.check_call(f'arch-chroot {self.target}', shell=True) - - def configure_nic(self, nic: Nic) -> None: - conf = nic.as_systemd_config() - - for plugin in plugins.values(): - if hasattr(plugin, 'on_configure_nic'): - conf = ( - plugin.on_configure_nic( - nic.iface, - nic.dhcp, - nic.ip, - nic.gateway, - nic.dns, - ) - or conf - ) - - with open(f'{self.target}/etc/systemd/network/10-{nic.iface}.network', 'a') as netconf: - netconf.write(str(conf)) - - def copy_iso_network_config(self, enable_services: bool = False) -> bool: - # Copy (if any) iwd password and config files - if os.path.isdir('/var/lib/iwd/'): - if psk_files := glob.glob('/var/lib/iwd/*.psk'): - if not os.path.isdir(f'{self.target}/var/lib/iwd'): - os.makedirs(f'{self.target}/var/lib/iwd') - - if enable_services: - # If we haven't installed the base yet (function called pre-maturely) - if self._helper_flags.get('base', False) is False: - self._base_packages.append('iwd') - - # This function will be called after minimal_installation() - # as a hook for post-installs. This hook is only needed if - # base is not installed yet. - def post_install_enable_iwd_service(*args: str, **kwargs: str) -> None: - self.enable_service('iwd') - - self.post_base_install.append(post_install_enable_iwd_service) - # Otherwise, we can go ahead and add the required package - # and enable it's service: - else: - self.pacman.strap('iwd') - self.enable_service('iwd') - - for psk in psk_files: - shutil.copy2(psk, f'{self.target}/var/lib/iwd/{os.path.basename(psk)}') - - # Copy (if any) systemd-networkd config files - if netconfigurations := glob.glob('/etc/systemd/network/*'): - if not os.path.isdir(f'{self.target}/etc/systemd/network/'): - os.makedirs(f'{self.target}/etc/systemd/network/') - - for netconf_file in netconfigurations: - shutil.copy2(netconf_file, f'{self.target}/etc/systemd/network/{os.path.basename(netconf_file)}') - - if enable_services: - # If we haven't installed the base yet (function called pre-maturely) - if self._helper_flags.get('base', False) is False: - - def post_install_enable_networkd_resolved(*args: str, **kwargs: str) -> None: - self.enable_service(['systemd-networkd', 'systemd-resolved']) - - self.post_base_install.append(post_install_enable_networkd_resolved) - # Otherwise, we can go ahead and enable the services - else: - self.enable_service(['systemd-networkd', 'systemd-resolved']) - - return True - - def mkinitcpio(self, flags: list[str]) -> bool: - for plugin in plugins.values(): - if hasattr(plugin, 'on_mkinitcpio'): - # Allow plugins to override the usage of mkinitcpio altogether. - if plugin.on_mkinitcpio(self): - return True - - with open(f'{self.target}/etc/mkinitcpio.conf', 'r+') as mkinit: - content = mkinit.read() - content = re.sub('\nMODULES=(.*)', f'\nMODULES=({" ".join(self._modules)})', content) - content = re.sub('\nBINARIES=(.*)', f'\nBINARIES=({" ".join(self._binaries)})', content) - content = re.sub('\nFILES=(.*)', f'\nFILES=({" ".join(self._files)})', content) - - if not self._disk_encryption.hsm_device: - # For now, if we don't use HSM we revert to the old - # way of setting up encryption hooks for mkinitcpio. - # This is purely for stability reasons, we're going away from this. - # * systemd -> udev - # * sd-vconsole -> keymap - self._hooks = [hook.replace('systemd', 'udev').replace('sd-vconsole', 'keymap consolefont') for hook in self._hooks] - - content = re.sub('\nHOOKS=(.*)', f'\nHOOKS=({" ".join(self._hooks)})', content) - mkinit.seek(0) - mkinit.truncate() - mkinit.write(content) - - try: - self.arch_chroot(f'mkinitcpio {" ".join(flags)}', peek_output=True) - return True - except SysCallError as e: - if e.worker_log: - log(e.worker_log.decode()) - return False - - def _get_microcode(self) -> Path | None: - if not SysInfo.is_vm(): - if vendor := SysInfo.cpu_vendor(): - return vendor.get_ucode() - return None - - def _prepare_fs_type( - self, - fs_type: FilesystemType, - mountpoint: Path | None, - ) -> None: - if (pkg := fs_type.installation_pkg) is not None: - self._base_packages.append(pkg) - - # https://github.com/archlinux/archinstall/issues/1837 - if fs_type.fs_type_mount == 'btrfs': - self._disable_fstrim = True - - # There is not yet an fsck tool for NTFS. If it's being used for the root filesystem, the hook should be removed. - if fs_type.fs_type_mount == 'ntfs3' and mountpoint == self.target: - if 'fsck' in self._hooks: - self._hooks.remove('fsck') - - def _prepare_encrypt(self, before: str = 'filesystems') -> None: - if self._disk_encryption.hsm_device: - # Required by mkinitcpio to add support for fido2-device options - self.pacman.strap('libfido2') - - if 'sd-encrypt' not in self._hooks: - self._hooks.insert(self._hooks.index(before), 'sd-encrypt') - else: - if 'encrypt' not in self._hooks: - self._hooks.insert(self._hooks.index(before), 'encrypt') - - def minimal_installation( - self, - optional_repositories: list[Repository] = [], - mkinitcpio: bool = True, - hostname: str | None = None, - locale_config: LocaleConfiguration | None = LocaleConfiguration.default(), - ) -> None: - if self._disk_config.lvm_config: - lvm = 'lvm2' - self.add_additional_packages(lvm) - self._hooks.insert(self._hooks.index('filesystems') - 1, lvm) - - for vg in self._disk_config.lvm_config.vol_groups: - for vol in vg.volumes: - if vol.fs_type is not None: - self._prepare_fs_type(vol.fs_type, vol.mountpoint) - - types = (EncryptionType.LvmOnLuks, EncryptionType.LuksOnLvm) - if self._disk_encryption.encryption_type in types: - self._prepare_encrypt(lvm) - else: - for mod in self._disk_config.device_modifications: - for part in mod.partitions: - if part.fs_type is None: - continue - - self._prepare_fs_type(part.fs_type, part.mountpoint) - - if part in self._disk_encryption.partitions: - self._prepare_encrypt() - - if ucode := self._get_microcode(): - (self.target / 'boot' / ucode).unlink(missing_ok=True) - self._base_packages.append(ucode.stem) - else: - debug('Archinstall will not install any ucode.') - - debug(f'Optional repositories: {optional_repositories}') - - # This action takes place on the host system as pacstrap copies over package repository lists. - pacman_conf = PacmanConfig(self.target) - pacman_conf.enable(optional_repositories) - pacman_conf.apply() - - self.pacman.strap(self._base_packages) - self._helper_flags['base-strapped'] = True - - pacman_conf.persist() - - # Periodic TRIM may improve the performance and longevity of SSDs whilst - # having no adverse effect on other devices. Most distributions enable - # periodic TRIM by default. - # - # https://github.com/archlinux/archinstall/issues/880 - # https://github.com/archlinux/archinstall/issues/1837 - # https://github.com/archlinux/archinstall/issues/1841 - if not self._disable_fstrim: - self.enable_periodic_trim() - - # TODO: Support locale and timezone - # os.remove(f'{self.target}/etc/localtime') - # sys_command(f'arch-chroot {self.target} ln -s /usr/share/zoneinfo/{localtime} /etc/localtime') - # sys_command('arch-chroot /mnt hwclock --hctosys --localtime') - if hostname: - self.set_hostname(hostname) - - if locale_config: - self.set_locale(locale_config) - self.set_keyboard_language(locale_config.kb_layout) - - # TODO: Use python functions for this - self.arch_chroot('chmod 700 /root') - - if mkinitcpio and not self.mkinitcpio(['-P']): - error('Error generating initramfs (continuing anyway)') - - self._helper_flags['base'] = True - - # Run registered post-install hooks - for function in self.post_base_install: - info(f'Running post-installation hook: {function}') - function(self) - - for plugin in plugins.values(): - if hasattr(plugin, 'on_install'): - plugin.on_install(self) - - def setup_btrfs_snapshot( - self, - snapshot_type: SnapshotType, - bootloader: Bootloader | None = None, - ) -> None: - if snapshot_type == SnapshotType.Snapper: - debug('Setting up Btrfs snapper') - self.pacman.strap('snapper') - - snapper: dict[str, str] = { - 'root': '/', - 'home': '/home', - } - - for config_name, mountpoint in snapper.items(): - command = [ - 'arch-chroot', - '-S', - str(self.target), - 'snapper', - '--no-dbus', - '-c', - config_name, - 'create-config', - mountpoint, - ] - - try: - SysCommand(command, peek_output=True) - except SysCallError as err: - raise DiskError(f'Could not setup Btrfs snapper: {err}') - - self.enable_service('snapper-timeline.timer') - self.enable_service('snapper-cleanup.timer') - elif snapshot_type == SnapshotType.Timeshift: - debug('Setting up Btrfs timeshift') - - self.pacman.strap('cronie') - self.pacman.strap('timeshift') - - self.enable_service('cronie.service') - - if bootloader and bootloader == Bootloader.Grub: - self.pacman.strap('grub-btrfs') - self.pacman.strap('inotify-tools') - self._configure_grub_btrfsd() - self.enable_service('grub-btrfsd.service') - - def setup_swap(self, kind: str = 'zram') -> None: - if kind == 'zram': - info('Setting up swap on zram') - self.pacman.strap('zram-generator') - - # We could use the default example below, but maybe not the best idea: https://github.com/archlinux/archinstall/pull/678#issuecomment-962124813 - # zram_example_location = '/usr/share/doc/zram-generator/zram-generator.conf.example' - # shutil.copy2(f"{self.target}{zram_example_location}", f"{self.target}/usr/lib/systemd/zram-generator.conf") - with open(f'{self.target}/etc/systemd/zram-generator.conf', 'w') as zram_conf: - zram_conf.write('[zram0]\n') - - self.enable_service('systemd-zram-setup@zram0.service') - - self._zram_enabled = True - else: - raise ValueError('Archinstall currently only supports setting up swap on zram') - - def _get_efi_partition(self) -> PartitionModification | None: - for layout in self._disk_config.device_modifications: - if partition := layout.get_efi_partition(): - return partition - return None - - def _get_boot_partition(self) -> PartitionModification | None: - for layout in self._disk_config.device_modifications: - if boot := layout.get_boot_partition(): - return boot - return None - - def _get_root(self) -> PartitionModification | LvmVolume | None: - if self._disk_config.lvm_config: - return self._disk_config.lvm_config.get_root_volume() - else: - for mod in self._disk_config.device_modifications: - if root := mod.get_root_partition(): - return root - return None - - def _configure_grub_btrfsd(self) -> None: - # See https://github.com/Antynea/grub-btrfs?tab=readme-ov-file#-using-timeshift-with-systemd - debug('Configuring grub-btrfsd service') - - # https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.html#id-1.14.3 - systemd_dir = self.target / 'etc/systemd/system/grub-btrfsd.service.d' - systemd_dir.mkdir(parents=True, exist_ok=True) - - override_conf = systemd_dir / 'override.conf' - - config_content = textwrap.dedent( - """ - [Service] - ExecStart= - ExecStart=/usr/bin/grub-btrfsd --syslog --timeshift-auto - """ - ) - - override_conf.write_text(config_content) - override_conf.chmod(0o644) - - def _get_luks_uuid_from_mapper_dev(self, mapper_dev_path: Path) -> str: - lsblk_info = get_lsblk_info(mapper_dev_path, reverse=True, full_dev_path=True) - - if not lsblk_info.children or not lsblk_info.children[0].uuid: - raise ValueError('Unable to determine UUID of luks superblock') - - return lsblk_info.children[0].uuid - - def _get_kernel_params_partition( - self, - root_partition: PartitionModification, - id_root: bool = True, - partuuid: bool = True, - ) -> list[str]: - kernel_parameters = [] - - if root_partition in self._disk_encryption.partitions: - # TODO: We need to detect if the encrypted device is a whole disk encryption, - # or simply a partition encryption. Right now we assume it's a partition (and we always have) - - if self._disk_encryption.hsm_device: - debug(f'Root partition is an encrypted device, identifying by UUID: {root_partition.uuid}') - # Note: UUID must be used, not PARTUUID for sd-encrypt to work - kernel_parameters.append(f'rd.luks.name={root_partition.uuid}=root') - # Note: tpm2-device and fido2-device don't play along very well: - # https://github.com/archlinux/archinstall/pull/1196#issuecomment-1129715645 - kernel_parameters.append('rd.luks.options=fido2-device=auto,password-echo=no') - elif partuuid: - debug(f'Root partition is an encrypted device, identifying by PARTUUID: {root_partition.partuuid}') - kernel_parameters.append(f'cryptdevice=PARTUUID={root_partition.partuuid}:root') - else: - debug(f'Root partition is an encrypted device, identifying by UUID: {root_partition.uuid}') - kernel_parameters.append(f'cryptdevice=UUID={root_partition.uuid}:root') - - if id_root: - kernel_parameters.append('root=/dev/mapper/root') - elif id_root: - if partuuid: - debug(f'Identifying root partition by PARTUUID: {root_partition.partuuid}') - kernel_parameters.append(f'root=PARTUUID={root_partition.partuuid}') - else: - debug(f'Identifying root partition by UUID: {root_partition.uuid}') - kernel_parameters.append(f'root=UUID={root_partition.uuid}') - - return kernel_parameters - - def _get_kernel_params_lvm( - self, - lvm: LvmVolume, - ) -> list[str]: - kernel_parameters = [] - - match self._disk_encryption.encryption_type: - case EncryptionType.LvmOnLuks: - if not lvm.vg_name: - raise ValueError(f'Unable to determine VG name for {lvm.name}') - - pv_seg_info = device_handler.lvm_pvseg_info(lvm.vg_name, lvm.name) - - if not pv_seg_info: - raise ValueError(f'Unable to determine PV segment info for {lvm.vg_name}/{lvm.name}') - - uuid = self._get_luks_uuid_from_mapper_dev(pv_seg_info.pv_name) - - if self._disk_encryption.hsm_device: - debug(f'LvmOnLuks, encrypted root partition, HSM, identifying by UUID: {uuid}') - kernel_parameters.append(f'rd.luks.name={uuid}=cryptlvm root={lvm.safe_dev_path}') - else: - debug(f'LvmOnLuks, encrypted root partition, identifying by UUID: {uuid}') - kernel_parameters.append(f'cryptdevice=UUID={uuid}:cryptlvm root={lvm.safe_dev_path}') - case EncryptionType.LuksOnLvm: - uuid = self._get_luks_uuid_from_mapper_dev(lvm.mapper_path) - - if self._disk_encryption.hsm_device: - debug(f'LuksOnLvm, encrypted root partition, HSM, identifying by UUID: {uuid}') - kernel_parameters.append(f'rd.luks.name={uuid}=root root=/dev/mapper/root') - else: - debug(f'LuksOnLvm, encrypted root partition, identifying by UUID: {uuid}') - kernel_parameters.append(f'cryptdevice=UUID={uuid}:root root=/dev/mapper/root') - case EncryptionType.NoEncryption: - debug(f'Identifying root lvm by mapper device: {lvm.dev_path}') - kernel_parameters.append(f'root={lvm.safe_dev_path}') - - return kernel_parameters - - def _get_kernel_params( - self, - root: PartitionModification | LvmVolume, - id_root: bool = True, - partuuid: bool = True, - ) -> list[str]: - kernel_parameters = [] - - if isinstance(root, LvmVolume): - kernel_parameters = self._get_kernel_params_lvm(root) - else: - kernel_parameters = self._get_kernel_params_partition(root, id_root, partuuid) - - # Zswap should be disabled when using zram. - # https://github.com/archlinux/archinstall/issues/881 - if self._zram_enabled: - kernel_parameters.append('zswap.enabled=0') - - if id_root: - for sub_vol in root.btrfs_subvols: - if sub_vol.is_root(): - kernel_parameters.append(f'rootflags=subvol={sub_vol.name}') - break - - kernel_parameters.append('rw') - - kernel_parameters.append(f'rootfstype={root.safe_fs_type.fs_type_mount}') - kernel_parameters.extend(self._kernel_params) - - debug(f'kernel parameters: {" ".join(kernel_parameters)}') - - return kernel_parameters - - def _create_bls_entries( - self, - boot_partition: PartitionModification, - root: PartitionModification | LvmVolume, - entry_name: str, - ) -> None: - # Loader entries are stored in $BOOT/loader: - # https://uapi-group.org/specifications/specs/boot_loader_specification/#mount-points - entries_dir = self.target / boot_partition.relative_mountpoint / 'loader/entries' - # Ensure that the $BOOT/loader/entries/ directory exists before trying to create files in it - entries_dir.mkdir(parents=True, exist_ok=True) - - entry_template = textwrap.dedent( - f"""\ - # Created by: archinstall - # Created on: {self.init_time} - title Arch Linux ({{kernel}}{{variant}}) - linux /vmlinuz-{{kernel}} - initrd /initramfs-{{kernel}}{{variant}}.img - options {' '.join(self._get_kernel_params(root))} - """, - ) - - for kernel in self.kernels: - for variant in ('', '-fallback'): - # Setup the loader entry - name = entry_name.format(kernel=kernel, variant=variant) - entry_conf = entries_dir / name - entry_conf.write_text(entry_template.format(kernel=kernel, variant=variant)) - - def _add_systemd_bootloader( - self, - boot_partition: PartitionModification, - root: PartitionModification | LvmVolume, - efi_partition: PartitionModification | None, - uki_enabled: bool = False, - ) -> None: - debug('Installing systemd bootloader') - - self.pacman.strap('efibootmgr') - - if not SysInfo.has_uefi(): - raise HardwareIncompatibilityError - - if not efi_partition: - raise ValueError('Could not detect EFI system partition') - elif not efi_partition.mountpoint: - raise ValueError('EFI system partition is not mounted') - - # TODO: Ideally we would want to check if another config - # points towards the same disk and/or partition. - # And in which case we should do some clean up. - bootctl_options = [] - - if boot_partition != efi_partition: - bootctl_options.append(f'--esp-path={efi_partition.mountpoint}') - bootctl_options.append(f'--boot-path={boot_partition.mountpoint}') - - # TODO: This is a temporary workaround to deal with https://github.com/archlinux/archinstall/pull/3396#issuecomment-2996862019 - # the systemd_version check can be removed once `--variables=BOOL` is merged into systemd. - systemd_pkg = installed_package('systemd') - - # keep the version as a str as it can be something like 257.8-2 - if systemd_pkg is not None: - systemd_version = systemd_pkg.version - else: - systemd_version = '257' # This works as a safety workaround for this hot-fix - - try: - # Force EFI variables since bootctl detects arch-chroot - # as a container environemnt since v257 and skips them silently. - # https://github.com/systemd/systemd/issues/36174 - if systemd_version >= '258': - self.arch_chroot(f'bootctl --variables=yes {" ".join(bootctl_options)} install') - else: - self.arch_chroot(f'bootctl {" ".join(bootctl_options)} install') - except SysCallError: - if systemd_version >= '258': - # Fallback, try creating the boot loader without touching the EFI variables - self.arch_chroot(f'bootctl --variables=no {" ".join(bootctl_options)} install') - else: - self.arch_chroot(f'bootctl --no-variables {" ".join(bootctl_options)} install') - - # Loader configuration is stored in ESP/loader: - # https://man.archlinux.org/man/loader.conf.5 - loader_conf = self.target / efi_partition.relative_mountpoint / 'loader/loader.conf' - # Ensure that the ESP/loader/ directory exists before trying to create a file in it - loader_conf.parent.mkdir(parents=True, exist_ok=True) - - default_kernel = self.kernels[0] - if uki_enabled: - default_entry = f'arch-{default_kernel}.efi' - else: - entry_name = self.init_time + '_{kernel}{variant}.conf' - default_entry = entry_name.format(kernel=default_kernel, variant='') - self._create_bls_entries(boot_partition, root, entry_name) - - default = f'default {default_entry}' - - # Modify or create a loader.conf - try: - loader_data = loader_conf.read_text().splitlines() - except FileNotFoundError: - loader_data = [ - default, - 'timeout 15', - ] - else: - for index, line in enumerate(loader_data): - if line.startswith('default'): - loader_data[index] = default - elif line.startswith('#timeout'): - # We add in the default timeout to support dual-boot - loader_data[index] = line.removeprefix('#') - - loader_conf.write_text('\n'.join(loader_data) + '\n') - - self._helper_flags['bootloader'] = 'systemd' - - def _add_grub_bootloader( - self, - boot_partition: PartitionModification, - root: PartitionModification | LvmVolume, - efi_partition: PartitionModification | None, - ) -> None: - debug('Installing grub bootloader') - - self.pacman.strap('grub') - - grub_default = self.target / 'etc/default/grub' - config = grub_default.read_text() - - kernel_parameters = ' '.join(self._get_kernel_params(root, False, False)) - config = re.sub(r'(GRUB_CMDLINE_LINUX=")("\n)', rf'\1{kernel_parameters}\2', config, count=1) - - grub_default.write_text(config) - - info(f'GRUB boot partition: {boot_partition.dev_path}') - - boot_dir = Path('/boot') - - command = [ - 'arch-chroot', - '-S', - str(self.target), - 'grub-install', - '--debug', - ] - - if SysInfo.has_uefi(): - if not efi_partition: - raise ValueError('Could not detect efi partition') - - info(f'GRUB EFI partition: {efi_partition.dev_path}') - - self.pacman.strap('efibootmgr') # TODO: Do we need? Yes, but remove from minimal_installation() instead? - - boot_dir_arg = [] - if boot_partition.mountpoint and boot_partition.mountpoint != boot_dir: - boot_dir_arg.append(f'--boot-directory={boot_partition.mountpoint}') - boot_dir = boot_partition.mountpoint - - add_options = [ - f'--target={platform.machine()}-efi', - f'--efi-directory={efi_partition.mountpoint}', - *boot_dir_arg, - '--bootloader-id=GRUB', - '--removable', - ] - - command.extend(add_options) - - try: - SysCommand(command, peek_output=True) - except SysCallError: - try: - SysCommand(command, peek_output=True) - except SysCallError as err: - raise DiskError(f'Could not install GRUB to {self.target}{efi_partition.mountpoint}: {err}') - else: - info(f'GRUB boot partition: {boot_partition.dev_path}') - - parent_dev_path = device_handler.get_parent_device_path(boot_partition.safe_dev_path) - - add_options = [ - '--target=i386-pc', - '--recheck', - str(parent_dev_path), - ] - - try: - SysCommand(command + add_options, peek_output=True) - except SysCallError as err: - raise DiskError(f'Failed to install GRUB boot on {boot_partition.dev_path}: {err}') - - try: - self.arch_chroot( - f'grub-mkconfig -o {boot_dir}/grub/grub.cfg', - ) - except SysCallError as err: - raise DiskError(f'Could not configure GRUB: {err}') - - self._helper_flags['bootloader'] = 'grub' - - def _add_limine_bootloader( - self, - boot_partition: PartitionModification, - efi_partition: PartitionModification | None, - root: PartitionModification | LvmVolume, - uki_enabled: bool = False, - ) -> None: - debug('Installing Limine bootloader') - - self.pacman.strap('limine') - - info(f'Limine boot partition: {boot_partition.dev_path}') - - limine_path = self.target / 'usr' / 'share' / 'limine' - config_path = None - hook_command = None - - if SysInfo.has_uefi(): - self.pacman.strap('efibootmgr') - - if not efi_partition: - raise ValueError('Could not detect efi partition') - elif not efi_partition.mountpoint: - raise ValueError('EFI partition is not mounted') - - info(f'Limine EFI partition: {efi_partition.dev_path}') - - parent_dev_path = device_handler.get_parent_device_path(efi_partition.safe_dev_path) - is_target_usb = ( - SysCommand( - f'udevadm info --no-pager --query=property --property=ID_BUS --value --name={parent_dev_path}', - ).decode() - == 'usb' - ) - - try: - efi_dir_path = self.target / efi_partition.mountpoint.relative_to('/') / 'EFI' - efi_dir_path_target = efi_partition.mountpoint / 'EFI' - if is_target_usb: - efi_dir_path = efi_dir_path / 'BOOT' - efi_dir_path_target = efi_dir_path_target / 'BOOT' - else: - efi_dir_path = efi_dir_path / 'limine' - efi_dir_path_target = efi_dir_path_target / 'limine' - - efi_dir_path.mkdir(parents=True, exist_ok=True) - - for file in ('BOOTIA32.EFI', 'BOOTX64.EFI'): - shutil.copy(limine_path / file, efi_dir_path) - except Exception as err: - raise DiskError(f'Failed to install Limine in {self.target}{efi_partition.mountpoint}: {err}') - - config_path = efi_dir_path / 'limine.conf' - - hook_command = ( - f'/usr/bin/cp /usr/share/limine/BOOTIA32.EFI {efi_dir_path_target}/ && /usr/bin/cp /usr/share/limine/BOOTX64.EFI {efi_dir_path_target}/' - ) - - if not is_target_usb: - # Create EFI boot menu entry for Limine. - try: - with open('/sys/firmware/efi/fw_platform_size') as fw_platform_size: - efi_bitness = fw_platform_size.read().strip() - except Exception as err: - raise OSError(f'Could not open or read /sys/firmware/efi/fw_platform_size to determine EFI bitness: {err}') - - if efi_bitness == '64': - loader_path = '/EFI/limine/BOOTX64.EFI' - elif efi_bitness == '32': - loader_path = '/EFI/limine/BOOTIA32.EFI' - else: - raise ValueError(f'EFI bitness is neither 32 nor 64 bits. Found "{efi_bitness}".') - - try: - SysCommand( - 'efibootmgr' - ' --create' - f' --disk {parent_dev_path}' - f' --part {efi_partition.partn}' - ' --label "Arch Linux Limine Bootloader"' - f' --loader {loader_path}' - ' --unicode' - ' --verbose', - ) - except Exception as err: - raise ValueError(f'SysCommand for efibootmgr failed: {err}') - else: - boot_limine_path = self.target / 'boot' / 'limine' - boot_limine_path.mkdir(parents=True, exist_ok=True) - - config_path = boot_limine_path / 'limine.conf' - - parent_dev_path = device_handler.get_parent_device_path(boot_partition.safe_dev_path) - - if unique_path := device_handler.get_unique_path_for_device(parent_dev_path): - parent_dev_path = unique_path - - try: - # The `limine-bios.sys` file contains stage 3 code. - shutil.copy(limine_path / 'limine-bios.sys', boot_limine_path) - - # `limine bios-install` deploys the stage 1 and 2 to the - self.arch_chroot(f'limine bios-install {parent_dev_path}', peek_output=True) - except Exception as err: - raise DiskError(f'Failed to install Limine on {parent_dev_path}: {err}') - - hook_command = f'/usr/bin/limine bios-install {parent_dev_path} && /usr/bin/cp /usr/share/limine/limine-bios.sys /boot/limine/' - - hook_contents = textwrap.dedent( - f'''\ - [Trigger] - Operation = Install - Operation = Upgrade - Type = Package - Target = limine - - [Action] - Description = Deploying Limine after upgrade... - When = PostTransaction - Exec = /bin/sh -c "{hook_command}" - ''', - ) - - hooks_dir = self.target / 'etc' / 'pacman.d' / 'hooks' - hooks_dir.mkdir(parents=True, exist_ok=True) - - hook_path = hooks_dir / '99-limine.hook' - hook_path.write_text(hook_contents) - - kernel_params = ' '.join(self._get_kernel_params(root)) - config_contents = 'timeout: 5\n' - - path_root = 'boot()' - if efi_partition and boot_partition != efi_partition: - path_root = f'uuid({boot_partition.partuuid})' - - for kernel in self.kernels: - for variant in ('', '-fallback'): - if uki_enabled: - entry = [ - 'protocol: efi', - f'path: boot():/EFI/Linux/arch-{kernel}.efi', - f'cmdline: {kernel_params}', - ] - else: - entry = [ - 'protocol: linux', - f'path: {path_root}:/vmlinuz-{kernel}', - f'cmdline: {kernel_params}', - f'module_path: {path_root}:/initramfs-{kernel}{variant}.img', - ] - - config_contents += f'\n/Arch Linux ({kernel}{variant})\n' - config_contents += '\n'.join([f' {it}' for it in entry]) + '\n' - - config_path.write_text(config_contents) - - self._helper_flags['bootloader'] = 'limine' - - def _add_efistub_bootloader( - self, - boot_partition: PartitionModification, - root: PartitionModification | LvmVolume, - uki_enabled: bool = False, - ) -> None: - debug('Installing efistub bootloader') - - self.pacman.strap('efibootmgr') - - if not SysInfo.has_uefi(): - raise HardwareIncompatibilityError - - # TODO: Ideally we would want to check if another config - # points towards the same disk and/or partition. - # And in which case we should do some clean up. - - if not uki_enabled: - loader = '/vmlinuz-{kernel}' - - entries = ( - 'initrd=/initramfs-{kernel}.img', - *self._get_kernel_params(root), - ) - - cmdline = [' '.join(entries)] - else: - loader = '/EFI/Linux/arch-{kernel}.efi' - cmdline = [] - - parent_dev_path = device_handler.get_parent_device_path(boot_partition.safe_dev_path) - - cmd_template = ( - 'efibootmgr', - '--create', - '--disk', - str(parent_dev_path), - '--part', - str(boot_partition.partn), - '--label', - 'Arch Linux ({kernel})', - '--loader', - loader, - '--unicode', - *cmdline, - '--verbose', - ) - - for kernel in self.kernels: - # Setup the firmware entry - cmd = [arg.format(kernel=kernel) for arg in cmd_template] - SysCommand(cmd) - - self._helper_flags['bootloader'] = 'efistub' - - def _config_uki( - self, - root: PartitionModification | LvmVolume, - efi_partition: PartitionModification | None, - ) -> None: - if not efi_partition or not efi_partition.mountpoint: - raise ValueError(f'Could not detect ESP at mountpoint {self.target}') - - # Set up kernel command line - with open(self.target / 'etc/kernel/cmdline', 'w') as cmdline: - kernel_parameters = self._get_kernel_params(root) - cmdline.write(' '.join(kernel_parameters) + '\n') - - diff_mountpoint = None - - if efi_partition.mountpoint != Path('/efi'): - diff_mountpoint = str(efi_partition.mountpoint) - - image_re = re.compile('(.+_image="/([^"]+).+\n)') - uki_re = re.compile('#((.+_uki=")/[^/]+(.+\n))') - - # Modify .preset files - for kernel in self.kernels: - preset = self.target / 'etc/mkinitcpio.d' / (kernel + '.preset') - config = preset.read_text().splitlines(True) - - for index, line in enumerate(config): - # Avoid storing redundant image file - if m := image_re.match(line): - image = self.target / m.group(2) - image.unlink(missing_ok=True) - config[index] = '#' + m.group(1) - elif m := uki_re.match(line): - if diff_mountpoint: - config[index] = m.group(2) + diff_mountpoint + m.group(3) - else: - config[index] = m.group(1) - elif line.startswith('#default_options='): - config[index] = line.removeprefix('#') - - preset.write_text(''.join(config)) - - # Directory for the UKIs - uki_dir = self.target / efi_partition.relative_mountpoint / 'EFI/Linux' - uki_dir.mkdir(parents=True, exist_ok=True) - - # Build the UKIs - if not self.mkinitcpio(['-P']): - error('Error generating initramfs (continuing anyway)') - - def add_bootloader(self, bootloader: Bootloader, uki_enabled: bool = False) -> None: - """ - Adds a bootloader to the installation instance. - Archinstall supports one of three types: - * systemd-bootctl - * grub - * limine (beta) - * efistub (beta) - - :param bootloader: Type of bootloader to be added - """ - - for plugin in plugins.values(): - if hasattr(plugin, 'on_add_bootloader'): - # Allow plugins to override the boot-loader handling. - # This allows for bot configuring and installing bootloaders. - if plugin.on_add_bootloader(self): - return - - efi_partition = self._get_efi_partition() - boot_partition = self._get_boot_partition() - root = self._get_root() - - if boot_partition is None: - raise ValueError(f'Could not detect boot at mountpoint {self.target}') - - if root is None: - raise ValueError(f'Could not detect root at mountpoint {self.target}') - - info(f'Adding bootloader {bootloader.value} to {boot_partition.dev_path}') - - if uki_enabled: - self._config_uki(root, efi_partition) - - match bootloader: - case Bootloader.Systemd: - self._add_systemd_bootloader(boot_partition, root, efi_partition, uki_enabled) - case Bootloader.Grub: - self._add_grub_bootloader(boot_partition, root, efi_partition) - case Bootloader.Efistub: - self._add_efistub_bootloader(boot_partition, root, uki_enabled) - case Bootloader.Limine: - self._add_limine_bootloader(boot_partition, efi_partition, root, uki_enabled) - - def add_additional_packages(self, packages: str | list[str]) -> None: - return self.pacman.strap(packages) - - def enable_sudo(self, user: User, group: bool = False) -> None: - info(f'Enabling sudo permissions for {user.username}') - - sudoers_dir = self.target / 'etc/sudoers.d' - - # Creates directory if not exists - if not sudoers_dir.exists(): - sudoers_dir.mkdir(parents=True) - # Guarantees sudoer confs directory recommended perms - sudoers_dir.chmod(0o440) - # Appends a reference to the sudoers file, because if we are here sudoers.d did not exist yet - with open(self.target / 'etc/sudoers', 'a') as sudoers: - sudoers.write('@includedir /etc/sudoers.d\n') - - # We count how many files are there already so we know which number to prefix the file with - num_of_rules_already = len(os.listdir(sudoers_dir)) - file_num_str = f'{num_of_rules_already:02d}' # We want 00_user1, 01_user2, etc - - # Guarantees that username str does not contain invalid characters for a linux file name: - # \ / : * ? " < > | - safe_username_file_name = re.sub(r'(\\|\/|:|\*|\?|"|<|>|\|)', '', user.username) - - rule_file = sudoers_dir / f'{file_num_str}_{safe_username_file_name}' - - with rule_file.open('a') as sudoers: - sudoers.write(f'{"%" if group else ""}{user.username} ALL=(ALL) ALL\n') - - # Guarantees sudoer conf file recommended perms - rule_file.chmod(0o440) - - def create_users(self, users: User | list[User]) -> None: - if not isinstance(users, list): - users = [users] - - for user in users: - self._create_user(user) - - def _create_user(self, user: User) -> None: - # This plugin hook allows for the plugin to handle the creation of the user. - # Password and Group management is still handled by user_create() - handled_by_plugin = False - for plugin in plugins.values(): - if hasattr(plugin, 'on_user_create'): - if result := plugin.on_user_create(self, user): - handled_by_plugin = result - - if not handled_by_plugin: - info(f'Creating user {user.username}') - - cmd = 'useradd -m' - - if user.sudo: - cmd += ' -G wheel' - - cmd += f' {user.username}' - - try: - self.arch_chroot(cmd) - except SysCallError as err: - raise SystemError(f'Could not create user inside installation: {err}') - - for plugin in plugins.values(): - if hasattr(plugin, 'on_user_created'): - if result := plugin.on_user_created(self, user): - handled_by_plugin = result - - self.set_user_password(user) - - for group in user.groups: - self.arch_chroot(f'gpasswd -a {user.username} {group}') - - if user.sudo: - self.enable_sudo(user) - - def set_user_password(self, user: User) -> bool: - info(f'Setting password for {user.username}') - - enc_password = user.password.enc_password - - if not enc_password: - debug('User password is empty') - return False - - input_data = f'{user.username}:{enc_password}'.encode() - cmd = ['arch-chroot', '-S', str(self.target), 'chpasswd', '--encrypted'] - - try: - run(cmd, input_data=input_data) - return True - except CalledProcessError as err: - debug(f'Error setting user password: {err}') - return False - - def user_set_shell(self, user: str, shell: str) -> bool: - info(f'Setting shell for {user} to {shell}') - - try: - self.arch_chroot(f'sh -c "chsh -s {shell} {user}"') - return True - except SysCallError: - return False - - def chown(self, owner: str, path: str, options: list[str] = []) -> bool: - cleaned_path = path.replace("'", "\\'") - try: - self.arch_chroot(f"sh -c 'chown {' '.join(options)} {owner} {cleaned_path}'") - return True - except SysCallError: - return False - - def set_keyboard_language(self, language: str) -> bool: - info(f'Setting keyboard language to {language}') - - if len(language.strip()): - if not verify_keyboard_layout(language): - error(f'Invalid keyboard language specified: {language}') - return False - - # In accordance with https://github.com/archlinux/archinstall/issues/107#issuecomment-841701968 - # Setting an empty keymap first, allows the subsequent call to set layout for both console and x11. - from .boot import Boot - - with Boot(self) as session: - os.system('systemd-run --machine=archinstall --pty localectl set-keymap ""') - - try: - session.SysCommand(['localectl', 'set-keymap', language]) - except SysCallError as err: - raise ServiceException(f"Unable to set locale '{language}' for console: {err}") - - info(f'Keyboard language for this installation is now set to: {language}') - else: - info('Keyboard language was not changed from default (no language specified)') - - return True - - def set_x11_keyboard_language(self, language: str) -> bool: - """ - A fallback function to set x11 layout specifically and separately from console layout. - This isn't strictly necessary since .set_keyboard_language() does this as well. - """ - info(f'Setting x11 keyboard language to {language}') - - if len(language.strip()): - if not verify_x11_keyboard_layout(language): - error(f'Invalid x11-keyboard language specified: {language}') - return False - - from .boot import Boot - - with Boot(self) as session: - session.SysCommand(['localectl', 'set-x11-keymap', '""']) - - try: - session.SysCommand(['localectl', 'set-x11-keymap', language]) - except SysCallError as err: - raise ServiceException(f"Unable to set locale '{language}' for X11: {err}") - else: - info('X11-Keyboard language was not changed from default (no language specified)') - - return True - - def _service_started(self, service_name: str) -> str | None: - if os.path.splitext(service_name)[1] not in ('.service', '.target', '.timer'): - service_name += '.service' # Just to be safe - - last_execution_time = ( - SysCommand( - f'systemctl show --property=ActiveEnterTimestamp --no-pager {service_name}', - environment_vars={'SYSTEMD_COLORS': '0'}, - ) - .decode() - .removeprefix('ActiveEnterTimestamp=') - ) - - if not last_execution_time: - return None - - return last_execution_time - - def _service_state(self, service_name: str) -> str: - if os.path.splitext(service_name)[1] not in ('.service', '.target', '.timer'): - service_name += '.service' # Just to be safe - - return SysCommand( - f'systemctl show --no-pager -p SubState --value {service_name}', - environment_vars={'SYSTEMD_COLORS': '0'}, - ).decode() - - -def accessibility_tools_in_use() -> bool: - return os.system('systemctl is-active --quiet espeakup.service') == 0 - - -def run_custom_user_commands(commands: list[str], installation: Installer) -> None: - for index, command in enumerate(commands): - script_path = f'/var/tmp/user-command.{index}.sh' - chroot_path = f'{installation.target}/{script_path}' - - info(f'Executing custom command "{command}" ...') - with open(chroot_path, 'w') as user_script: - user_script.write(command) - - SysCommand(f'arch-chroot -S {installation.target} bash {script_path}') - - os.unlink(chroot_path) diff --git a/examples/archinstall/archinstall/lib/interactions/__init__.py b/examples/archinstall/archinstall/lib/interactions/__init__.py deleted file mode 100644 index 09b8347..0000000 --- a/examples/archinstall/archinstall/lib/interactions/__init__.py +++ /dev/null @@ -1,43 +0,0 @@ -from .disk_conf import ( - get_default_partition_layout, - select_devices, - select_disk_config, - select_main_filesystem_format, - suggest_multi_disk_layout, - suggest_single_disk_layout, -) -from .general_conf import ( - add_number_of_parallel_downloads, - ask_additional_packages_to_install, - ask_for_a_timezone, - ask_hostname, - ask_ntp, - select_archinstall_language, -) -from .manage_users_conf import UserList, ask_for_additional_users -from .network_menu import ManualNetworkConfig, ask_to_configure_network -from .system_conf import ask_for_bootloader, ask_for_swap, ask_for_uki, select_driver, select_kernel - -__all__ = [ - 'ManualNetworkConfig', - 'UserList', - 'add_number_of_parallel_downloads', - 'ask_additional_packages_to_install', - 'ask_for_a_timezone', - 'ask_for_additional_users', - 'ask_for_bootloader', - 'ask_for_swap', - 'ask_for_uki', - 'ask_hostname', - 'ask_ntp', - 'ask_to_configure_network', - 'get_default_partition_layout', - 'select_archinstall_language', - 'select_devices', - 'select_disk_config', - 'select_driver', - 'select_kernel', - 'select_main_filesystem_format', - 'suggest_multi_disk_layout', - 'suggest_single_disk_layout', -] diff --git a/examples/archinstall/archinstall/lib/interactions/disk_conf.py b/examples/archinstall/archinstall/lib/interactions/disk_conf.py deleted file mode 100644 index 1f34978..0000000 --- a/examples/archinstall/archinstall/lib/interactions/disk_conf.py +++ /dev/null @@ -1,633 +0,0 @@ -from pathlib import Path - -from archinstall.lib.args import arch_config_handler -from archinstall.lib.disk.device_handler import device_handler -from archinstall.lib.disk.partitioning_menu import manual_partitioning -from archinstall.lib.menu.menu_helper import MenuHelper -from archinstall.lib.models.device import ( - BDevice, - BtrfsMountOption, - DeviceModification, - DiskLayoutConfiguration, - DiskLayoutType, - FilesystemType, - LvmConfiguration, - LvmLayoutType, - LvmVolume, - LvmVolumeGroup, - LvmVolumeStatus, - ModificationStatus, - PartitionFlag, - PartitionModification, - PartitionType, - SectorSize, - Size, - SubvolumeModification, - Unit, - _DeviceInfo, -) -from archinstall.lib.output import debug -from archinstall.lib.translationhandler import tr -from archinstall.tui.curses_menu import SelectMenu -from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.result import ResultType -from archinstall.tui.types import Alignment, FrameProperties, Orientation, PreviewStyle - -from ..output import FormattedOutput -from ..utils.util import prompt_dir - - -def select_devices(preset: list[BDevice] | None = []) -> list[BDevice]: - def _preview_device_selection(item: MenuItem) -> str | None: - device = item.get_value() - dev = device_handler.get_device(device.path) - - if dev and dev.partition_infos: - return FormattedOutput.as_table(dev.partition_infos) - return None - - if preset is None: - preset = [] - - devices = device_handler.devices - options = [d.device_info for d in devices] - presets = [p.device_info for p in preset] - - group = MenuHelper(options).create_menu_group() - group.set_selected_by_value(presets) - group.set_preview_for_all(_preview_device_selection) - - result = SelectMenu[_DeviceInfo]( - group, - alignment=Alignment.CENTER, - search_enabled=False, - multi=True, - preview_style=PreviewStyle.BOTTOM, - preview_size='auto', - preview_frame=FrameProperties.max('Partitions'), - allow_skip=True, - ).run() - - match result.type_: - case ResultType.Reset: - return [] - case ResultType.Skip: - return preset - case ResultType.Selection: - selected_device_info = result.get_values() - selected_devices = [] - - for device in devices: - if device.device_info in selected_device_info: - selected_devices.append(device) - - return selected_devices - - -def get_default_partition_layout( - devices: list[BDevice], - filesystem_type: FilesystemType | None = None, -) -> list[DeviceModification]: - if len(devices) == 1: - device_modification = suggest_single_disk_layout( - devices[0], - filesystem_type=filesystem_type, - ) - return [device_modification] - else: - return suggest_multi_disk_layout( - devices, - filesystem_type=filesystem_type, - ) - - -def _manual_partitioning( - preset: list[DeviceModification], - devices: list[BDevice], -) -> list[DeviceModification]: - modifications = [] - for device in devices: - mod = next(filter(lambda x: x.device == device, preset), None) - if not mod: - mod = DeviceModification(device, wipe=False) - - if device_mod := manual_partitioning(mod, device_handler.partition_table): - modifications.append(device_mod) - - return modifications - - -def select_disk_config(preset: DiskLayoutConfiguration | None = None) -> DiskLayoutConfiguration | None: - default_layout = DiskLayoutType.Default.display_msg() - manual_mode = DiskLayoutType.Manual.display_msg() - pre_mount_mode = DiskLayoutType.Pre_mount.display_msg() - - items = [ - MenuItem(default_layout, value=default_layout), - MenuItem(manual_mode, value=manual_mode), - MenuItem(pre_mount_mode, value=pre_mount_mode), - ] - group = MenuItemGroup(items, sort_items=False) - - if preset: - group.set_selected_by_value(preset.config_type.display_msg()) - - result = SelectMenu[str]( - group, - allow_skip=True, - alignment=Alignment.CENTER, - frame=FrameProperties.min(tr('Disk configuration type')), - allow_reset=True, - ).run() - - match result.type_: - case ResultType.Skip: - return preset - case ResultType.Reset: - return None - case ResultType.Selection: - selection = result.get_value() - - if selection == pre_mount_mode: - output = 'You will use whatever drive-setup is mounted at the specified directory\n' - output += "WARNING: Archinstall won't check the suitability of this setup\n" - - path = prompt_dir(tr('Root mount directory'), output, allow_skip=True) - - if path is None: - return None - - mods = device_handler.detect_pre_mounted_mods(path) - - return DiskLayoutConfiguration( - config_type=DiskLayoutType.Pre_mount, - device_modifications=mods, - mountpoint=path, - ) - - preset_devices = [mod.device for mod in preset.device_modifications] if preset else [] - devices = select_devices(preset_devices) - - if not devices: - return None - - if result.get_value() == default_layout: - modifications = get_default_partition_layout(devices) - if modifications: - return DiskLayoutConfiguration( - config_type=DiskLayoutType.Default, - device_modifications=modifications, - ) - elif result.get_value() == manual_mode: - preset_mods = preset.device_modifications if preset else [] - modifications = _manual_partitioning(preset_mods, devices) - - if modifications: - return DiskLayoutConfiguration( - config_type=DiskLayoutType.Manual, - device_modifications=modifications, - ) - - return None - - -def select_lvm_config( - disk_config: DiskLayoutConfiguration, - preset: LvmConfiguration | None = None, -) -> LvmConfiguration | None: - preset_value = preset.config_type.display_msg() if preset else None - default_mode = LvmLayoutType.Default.display_msg() - - items = [MenuItem(default_mode, value=default_mode)] - group = MenuItemGroup(items) - group.set_focus_by_value(preset_value) - - result = SelectMenu[str]( - group, - allow_reset=True, - allow_skip=True, - frame=FrameProperties.min(tr('LVM configuration type')), - alignment=Alignment.CENTER, - ).run() - - match result.type_: - case ResultType.Skip: - return preset - case ResultType.Reset: - return None - case ResultType.Selection: - if result.get_value() == default_mode: - return suggest_lvm_layout(disk_config) - - return None - - -def _boot_partition(sector_size: SectorSize, using_gpt: bool) -> PartitionModification: - flags = [PartitionFlag.BOOT] - size = Size(1, Unit.GiB, sector_size) - start = Size(1, Unit.MiB, sector_size) - if using_gpt: - flags.append(PartitionFlag.ESP) - - # boot partition - return PartitionModification( - status=ModificationStatus.Create, - type=PartitionType.Primary, - start=start, - length=size, - mountpoint=Path('/boot'), - fs_type=FilesystemType.Fat32, - flags=flags, - ) - - -def select_main_filesystem_format() -> FilesystemType: - items = [ - MenuItem('btrfs', value=FilesystemType.Btrfs), - MenuItem('ext4', value=FilesystemType.Ext4), - MenuItem('xfs', value=FilesystemType.Xfs), - MenuItem('f2fs', value=FilesystemType.F2fs), - ] - - if arch_config_handler.args.advanced: - items.append(MenuItem('ntfs', value=FilesystemType.Ntfs)) - - group = MenuItemGroup(items, sort_items=False) - result = SelectMenu[FilesystemType]( - group, - alignment=Alignment.CENTER, - frame=FrameProperties.min('Filesystem'), - allow_skip=False, - ).run() - - match result.type_: - case ResultType.Selection: - return result.get_value() - case _: - raise ValueError('Unhandled result type') - - -def select_mount_options() -> list[str]: - prompt = tr('Would you like to use compression or disable CoW?') + '\n' - compression = tr('Use compression') - disable_cow = tr('Disable Copy-on-Write') - - items = [ - MenuItem(compression, value=BtrfsMountOption.compress.value), - MenuItem(disable_cow, value=BtrfsMountOption.nodatacow.value), - ] - group = MenuItemGroup(items, sort_items=False) - result = SelectMenu[str]( - group, - header=prompt, - alignment=Alignment.CENTER, - columns=2, - orientation=Orientation.HORIZONTAL, - search_enabled=False, - allow_skip=True, - ).run() - - match result.type_: - case ResultType.Skip: - return [] - case ResultType.Selection: - return [result.get_value()] - case _: - raise ValueError('Unhandled result type') - - -def process_root_partition_size(total_size: Size, sector_size: SectorSize) -> Size: - # root partition size processing - total_device_size = total_size.convert(Unit.GiB) - if total_device_size.value > 500: - # maximum size - return Size(value=50, unit=Unit.GiB, sector_size=sector_size) - elif total_device_size.value < 320: - # minimum size - return Size(value=32, unit=Unit.GiB, sector_size=sector_size) - else: - # 10% of total size - length = total_device_size.value // 10 - return Size(value=length, unit=Unit.GiB, sector_size=sector_size) - - -def get_default_btrfs_subvols() -> list[SubvolumeModification]: - # https://btrfs.wiki.kernel.org/index.php/FAQ - # https://unix.stackexchange.com/questions/246976/btrfs-subvolume-uuid-clash - # https://github.com/classy-giraffe/easy-arch/blob/main/easy-arch.sh - return [ - SubvolumeModification(Path('@'), Path('/')), - SubvolumeModification(Path('@home'), Path('/home')), - SubvolumeModification(Path('@log'), Path('/var/log')), - SubvolumeModification(Path('@pkg'), Path('/var/cache/pacman/pkg')), - ] - - -def suggest_single_disk_layout( - device: BDevice, - filesystem_type: FilesystemType | None = None, - separate_home: bool | None = None, -) -> DeviceModification: - if not filesystem_type: - filesystem_type = select_main_filesystem_format() - - sector_size = device.device_info.sector_size - total_size = device.device_info.total_size - available_space = total_size - min_size_to_allow_home_part = Size(64, Unit.GiB, sector_size) - - if filesystem_type == FilesystemType.Btrfs: - prompt = tr('Would you like to use BTRFS subvolumes with a default structure?') + '\n' - group = MenuItemGroup.yes_no() - group.set_focus_by_value(MenuItem.yes().value) - result = SelectMenu[bool]( - group, - header=prompt, - alignment=Alignment.CENTER, - columns=2, - orientation=Orientation.HORIZONTAL, - allow_skip=False, - ).run() - - using_subvolumes = result.item() == MenuItem.yes() - mount_options = select_mount_options() - else: - using_subvolumes = False - mount_options = [] - - device_modification = DeviceModification(device, wipe=True) - - using_gpt = device_handler.partition_table.is_gpt() - - if using_gpt: - available_space = available_space.gpt_end() - - available_space = available_space.align() - - # Used for reference: https://wiki.archlinux.org/title/partitioning - - boot_partition = _boot_partition(sector_size, using_gpt) - device_modification.add_partition(boot_partition) - - if separate_home is False or using_subvolumes or total_size < min_size_to_allow_home_part: - using_home_partition = False - elif separate_home: - using_home_partition = True - else: - prompt = tr('Would you like to create a separate partition for /home?') + '\n' - group = MenuItemGroup.yes_no() - group.set_focus_by_value(MenuItem.yes().value) - result = SelectMenu( - group, - header=prompt, - orientation=Orientation.HORIZONTAL, - columns=2, - alignment=Alignment.CENTER, - allow_skip=False, - ).run() - - using_home_partition = result.item() == MenuItem.yes() - - # root partition - root_start = boot_partition.start + boot_partition.length - - # Set a size for / (/root) - if using_home_partition: - root_length = process_root_partition_size(total_size, sector_size) - else: - root_length = available_space - root_start - - root_partition = PartitionModification( - status=ModificationStatus.Create, - type=PartitionType.Primary, - start=root_start, - length=root_length, - mountpoint=Path('/') if not using_subvolumes else None, - fs_type=filesystem_type, - mount_options=mount_options, - ) - - device_modification.add_partition(root_partition) - - if using_subvolumes: - root_partition.btrfs_subvols = get_default_btrfs_subvols() - elif using_home_partition: - # If we don't want to use subvolumes, - # But we want to be able to reuse data between re-installs.. - # A second partition for /home would be nice if we have the space for it - home_start = root_partition.start + root_partition.length - home_length = available_space - home_start - - flags = [] - if using_gpt: - flags.append(PartitionFlag.LINUX_HOME) - - home_partition = PartitionModification( - status=ModificationStatus.Create, - type=PartitionType.Primary, - start=home_start, - length=home_length, - mountpoint=Path('/home'), - fs_type=filesystem_type, - mount_options=mount_options, - flags=flags, - ) - device_modification.add_partition(home_partition) - - return device_modification - - -def suggest_multi_disk_layout( - devices: list[BDevice], - filesystem_type: FilesystemType | None = None, -) -> list[DeviceModification]: - if not devices: - return [] - - # Not really a rock solid foundation of information to stand on, but it's a start: - # https://www.reddit.com/r/btrfs/comments/m287gp/partition_strategy_for_two_physical_disks/ - # https://www.reddit.com/r/btrfs/comments/9us4hr/what_is_your_btrfs_partitionsubvolumes_scheme/ - min_home_partition_size = Size(40, Unit.GiB, SectorSize.default()) - # rough estimate taking in to account user desktops etc. TODO: Catch user packages to detect size? - desired_root_partition_size = Size(32, Unit.GiB, SectorSize.default()) - mount_options = [] - - if not filesystem_type: - filesystem_type = select_main_filesystem_format() - - # find proper disk for /home - possible_devices = [d for d in devices if d.device_info.total_size >= min_home_partition_size] - home_device = max(possible_devices, key=lambda d: d.device_info.total_size) if possible_devices else None - - # find proper device for /root - devices_delta = {} - for device in devices: - if device is not home_device: - delta = device.device_info.total_size - desired_root_partition_size - devices_delta[device] = delta - - sorted_delta: list[tuple[BDevice, Size]] = sorted(devices_delta.items(), key=lambda x: x[1]) - root_device: BDevice | None = sorted_delta[0][0] - - if home_device is None or root_device is None: - text = tr('The selected drives do not have the minimum capacity required for an automatic suggestion\n') - text += tr('Minimum capacity for /home partition: {}GiB\n').format(min_home_partition_size.format_size(Unit.GiB)) - text += tr('Minimum capacity for Arch Linux partition: {}GiB').format(desired_root_partition_size.format_size(Unit.GiB)) - - items = [MenuItem(tr('Continue'))] - group = MenuItemGroup(items) - SelectMenu(group).run() - - return [] - - if filesystem_type == FilesystemType.Btrfs: - mount_options = select_mount_options() - - device_paths = ', '.join([str(d.device_info.path) for d in devices]) - - debug(f'Suggesting multi-disk-layout for devices: {device_paths}') - debug(f'/root: {root_device.device_info.path}') - debug(f'/home: {home_device.device_info.path}') - - root_device_modification = DeviceModification(root_device, wipe=True) - home_device_modification = DeviceModification(home_device, wipe=True) - - root_device_sector_size = root_device_modification.device.device_info.sector_size - home_device_sector_size = home_device_modification.device.device_info.sector_size - - using_gpt = device_handler.partition_table.is_gpt() - - # add boot partition to the root device - boot_partition = _boot_partition(root_device_sector_size, using_gpt) - root_device_modification.add_partition(boot_partition) - - root_start = boot_partition.start + boot_partition.length - root_length = root_device.device_info.total_size - root_start - - if using_gpt: - root_length = root_length.gpt_end() - - root_length = root_length.align() - - # add root partition to the root device - root_partition = PartitionModification( - status=ModificationStatus.Create, - type=PartitionType.Primary, - start=root_start, - length=root_length, - mountpoint=Path('/'), - mount_options=mount_options, - fs_type=filesystem_type, - ) - root_device_modification.add_partition(root_partition) - - home_start = Size(1, Unit.MiB, home_device_sector_size) - home_length = home_device.device_info.total_size - home_start - - flags = [] - if using_gpt: - home_length = home_length.gpt_end() - flags.append(PartitionFlag.LINUX_HOME) - - home_length = home_length.align() - - # add home partition to home device - home_partition = PartitionModification( - status=ModificationStatus.Create, - type=PartitionType.Primary, - start=home_start, - length=home_length, - mountpoint=Path('/home'), - mount_options=mount_options, - fs_type=filesystem_type, - flags=flags, - ) - home_device_modification.add_partition(home_partition) - - return [root_device_modification, home_device_modification] - - -def suggest_lvm_layout( - disk_config: DiskLayoutConfiguration, - filesystem_type: FilesystemType | None = None, - vg_grp_name: str = 'ArchinstallVg', -) -> LvmConfiguration: - if disk_config.config_type != DiskLayoutType.Default: - raise ValueError('LVM suggested volumes are only available for default partitioning') - - using_subvolumes = False - btrfs_subvols = [] - home_volume = True - mount_options = [] - - if not filesystem_type: - filesystem_type = select_main_filesystem_format() - - if filesystem_type == FilesystemType.Btrfs: - prompt = tr('Would you like to use BTRFS subvolumes with a default structure?') + '\n' - group = MenuItemGroup.yes_no() - group.set_focus_by_value(MenuItem.yes().value) - - result = SelectMenu[bool]( - group, - header=prompt, - search_enabled=False, - allow_skip=False, - orientation=Orientation.HORIZONTAL, - columns=2, - alignment=Alignment.CENTER, - ).run() - - using_subvolumes = MenuItem.yes() == result.item() - mount_options = select_mount_options() - - if using_subvolumes: - btrfs_subvols = get_default_btrfs_subvols() - home_volume = False - - boot_part: PartitionModification | None = None - other_part: list[PartitionModification] = [] - - for mod in disk_config.device_modifications: - for part in mod.partitions: - if part.is_boot(): - boot_part = part - else: - other_part.append(part) - - if not boot_part: - raise ValueError('Unable to find boot partition in partition modifications') - - total_vol_available = sum( - [p.length for p in other_part], - Size(0, Unit.B, SectorSize.default()), - ) - root_vol_size = Size(20, Unit.GiB, SectorSize.default()) - home_vol_size = total_vol_available - root_vol_size - - lvm_vol_group = LvmVolumeGroup(vg_grp_name, pvs=other_part) - - root_vol = LvmVolume( - status=LvmVolumeStatus.Create, - name='root', - fs_type=filesystem_type, - length=root_vol_size, - mountpoint=Path('/'), - btrfs_subvols=btrfs_subvols, - mount_options=mount_options, - ) - - lvm_vol_group.volumes.append(root_vol) - - if home_volume: - home_vol = LvmVolume( - status=LvmVolumeStatus.Create, - name='home', - fs_type=filesystem_type, - length=home_vol_size, - mountpoint=Path('/home'), - ) - - lvm_vol_group.volumes.append(home_vol) - - return LvmConfiguration(LvmLayoutType.Default, [lvm_vol_group]) diff --git a/examples/archinstall/archinstall/lib/interactions/general_conf.py b/examples/archinstall/archinstall/lib/interactions/general_conf.py deleted file mode 100644 index fed77b5..0000000 --- a/examples/archinstall/archinstall/lib/interactions/general_conf.py +++ /dev/null @@ -1,305 +0,0 @@ -from __future__ import annotations - -from enum import Enum -from pathlib import Path -from typing import assert_never - -from archinstall.lib.models.packages import Repository -from archinstall.lib.packages.packages import list_available_packages -from archinstall.lib.translationhandler import tr -from archinstall.tui.curses_menu import EditMenu, SelectMenu, Tui -from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.result import ResultType -from archinstall.tui.types import Alignment, FrameProperties, Orientation, PreviewStyle - -from ..locale.utils import list_timezones -from ..models.packages import AvailablePackage, PackageGroup -from ..output import warn -from ..translationhandler import Language - - -class PostInstallationAction(Enum): - EXIT = tr('Exit archinstall') - REBOOT = tr('Reboot system') - CHROOT = tr('chroot into installation for post-installation configurations') - - -def ask_ntp(preset: bool = True) -> bool: - header = tr('Would you like to use automatic time synchronization (NTP) with the default time servers?\n') + '\n' - header += ( - tr( - 'Hardware time and other post-configuration steps might be required in order for NTP to work.\nFor more information, please check the Arch wiki', - ) - + '\n' - ) - - preset_val = MenuItem.yes() if preset else MenuItem.no() - group = MenuItemGroup.yes_no() - group.focus_item = preset_val - - result = SelectMenu[bool]( - group, - header=header, - allow_skip=True, - alignment=Alignment.CENTER, - columns=2, - orientation=Orientation.HORIZONTAL, - ).run() - - match result.type_: - case ResultType.Skip: - return preset - case ResultType.Selection: - return result.item() == MenuItem.yes() - case _: - raise ValueError('Unhandled return type') - - -def ask_hostname(preset: str | None = None) -> str | None: - result = EditMenu( - tr('Hostname'), - alignment=Alignment.CENTER, - allow_skip=True, - default_text=preset, - ).input() - - match result.type_: - case ResultType.Skip: - return preset - case ResultType.Selection: - hostname = result.text() - if len(hostname) < 1: - return None - return hostname - case ResultType.Reset: - raise ValueError('Unhandled result type') - - -def ask_for_a_timezone(preset: str | None = None) -> str | None: - default = 'UTC' - timezones = list_timezones() - - items = [MenuItem(tz, value=tz) for tz in timezones] - group = MenuItemGroup(items, sort_items=True) - group.set_selected_by_value(preset) - group.set_default_by_value(default) - - result = SelectMenu[str]( - group, - allow_reset=True, - allow_skip=True, - frame=FrameProperties.min(tr('Timezone')), - alignment=Alignment.CENTER, - ).run() - - match result.type_: - case ResultType.Skip: - return preset - case ResultType.Reset: - return default - case ResultType.Selection: - return result.get_value() - - -def select_language(preset: str | None = None) -> str | None: - from ..locale.locale_menu import select_kb_layout - - # We'll raise an exception in an upcoming version. - # from ..exceptions import Deprecated - # raise Deprecated("select_language() has been deprecated, use select_kb_layout() instead.") - - # No need to translate this i feel, as it's a short lived message. - warn('select_language() is deprecated, use select_kb_layout() instead. select_language() will be removed in a future version') - - return select_kb_layout(preset) - - -def select_archinstall_language(languages: list[Language], preset: Language) -> Language: - # these are the displayed language names which can either be - # the english name of a language or, if present, the - # name of the language in its own language - - items = [MenuItem(lang.display_name, lang) for lang in languages] - group = MenuItemGroup(items, sort_items=True) - group.set_focus_by_value(preset) - - title = 'NOTE: If a language can not displayed properly, a proper font must be set manually in the console.\n' - title += 'All available fonts can be found in "/usr/share/kbd/consolefonts"\n' - title += 'e.g. setfont LatGrkCyr-8x16 (to display latin/greek/cyrillic characters)\n' - - result = SelectMenu[Language]( - group, - header=title, - allow_skip=True, - allow_reset=False, - alignment=Alignment.CENTER, - frame=FrameProperties.min(header=tr('Select language')), - ).run() - - match result.type_: - case ResultType.Skip: - return preset - case ResultType.Selection: - return result.get_value() - case ResultType.Reset: - raise ValueError('Language selection not handled') - - -def ask_additional_packages_to_install( - preset: list[str] = [], - repositories: set[Repository] = set(), -) -> list[str]: - repositories |= {Repository.Core, Repository.Extra} - - respos_text = ', '.join([r.value for r in repositories]) - output = tr('Repositories: {}').format(respos_text) + '\n' - - output += tr('Loading packages...') - Tui.print(output, clear_screen=True) - - packages = list_available_packages(tuple(repositories)) - package_groups = PackageGroup.from_available_packages(packages) - - # Additional packages (with some light weight error handling for invalid package names) - header = tr('Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed.') + '\n' - header += tr('Select any packages from the below list that should be installed additionally') + '\n' - - # there are over 15k packages so this needs to be quick - preset_packages: list[AvailablePackage | PackageGroup] = [] - for p in preset: - if p in packages: - preset_packages.append(packages[p]) - elif p in package_groups: - preset_packages.append(package_groups[p]) - - items = [ - MenuItem( - name, - value=pkg, - preview_action=lambda x: x.value.info(), - ) - for name, pkg in packages.items() - ] - - items += [ - MenuItem( - name, - value=group, - preview_action=lambda x: x.value.info(), - ) - for name, group in package_groups.items() - ] - - menu_group = MenuItemGroup(items, sort_items=True) - menu_group.set_selected_by_value(preset_packages) - - result = SelectMenu[AvailablePackage | PackageGroup]( - menu_group, - header=header, - alignment=Alignment.LEFT, - allow_reset=True, - allow_skip=True, - multi=True, - preview_frame=FrameProperties.max('Package info'), - preview_style=PreviewStyle.RIGHT, - preview_size='auto', - ).run() - - match result.type_: - case ResultType.Skip: - return preset - case ResultType.Reset: - return [] - case ResultType.Selection: - selected_pacakges = result.get_values() - return [pkg.name for pkg in selected_pacakges] - - -def add_number_of_parallel_downloads(preset: int | None = None) -> int | None: - max_recommended = 5 - - header = tr('This option enables the number of parallel downloads that can occur during package downloads') + '\n' - header += tr('Enter the number of parallel downloads to be enabled.\n\nNote:\n') - header += tr(' - Maximum recommended value : {} ( Allows {} parallel downloads at a time )').format(max_recommended, max_recommended) + '\n' - header += tr(' - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n') - - def validator(s: str | None) -> str | None: - if s is not None: - try: - value = int(s) - if value >= 0: - return None - except Exception: - pass - - return tr('Invalid download number') - - result = EditMenu( - tr('Number downloads'), - header=header, - allow_skip=True, - allow_reset=True, - validator=validator, - default_text=str(preset) if preset is not None else None, - ).input() - - match result.type_: - case ResultType.Skip: - return preset - case ResultType.Reset: - return 0 - case ResultType.Selection: - downloads: int = int(result.text()) - case _: - assert_never(result.type_) - - pacman_conf_path = Path('/etc/pacman.conf') - with pacman_conf_path.open() as f: - pacman_conf = f.read().split('\n') - - with pacman_conf_path.open('w') as fwrite: - for line in pacman_conf: - if 'ParallelDownloads' in line: - fwrite.write(f'ParallelDownloads = {downloads}\n') - else: - fwrite.write(f'{line}\n') - - return downloads - - -def ask_post_installation() -> PostInstallationAction: - header = tr('Installation completed') + '\n\n' - header += tr('What would you like to do next?') + '\n' - - items = [MenuItem(action.value, value=action) for action in PostInstallationAction] - group = MenuItemGroup(items) - - result = SelectMenu[PostInstallationAction]( - group, - header=header, - allow_skip=False, - alignment=Alignment.CENTER, - ).run() - - match result.type_: - case ResultType.Selection: - return result.get_value() - case _: - raise ValueError('Post installation action not handled') - - -def ask_abort() -> None: - prompt = tr('Do you really want to abort?') + '\n' - group = MenuItemGroup.yes_no() - - result = SelectMenu[bool]( - group, - header=prompt, - allow_skip=False, - alignment=Alignment.CENTER, - columns=2, - orientation=Orientation.HORIZONTAL, - ).run() - - if result.item() == MenuItem.yes(): - exit(0) diff --git a/examples/archinstall/archinstall/lib/interactions/manage_users_conf.py b/examples/archinstall/archinstall/lib/interactions/manage_users_conf.py deleted file mode 100644 index d1ae13d..0000000 --- a/examples/archinstall/archinstall/lib/interactions/manage_users_conf.py +++ /dev/null @@ -1,119 +0,0 @@ -from __future__ import annotations - -import re -from typing import override - -from archinstall.lib.translationhandler import tr -from archinstall.tui.curses_menu import EditMenu, SelectMenu -from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.result import ResultType -from archinstall.tui.types import Alignment, Orientation - -from ..menu.list_manager import ListManager -from ..models.users import User -from ..utils.util import get_password - - -class UserList(ListManager[User]): - def __init__(self, prompt: str, lusers: list[User]): - self._actions = [ - tr('Add a user'), - tr('Change password'), - tr('Promote/Demote user'), - tr('Delete User'), - ] - - super().__init__( - lusers, - [self._actions[0]], - self._actions[1:], - prompt, - ) - - @override - def selected_action_display(self, selection: User) -> str: - return selection.username - - @override - def handle_action(self, action: str, entry: User | None, data: list[User]) -> list[User]: - if action == self._actions[0]: # add - new_user = self._add_user() - if new_user is not None: - # in case a user with the same username as an existing user - # was created we'll replace the existing one - data = [d for d in data if d.username != new_user.username] - data += [new_user] - elif action == self._actions[1] and entry: # change password - header = f'{tr("User")}: {entry.username}\n' - new_password = get_password(tr('Password'), header=header) - - if new_password: - user = next(filter(lambda x: x == entry, data)) - user.password = new_password - elif action == self._actions[2] and entry: # promote/demote - user = next(filter(lambda x: x == entry, data)) - user.sudo = False if user.sudo else True - elif action == self._actions[3] and entry: # delete - data = [d for d in data if d != entry] - - return data - - def _check_for_correct_username(self, username: str | None) -> str | None: - if username is not None: - if re.match(r'^[a-z_][a-z0-9_-]*\$?$', username) and len(username) <= 32: - return None - return tr('The username you entered is invalid') - - def _add_user(self) -> User | None: - editResult = EditMenu( - tr('Username'), - allow_skip=True, - validator=self._check_for_correct_username, - ).input() - - match editResult.type_: - case ResultType.Skip: - return None - case ResultType.Selection: - username = editResult.text() - case _: - raise ValueError('Unhandled result type') - - if not username: - return None - - header = f'{tr("Username")}: {username}\n' - - password = get_password(tr('Password'), header=header, allow_skip=True) - - if not password: - return None - - header += f'{tr("Password")}: {password.hidden()}\n\n' - header += str(tr('Should "{}" be a superuser (sudo)?\n')).format(username) - - group = MenuItemGroup.yes_no() - group.focus_item = MenuItem.yes() - - result = SelectMenu[bool]( - group, - header=header, - alignment=Alignment.CENTER, - columns=2, - orientation=Orientation.HORIZONTAL, - search_enabled=False, - allow_skip=False, - ).run() - - match result.type_: - case ResultType.Selection: - sudo = result.item() == MenuItem.yes() - case _: - raise ValueError('Unhandled result type') - - return User(username, password, sudo) - - -def ask_for_additional_users(prompt: str = '', defined_users: list[User] = []) -> list[User]: - users = UserList(prompt, defined_users).run() - return users diff --git a/examples/archinstall/archinstall/lib/interactions/network_menu.py b/examples/archinstall/archinstall/lib/interactions/network_menu.py deleted file mode 100644 index 14071ef..0000000 --- a/examples/archinstall/archinstall/lib/interactions/network_menu.py +++ /dev/null @@ -1,222 +0,0 @@ -from __future__ import annotations - -import ipaddress -from typing import assert_never, override - -from archinstall.lib.translationhandler import tr -from archinstall.tui.curses_menu import EditMenu, SelectMenu -from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.result import ResultType -from archinstall.tui.types import Alignment, FrameProperties - -from ..menu.list_manager import ListManager -from ..models.network import NetworkConfiguration, Nic, NicType -from ..networking import list_interfaces - - -class ManualNetworkConfig(ListManager[Nic]): - def __init__(self, prompt: str, preset: list[Nic]): - self._actions = [ - tr('Add interface'), - tr('Edit interface'), - tr('Delete interface'), - ] - - super().__init__( - preset, - [self._actions[0]], - self._actions[1:], - prompt, - ) - - @override - def selected_action_display(self, selection: Nic) -> str: - return selection.iface if selection.iface else '' - - @override - def handle_action(self, action: str, entry: Nic | None, data: list[Nic]) -> list[Nic]: - if action == self._actions[0]: # add - iface = self._select_iface(data) - if iface: - nic = Nic(iface=iface) - nic = self._edit_iface(nic) - data += [nic] - elif entry: - if action == self._actions[1]: # edit interface - data = [d for d in data if d.iface != entry.iface] - data.append(self._edit_iface(entry)) - elif action == self._actions[2]: # delete - data = [d for d in data if d != entry] - - return data - - def _select_iface(self, data: list[Nic]) -> str | None: - all_ifaces = list_interfaces().values() - existing_ifaces = [d.iface for d in data] - available = set(all_ifaces) - set(existing_ifaces) - - if not available: - return None - - if not available: - return None - - items = [MenuItem(i, value=i) for i in available] - group = MenuItemGroup(items, sort_items=True) - - result = SelectMenu[str]( - group, - alignment=Alignment.CENTER, - frame=FrameProperties.min(tr('Interfaces')), - allow_skip=True, - ).run() - - match result.type_: - case ResultType.Skip: - return None - case ResultType.Selection: - return result.get_value() - case ResultType.Reset: - raise ValueError('Unhandled result type') - - def _get_ip_address( - self, - title: str, - header: str, - allow_skip: bool, - multi: bool, - preset: str | None = None, - ) -> str | None: - def validator(ip: str | None) -> str | None: - failure = tr('You need to enter a valid IP in IP-config mode') - - if not ip: - return failure - - if multi: - ips = ip.split(' ') - else: - ips = [ip] - - try: - for ip in ips: - ipaddress.ip_interface(ip) - return None - except ValueError: - return failure - - result = EditMenu( - title, - header=header, - validator=validator, - allow_skip=allow_skip, - default_text=preset, - ).input() - - match result.type_: - case ResultType.Skip: - return preset - case ResultType.Selection: - return result.text() - case ResultType.Reset: - raise ValueError('Unhandled result type') - - def _edit_iface(self, edit_nic: Nic) -> Nic: - iface_name = edit_nic.iface - modes = ['DHCP (auto detect)', 'IP (static)'] - default_mode = 'DHCP (auto detect)' - - header = tr('Select which mode to configure for "{}"').format(iface_name) + '\n' - items = [MenuItem(m, value=m) for m in modes] - group = MenuItemGroup(items, sort_items=True) - group.set_default_by_value(default_mode) - - result = SelectMenu[str]( - group, - header=header, - allow_skip=False, - alignment=Alignment.CENTER, - frame=FrameProperties.min(tr('Modes')), - ).run() - - match result.type_: - case ResultType.Selection: - mode = result.get_value() - case ResultType.Reset: - raise ValueError('Unhandled result type') - case ResultType.Skip: - raise ValueError('The mode menu should not be skippable') - case _: - assert_never(result.type_) - - if mode == 'IP (static)': - header = tr('Enter the IP and subnet for {} (example: 192.168.0.5/24): ').format(iface_name) + '\n' - ip = self._get_ip_address(tr('IP address'), header, False, False) - - header = tr('Enter your gateway (router) IP address (leave blank for none)') + '\n' - gateway = self._get_ip_address(tr('Gateway address'), header, True, False) - - if edit_nic.dns: - display_dns = ' '.join(edit_nic.dns) - else: - display_dns = None - - header = tr('Enter your DNS servers with space separated (leave blank for none)') + '\n' - dns_servers = self._get_ip_address( - tr('DNS servers'), - header, - True, - True, - display_dns, - ) - - dns = [] - if dns_servers is not None: - dns = dns_servers.split(' ') - - return Nic(iface=iface_name, ip=ip, gateway=gateway, dns=dns, dhcp=False) - else: - # this will contain network iface names - return Nic(iface=iface_name) - - -def ask_to_configure_network(preset: NetworkConfiguration | None) -> NetworkConfiguration | None: - """ - Configure the network on the newly installed system - """ - - items = [MenuItem(n.display_msg(), value=n) for n in NicType] - group = MenuItemGroup(items, sort_items=True) - - if preset: - group.set_selected_by_value(preset.type) - - result = SelectMenu[NicType]( - group, - alignment=Alignment.CENTER, - frame=FrameProperties.min(tr('Network configuration')), - allow_reset=True, - allow_skip=True, - ).run() - - match result.type_: - case ResultType.Skip: - return preset - case ResultType.Reset: - return None - case ResultType.Selection: - config = result.get_value() - - match config: - case NicType.ISO: - return NetworkConfiguration(NicType.ISO) - case NicType.NM: - return NetworkConfiguration(NicType.NM) - case NicType.MANUAL: - preset_nics = preset.nics if preset else [] - nics = ManualNetworkConfig(tr('Configure interfaces'), preset_nics).run() - - if nics: - return NetworkConfiguration(NicType.MANUAL, nics) - - return preset diff --git a/examples/archinstall/archinstall/lib/interactions/system_conf.py b/examples/archinstall/archinstall/lib/interactions/system_conf.py deleted file mode 100644 index 99a1d8b..0000000 --- a/examples/archinstall/archinstall/lib/interactions/system_conf.py +++ /dev/null @@ -1,188 +0,0 @@ -from __future__ import annotations - -from archinstall.lib.translationhandler import tr -from archinstall.tui.curses_menu import SelectMenu -from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.result import ResultType -from archinstall.tui.types import Alignment, FrameProperties, FrameStyle, Orientation, PreviewStyle - -from ..args import arch_config_handler -from ..hardware import GfxDriver, SysInfo -from ..models.bootloader import Bootloader - - -def select_kernel(preset: list[str] = []) -> list[str]: - """ - Asks the user to select a kernel for system. - - :return: The string as a selected kernel - :rtype: string - """ - kernels = ['linux', 'linux-lts', 'linux-zen', 'linux-hardened'] - default_kernel = 'linux' - - items = [MenuItem(k, value=k) for k in kernels] - - group = MenuItemGroup(items, sort_items=True) - group.set_default_by_value(default_kernel) - group.set_focus_by_value(default_kernel) - group.set_selected_by_value(preset) - - result = SelectMenu[str]( - group, - allow_skip=True, - allow_reset=True, - alignment=Alignment.CENTER, - frame=FrameProperties.min(tr('Kernel')), - multi=True, - ).run() - - match result.type_: - case ResultType.Skip: - return preset - case ResultType.Reset: - return [] - case ResultType.Selection: - return result.get_values() - - -def ask_for_bootloader(preset: Bootloader | None) -> Bootloader | None: - # Systemd is UEFI only - options = [] - hidden_options = [] - default = None - header = None - - if arch_config_handler.args.skip_boot: - default = Bootloader.NO_BOOTLOADER - else: - hidden_options += [Bootloader.NO_BOOTLOADER] - - if not SysInfo.has_uefi(): - options += [Bootloader.Grub, Bootloader.Limine] - if not default: - default = Bootloader.Grub - header = tr('UEFI is not detected and some options are disabled') - else: - options += [b for b in Bootloader if b not in hidden_options] - if not default: - default = Bootloader.Systemd - - items = [MenuItem(o.value, value=o) for o in options] - group = MenuItemGroup(items) - group.set_default_by_value(default) - group.set_focus_by_value(preset) - - result = SelectMenu[Bootloader]( - group, - header=header, - alignment=Alignment.CENTER, - frame=FrameProperties.min(tr('Bootloader')), - allow_skip=True, - ).run() - - match result.type_: - case ResultType.Skip: - return preset - case ResultType.Selection: - return result.get_value() - case ResultType.Reset: - raise ValueError('Unhandled result type') - - -def ask_for_uki(preset: bool = True) -> bool: - prompt = tr('Would you like to use unified kernel images?') + '\n' - - group = MenuItemGroup.yes_no() - group.set_focus_by_value(preset) - - result = SelectMenu[bool]( - group, - header=prompt, - columns=2, - orientation=Orientation.HORIZONTAL, - alignment=Alignment.CENTER, - allow_skip=True, - ).run() - - match result.type_: - case ResultType.Skip: - return preset - case ResultType.Selection: - return result.item() == MenuItem.yes() - case ResultType.Reset: - raise ValueError('Unhandled result type') - - -def select_driver(options: list[GfxDriver] = [], preset: GfxDriver | None = None) -> GfxDriver | None: - """ - Some what convoluted function, whose job is simple. - Select a graphics driver from a pre-defined set of popular options. - - (The template xorg is for beginner users, not advanced, and should - there for appeal to the general public first and edge cases later) - """ - if not options: - options = [driver for driver in GfxDriver] - - items = [MenuItem(o.value, value=o, preview_action=lambda x: x.value.packages_text()) for o in options] - group = MenuItemGroup(items, sort_items=True) - group.set_default_by_value(GfxDriver.AllOpenSource) - - if preset is not None: - group.set_focus_by_value(preset) - - header = '' - if SysInfo.has_amd_graphics(): - header += tr('For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options.') + '\n' - if SysInfo.has_intel_graphics(): - header += tr('For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n') - if SysInfo.has_nvidia_graphics(): - header += tr('For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n') - - result = SelectMenu[GfxDriver]( - group, - header=header, - allow_skip=True, - allow_reset=True, - preview_size='auto', - preview_style=PreviewStyle.BOTTOM, - preview_frame=FrameProperties(tr('Info'), h_frame_style=FrameStyle.MIN), - ).run() - - match result.type_: - case ResultType.Skip: - return preset - case ResultType.Reset: - return None - case ResultType.Selection: - return result.get_value() - - -def ask_for_swap(preset: bool = True) -> bool: - if preset: - default_item = MenuItem.yes() - else: - default_item = MenuItem.no() - - prompt = tr('Would you like to use swap on zram?') + '\n' - - group = MenuItemGroup.yes_no() - group.set_focus_by_value(default_item) - - result = SelectMenu[bool]( - group, - header=prompt, - columns=2, - orientation=Orientation.HORIZONTAL, - alignment=Alignment.CENTER, - allow_skip=True, - ).run() - - match result.type_: - case ResultType.Skip: - return preset - case ResultType.Selection: - return result.item() == MenuItem.yes() - case ResultType.Reset: - raise ValueError('Unhandled result type') diff --git a/examples/archinstall/archinstall/lib/locale/__init__.py b/examples/archinstall/archinstall/lib/locale/__init__.py deleted file mode 100644 index daff054..0000000 --- a/examples/archinstall/archinstall/lib/locale/__init__.py +++ /dev/null @@ -1,19 +0,0 @@ -from .utils import ( - list_keyboard_languages, - list_locales, - list_timezones, - list_x11_keyboard_languages, - set_kb_layout, - verify_keyboard_layout, - verify_x11_keyboard_layout, -) - -__all__ = [ - 'list_keyboard_languages', - 'list_locales', - 'list_timezones', - 'list_x11_keyboard_languages', - 'set_kb_layout', - 'verify_keyboard_layout', - 'verify_x11_keyboard_layout', -] diff --git a/examples/archinstall/archinstall/lib/locale/locale_menu.py b/examples/archinstall/archinstall/lib/locale/locale_menu.py deleted file mode 100644 index 1763247..0000000 --- a/examples/archinstall/archinstall/lib/locale/locale_menu.py +++ /dev/null @@ -1,154 +0,0 @@ -from typing import override - -from archinstall.lib.translationhandler import tr -from archinstall.tui.curses_menu import SelectMenu -from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.result import ResultType -from archinstall.tui.types import Alignment, FrameProperties - -from ..menu.abstract_menu import AbstractSubMenu -from ..models.locale import LocaleConfiguration -from .utils import list_keyboard_languages, list_locales, set_kb_layout - - -class LocaleMenu(AbstractSubMenu[LocaleConfiguration]): - def __init__( - self, - locale_conf: LocaleConfiguration, - ): - self._locale_conf = locale_conf - menu_optioons = self._define_menu_options() - - self._item_group = MenuItemGroup(menu_optioons, sort_items=False, checkmarks=True) - super().__init__( - self._item_group, - config=self._locale_conf, - allow_reset=True, - ) - - def _define_menu_options(self) -> list[MenuItem]: - return [ - MenuItem( - text=tr('Keyboard layout'), - action=self._select_kb_layout, - value=self._locale_conf.kb_layout, - preview_action=self._prev_locale, - key='kb_layout', - ), - MenuItem( - text=tr('Locale language'), - action=select_locale_lang, - value=self._locale_conf.sys_lang, - preview_action=self._prev_locale, - key='sys_lang', - ), - MenuItem( - text=tr('Locale encoding'), - action=select_locale_enc, - value=self._locale_conf.sys_enc, - preview_action=self._prev_locale, - key='sys_enc', - ), - ] - - def _prev_locale(self, item: MenuItem) -> str: - temp_locale = LocaleConfiguration( - self._menu_item_group.find_by_key('kb_layout').get_value(), - self._menu_item_group.find_by_key('sys_lang').get_value(), - self._menu_item_group.find_by_key('sys_enc').get_value(), - ) - return temp_locale.preview() - - @override - def run( - self, - additional_title: str | None = None, - ) -> LocaleConfiguration: - super().run(additional_title=additional_title) - return self._locale_conf - - def _select_kb_layout(self, preset: str | None) -> str | None: - kb_lang = select_kb_layout(preset) - if kb_lang: - set_kb_layout(kb_lang) - return kb_lang - - -def select_locale_lang(preset: str | None = None) -> str | None: - locales = list_locales() - locale_lang = set([locale.split()[0] for locale in locales]) - - items = [MenuItem(ll, value=ll) for ll in locale_lang] - group = MenuItemGroup(items, sort_items=True) - group.set_focus_by_value(preset) - - result = SelectMenu[str]( - group, - alignment=Alignment.CENTER, - frame=FrameProperties.min(tr('Locale language')), - allow_skip=True, - ).run() - - match result.type_: - case ResultType.Selection: - return result.get_value() - case ResultType.Skip: - return preset - case _: - raise ValueError('Unhandled return type') - - -def select_locale_enc(preset: str | None = None) -> str | None: - locales = list_locales() - locale_enc = set([locale.split()[1] for locale in locales]) - - items = [MenuItem(le, value=le) for le in locale_enc] - group = MenuItemGroup(items, sort_items=True) - group.set_focus_by_value(preset) - - result = SelectMenu[str]( - group, - alignment=Alignment.CENTER, - frame=FrameProperties.min(tr('Locale encoding')), - allow_skip=True, - ).run() - - match result.type_: - case ResultType.Selection: - return result.get_value() - case ResultType.Skip: - return preset - case _: - raise ValueError('Unhandled return type') - - -def select_kb_layout(preset: str | None = None) -> str | None: - """ - Select keyboard layout - - :return: The keyboard layout shortcut for the selected layout - :rtype: str - """ - - kb_lang = list_keyboard_languages() - # sort alphabetically and then by length - sorted_kb_lang = sorted(kb_lang, key=lambda x: (len(x), x)) - - items = [MenuItem(lang, value=lang) for lang in sorted_kb_lang] - group = MenuItemGroup(items, sort_items=False) - group.set_focus_by_value(preset) - - result = SelectMenu[str]( - group, - alignment=Alignment.CENTER, - frame=FrameProperties.min(tr('Keyboard layout')), - allow_skip=True, - ).run() - - match result.type_: - case ResultType.Selection: - return result.get_value() - case ResultType.Skip: - return preset - case _: - raise ValueError('Unhandled return type') diff --git a/examples/archinstall/archinstall/lib/locale/utils.py b/examples/archinstall/archinstall/lib/locale/utils.py deleted file mode 100644 index e1e25a0..0000000 --- a/examples/archinstall/archinstall/lib/locale/utils.py +++ /dev/null @@ -1,105 +0,0 @@ -from ..exceptions import ServiceException, SysCallError -from ..general import SysCommand -from ..output import error - - -def list_keyboard_languages() -> list[str]: - return ( - SysCommand( - 'localectl --no-pager list-keymaps', - environment_vars={'SYSTEMD_COLORS': '0'}, - ) - .decode() - .splitlines() - ) - - -def list_locales() -> list[str]: - locales = [] - - with open('/usr/share/i18n/SUPPORTED') as file: - for line in file: - if line != 'C.UTF-8 UTF-8\n': - locales.append(line.rstrip()) - - return locales - - -def list_x11_keyboard_languages() -> list[str]: - return ( - SysCommand( - 'localectl --no-pager list-x11-keymap-layouts', - environment_vars={'SYSTEMD_COLORS': '0'}, - ) - .decode() - .splitlines() - ) - - -def verify_keyboard_layout(layout: str) -> bool: - for language in list_keyboard_languages(): - if layout.lower() == language.lower(): - return True - return False - - -def verify_x11_keyboard_layout(layout: str) -> bool: - for language in list_x11_keyboard_languages(): - if layout.lower() == language.lower(): - return True - return False - - -def get_kb_layout() -> str: - try: - lines = ( - SysCommand( - 'localectl --no-pager status', - environment_vars={'SYSTEMD_COLORS': '0'}, - ) - .decode() - .splitlines() - ) - except Exception: - return '' - - vcline = '' - for line in lines: - if 'VC Keymap: ' in line: - vcline = line - - if vcline == '': - return '' - - layout = vcline.split(': ')[1] - if not verify_keyboard_layout(layout): - return '' - - return layout - - -def set_kb_layout(locale: str) -> bool: - if len(locale.strip()): - if not verify_keyboard_layout(locale): - error(f'Invalid keyboard locale specified: {locale}') - return False - - try: - SysCommand(f'localectl set-keymap {locale}') - except SysCallError as err: - raise ServiceException(f"Unable to set locale '{locale}' for console: {err}") - - return True - - return False - - -def list_timezones() -> list[str]: - return ( - SysCommand( - 'timedatectl --no-pager list-timezones', - environment_vars={'SYSTEMD_COLORS': '0'}, - ) - .decode() - .splitlines() - ) diff --git a/examples/archinstall/archinstall/lib/luks.py b/examples/archinstall/archinstall/lib/luks.py deleted file mode 100644 index 075bef9..0000000 --- a/examples/archinstall/archinstall/lib/luks.py +++ /dev/null @@ -1,240 +0,0 @@ -from __future__ import annotations - -import shlex -from dataclasses import dataclass -from pathlib import Path -from subprocess import CalledProcessError -from types import TracebackType - -from archinstall.lib.disk.utils import get_lsblk_info, umount -from archinstall.lib.models.device import DEFAULT_ITER_TIME - -from .exceptions import DiskError, SysCallError -from .general import SysCommand, SysCommandWorker, generate_password, run -from .models.users import Password -from .output import debug, info - - -@dataclass -class Luks2: - luks_dev_path: Path - mapper_name: str | None = None - password: Password | None = None - key_file: Path | None = None - auto_unmount: bool = False - - @property - def mapper_dev(self) -> Path | None: - if self.mapper_name: - return Path(f'/dev/mapper/{self.mapper_name}') - return None - - def isLuks(self) -> bool: - try: - SysCommand(f'cryptsetup isLuks {self.luks_dev_path}') - return True - except SysCallError: - return False - - def erase(self) -> None: - debug(f'Erasing luks partition: {self.luks_dev_path}') - worker = SysCommandWorker(f'cryptsetup erase {self.luks_dev_path}') - worker.poll() - worker.write(b'YES\n', line_ending=False) - - def __post_init__(self) -> None: - if self.luks_dev_path is None: - raise ValueError('Partition must have a path set') - - def __enter__(self) -> None: - self.unlock(self.key_file) - - def __exit__(self, exc_type: type[BaseException] | None, exc_value: BaseException | None, traceback: TracebackType | None) -> None: - if self.auto_unmount: - self.lock() - - def _password_bytes(self) -> bytes: - if not self.password: - raise ValueError('Password for luks2 device was not specified') - - if isinstance(self.password, bytes): - return self.password - else: - return bytes(self.password.plaintext, 'UTF-8') - - def _get_passphrase_args( - self, - key_file: Path | None = None, - ) -> tuple[list[str], bytes | None]: - key_file = key_file or self.key_file - - if key_file: - return ['--key-file', str(key_file)], None - - return [], self._password_bytes() - - def encrypt( - self, - key_size: int = 512, - hash_type: str = 'sha512', - iter_time: int = DEFAULT_ITER_TIME, - key_file: Path | None = None, - ) -> Path | None: - debug(f'Luks2 encrypting: {self.luks_dev_path}') - - key_file_arg, passphrase = self._get_passphrase_args(key_file) - - cmd = [ - 'cryptsetup', - '--batch-mode', - '--verbose', - '--type', - 'luks2', - '--pbkdf', - 'argon2id', - '--hash', - hash_type, - '--key-size', - str(key_size), - '--iter-time', - str(iter_time), - *key_file_arg, - '--use-urandom', - 'luksFormat', - str(self.luks_dev_path), - ] - - debug(f'cryptsetup format: {shlex.join(cmd)}') - - try: - result = run(cmd, input_data=passphrase) - except CalledProcessError as err: - output = err.stdout.decode().rstrip() - raise DiskError(f'Could not encrypt volume "{self.luks_dev_path}": {output}') - - debug(f'cryptsetup luksFormat output: {result.stdout.decode().rstrip()}') - - self.key_file = key_file - - return key_file - - def _get_luks_uuid(self) -> str: - command = f'cryptsetup luksUUID {self.luks_dev_path}' - - try: - return SysCommand(command).decode() - except SysCallError as err: - info(f'Unable to get UUID for Luks device: {self.luks_dev_path}') - raise err - - def is_unlocked(self) -> bool: - return (mapper_dev := self.mapper_dev) is not None and mapper_dev.is_symlink() - - def unlock(self, key_file: Path | None = None) -> None: - """ - Unlocks the luks device, an optional key file location for unlocking can be specified, - otherwise a default location for the key file will be used. - - :param key_file: An alternative key file - :type key_file: Path - """ - debug(f'Unlocking luks2 device: {self.luks_dev_path}') - - if not self.mapper_name: - raise ValueError('mapper name missing') - - key_file_arg, passphrase = self._get_passphrase_args(key_file) - - cmd = [ - 'cryptsetup', - 'open', - str(self.luks_dev_path), - str(self.mapper_name), - *key_file_arg, - '--type', - 'luks2', - ] - - result = run(cmd, input_data=passphrase) - - debug(f'cryptsetup open output: {result.stdout.decode().rstrip()}') - - if not self.is_unlocked(): - raise DiskError(f'Failed to open luks2 device: {self.luks_dev_path}') - - def lock(self) -> None: - umount(self.luks_dev_path) - - # Get crypt-information about the device by doing a reverse lookup starting with the partition path - # For instance: /dev/sda - lsblk_info = get_lsblk_info(self.luks_dev_path) - - # For each child (sub-partition/sub-device) - for child in lsblk_info.children: - # Unmount the child location - for mountpoint in child.mountpoints: - debug(f'Unmounting {mountpoint}') - umount(mountpoint, recursive=True) - - # And close it if possible. - debug(f'Closing crypt device {child.name}') - SysCommand(f'cryptsetup close {child.name}') - - def create_keyfile(self, target_path: Path, override: bool = False) -> None: - """ - Routine to create keyfiles, so it can be moved elsewhere - """ - if self.mapper_name is None: - raise ValueError('Mapper name must be provided') - - # Once we store the key as ../xyzloop.key systemd-cryptsetup can - # automatically load this key if we name the device to "xyzloop" - kf_path = Path(f'/etc/cryptsetup-keys.d/{self.mapper_name}.key') - key_file = target_path / kf_path.relative_to(kf_path.root) - crypttab_path = target_path / 'etc/crypttab' - - if key_file.exists(): - if not override: - info(f'Key file {key_file} already exists, keeping existing') - return - else: - info(f'Key file {key_file} already exists, overriding') - - key_file.parent.mkdir(parents=True, exist_ok=True) - - pwd = generate_password(length=512) - key_file.write_text(pwd) - - key_file.chmod(0o400) - - self._add_key(key_file) - self._crypttab(crypttab_path, kf_path, options=['luks', 'key-slot=1']) - - def _add_key(self, key_file: Path) -> None: - debug(f'Adding additional key-file {key_file}') - - command = f'cryptsetup -q -v luksAddKey {self.luks_dev_path} {key_file}' - worker = SysCommandWorker(command) - pw_injected = False - - while worker.is_alive(): - if b'Enter any existing passphrase' in worker and pw_injected is False: - worker.write(self._password_bytes()) - pw_injected = True - - if worker.exit_code != 0: - raise DiskError(f'Could not add encryption key {key_file} to {self.luks_dev_path}: {worker.decode()}') - - def _crypttab( - self, - crypttab_path: Path, - key_file: Path, - options: list[str], - ) -> None: - debug(f'Adding crypttab entry for key {key_file}') - - with open(crypttab_path, 'a') as crypttab: - opt = ','.join(options) - uuid = self._get_luks_uuid() - row = f'{self.mapper_name} UUID={uuid} {key_file} {opt}\n' - crypttab.write(row) diff --git a/examples/archinstall/archinstall/lib/menu/__init__.py b/examples/archinstall/archinstall/lib/menu/__init__.py deleted file mode 100644 index 1d4c5df..0000000 --- a/examples/archinstall/archinstall/lib/menu/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -from .abstract_menu import AbstractMenu, AbstractSubMenu -from .list_manager import ListManager - -__all__ = [ - 'AbstractMenu', - 'AbstractSubMenu', - 'ListManager', -] diff --git a/examples/archinstall/archinstall/lib/menu/abstract_menu.py b/examples/archinstall/archinstall/lib/menu/abstract_menu.py deleted file mode 100644 index 209e312..0000000 --- a/examples/archinstall/archinstall/lib/menu/abstract_menu.py +++ /dev/null @@ -1,146 +0,0 @@ -from __future__ import annotations - -from types import TracebackType -from typing import Any, Self - -from archinstall.lib.translationhandler import tr -from archinstall.tui.curses_menu import SelectMenu, Tui -from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.result import ResultType -from archinstall.tui.types import Chars, FrameProperties, FrameStyle, PreviewStyle - -from ..output import error - -CONFIG_KEY = '__config__' - - -class AbstractMenu[ValueT]: - def __init__( - self, - item_group: MenuItemGroup, - config: Any, - auto_cursor: bool = True, - allow_reset: bool = False, - reset_warning: str | None = None, - ): - self._menu_item_group = item_group - self._config = config - self.auto_cursor = auto_cursor - self._allow_reset = allow_reset - self._reset_warning = reset_warning - - self.is_context_mgr = False - - self._sync_from_config() - - def __enter__(self, *args: Any, **kwargs: Any) -> Self: - self.is_context_mgr = True - return self - - def __exit__(self, exc_type: type[BaseException] | None, exc_value: BaseException | None, traceback: TracebackType | None) -> None: - # TODO: https://stackoverflow.com/questions/28157929/how-to-safely-handle-an-exception-inside-a-context-manager - # TODO: skip processing when it comes from a planified exit - if exc_type is not None: - error(str(exc_value)) - Tui.print('Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues') - - # Return None to propagate the exception - return None - - self.sync_all_to_config() - - def _sync_from_config(self) -> None: - for item in self._menu_item_group._menu_items: - if item.key is not None and not item.key.startswith(CONFIG_KEY): - config_value = getattr(self._config, item.key) - if config_value is not None: - item.value = config_value - - def sync_all_to_config(self) -> None: - for item in self._menu_item_group._menu_items: - if item.key: - setattr(self._config, item.key, item.value) - - def _sync(self, item: MenuItem) -> None: - if not item.key or item.key.startswith(CONFIG_KEY): - return - - config_value = getattr(self._config, item.key) - - if config_value is not None: - item.value = config_value - elif item.value is not None: - setattr(self._config, item.key, item.value) - - def set_enabled(self, key: str, enabled: bool) -> None: - # the __config__ is associated with multiple items - found = False - - is_config_key = key == CONFIG_KEY - - for item in self._menu_item_group.items: - if item.key: - if item.key == key or (is_config_key and item.key.startswith(CONFIG_KEY)): - item.enabled = enabled - found = True - - if not found: - raise ValueError(f'No selector found: {key}') - - def disable_all(self) -> None: - for item in self._menu_item_group.items: - item.enabled = False - - def _is_config_valid(self) -> bool: - return True - - def run( - self, - additional_title: str | None = None, - ) -> ValueT | None: - self._sync_from_config() - - while True: - result = SelectMenu[ValueT]( - self._menu_item_group, - allow_skip=False, - allow_reset=self._allow_reset, - reset_warning_msg=self._reset_warning, - preview_style=PreviewStyle.RIGHT, - preview_size='auto', - preview_frame=FrameProperties('Info', FrameStyle.MAX), - additional_title=additional_title, - ).run() - - match result.type_: - case ResultType.Selection: - item: MenuItem = result.item() - - if item.action is None: - if not self._is_config_valid(): - continue - break - case ResultType.Reset: - return None - - self.sync_all_to_config() - return None - - -class AbstractSubMenu[ValueT](AbstractMenu[ValueT]): - def __init__( - self, - item_group: MenuItemGroup, - config: Any, - auto_cursor: bool = True, - allow_reset: bool = False, - ): - back_text = f'{Chars.Right_arrow} ' + tr('Back') - item_group.add_item(MenuItem(text=back_text)) - - super().__init__( - item_group, - config=config, - auto_cursor=auto_cursor, - allow_reset=allow_reset, - ) diff --git a/examples/archinstall/archinstall/lib/menu/list_manager.py b/examples/archinstall/archinstall/lib/menu/list_manager.py deleted file mode 100644 index 7c7b334..0000000 --- a/examples/archinstall/archinstall/lib/menu/list_manager.py +++ /dev/null @@ -1,148 +0,0 @@ -import copy -from typing import cast - -from archinstall.lib.menu.menu_helper import MenuHelper -from archinstall.lib.translationhandler import tr -from archinstall.tui.curses_menu import SelectMenu -from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.result import ResultType -from archinstall.tui.types import Alignment - - -class ListManager[ValueT]: - def __init__( - self, - entries: list[ValueT], - base_actions: list[str], - sub_menu_actions: list[str], - prompt: str | None = None, - ): - """ - :param prompt: Text which will appear at the header - type param: string - - :param entries: list/dict of option to be shown / manipulated - type param: list - - :param base_actions: list of actions that is displayed in the main list manager, - usually global actions such as 'Add...' - type param: list - - :param sub_menu_actions: list of actions available for a chosen entry - type param: list - """ - self._original_data = copy.deepcopy(entries) - self._data = copy.deepcopy(entries) - - self._prompt = prompt - - self._separator = '' - self._confirm_action = tr('Confirm and exit') - self._cancel_action = tr('Cancel') - - self._terminate_actions = [self._confirm_action, self._cancel_action] - self._base_actions = base_actions - self._sub_menu_actions = sub_menu_actions - - self._last_choice: ValueT | str | None = None - - @property - def last_choice(self) -> ValueT | str | None: - return self._last_choice - - def is_last_choice_cancel(self) -> bool: - if self._last_choice is not None: - return self._last_choice == self._cancel_action - return False - - def run(self) -> list[ValueT]: - additional_options = self._base_actions + self._terminate_actions - - while True: - group = MenuHelper( - data=self._data, - additional_options=additional_options, - ).create_menu_group() - - prompt = None - if self._prompt is not None: - prompt = f'{self._prompt}\n\n' - - prompt = None - - result = SelectMenu[ValueT | str]( - group, - header=prompt, - search_enabled=False, - allow_skip=False, - alignment=Alignment.CENTER, - ).run() - - match result.type_: - case ResultType.Selection: - value = result.get_value() - case _: - raise ValueError('Unhandled return type') - - if value in self._base_actions: - value = cast(str, value) - self._data = self.handle_action(value, None, self._data) - elif value in self._terminate_actions: - break - else: # an entry of the existing selection was chosen - selected_entry = result.get_value() - selected_entry = cast(ValueT, selected_entry) - - self._run_actions_on_entry(selected_entry) - - self._last_choice = value - - if result.get_value() == self._cancel_action: - return self._original_data # return the original list - else: - return self._data - - def _run_actions_on_entry(self, entry: ValueT) -> None: - options = self.filter_options(entry, self._sub_menu_actions) + [self._cancel_action] - - items = [MenuItem(o, value=o) for o in options] - group = MenuItemGroup(items, sort_items=False) - - header = f'{self.selected_action_display(entry)}\n' - - result = SelectMenu[str]( - group, - header=header, - search_enabled=False, - allow_skip=False, - alignment=Alignment.CENTER, - ).run() - - match result.type_: - case ResultType.Selection: - value = result.get_value() - case _: - raise ValueError('Unhandled return type') - - if value != self._cancel_action: - self._data = self.handle_action(value, entry, self._data) - - def selected_action_display(self, selection: ValueT) -> str: - """ - this will return the value to be displayed in the - "Select an action for '{}'" string - """ - raise NotImplementedError('Please implement me in the child class') - - def handle_action(self, action: str, entry: ValueT | None, data: list[ValueT]) -> list[ValueT]: - """ - this function is called when a base action or - a specific action for an entry is triggered - """ - raise NotImplementedError('Please implement me in the child class') - - def filter_options(self, selection: ValueT, options: list[str]) -> list[str]: - """ - filter which actions to show for an specific selection - """ - return options diff --git a/examples/archinstall/archinstall/lib/menu/menu_helper.py b/examples/archinstall/archinstall/lib/menu/menu_helper.py deleted file mode 100644 index 6ca3b95..0000000 --- a/examples/archinstall/archinstall/lib/menu/menu_helper.py +++ /dev/null @@ -1,50 +0,0 @@ -from archinstall.lib.output import FormattedOutput -from archinstall.tui.menu_item import MenuItem, MenuItemGroup - - -class MenuHelper[ValueT]: - def __init__( - self, - data: list[ValueT], - additional_options: list[str] = [], - ) -> None: - self._separator = '' - self._data = data - self._additional_options = additional_options - - def create_menu_group(self) -> MenuItemGroup: - table_data_mapping = self._table_to_data_mapping(self._data) - - items = [] - for key, value in table_data_mapping.items(): - item = MenuItem(key, value=value) - - if value is None: - item.read_only = True - - items.append(item) - - group = MenuItemGroup(items, sort_items=False) - - return group - - def _table_to_data_mapping(self, data: list[ValueT]) -> dict[str, ValueT | str | None]: - display_data: dict[str, ValueT | str | None] = {} - - if data: - table = FormattedOutput.as_table(data) - rows = table.split('\n') - - # these are the header rows of the table - display_data = {f'{rows[0]}': None, f'{rows[1]}': None} - - for row, entry in zip(rows[2:], data): - display_data[row] = entry - - if self._additional_options: - display_data[self._separator] = None - - for option in self._additional_options: - display_data[option] = option - - return display_data diff --git a/examples/archinstall/archinstall/lib/mirrors.py b/examples/archinstall/archinstall/lib/mirrors.py deleted file mode 100644 index acc4d9f..0000000 --- a/examples/archinstall/archinstall/lib/mirrors.py +++ /dev/null @@ -1,519 +0,0 @@ -import time -import urllib.parse -from pathlib import Path -from typing import override - -from archinstall.lib.translationhandler import tr -from archinstall.tui.curses_menu import EditMenu, SelectMenu, Tui -from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.result import ResultType -from archinstall.tui.types import Alignment, FrameProperties - -from .menu.abstract_menu import AbstractSubMenu -from .menu.list_manager import ListManager -from .models.mirrors import ( - CustomRepository, - CustomServer, - MirrorConfiguration, - MirrorRegion, - MirrorStatusEntryV3, - MirrorStatusListV3, - SignCheck, - SignOption, -) -from .models.packages import Repository -from .networking import fetch_data_from_url -from .output import FormattedOutput, debug - - -class CustomMirrorRepositoriesList(ListManager[CustomRepository]): - def __init__(self, custom_repositories: list[CustomRepository]): - self._actions = [ - tr('Add a custom repository'), - tr('Change custom repository'), - tr('Delete custom repository'), - ] - - super().__init__( - custom_repositories, - [self._actions[0]], - self._actions[1:], - '', - ) - - @override - def selected_action_display(self, selection: CustomRepository) -> str: - return selection.name - - @override - def handle_action( - self, - action: str, - entry: CustomRepository | None, - data: list[CustomRepository], - ) -> list[CustomRepository]: - if action == self._actions[0]: # add - new_repo = self._add_custom_repository() - if new_repo is not None: - data = [d for d in data if d.name != new_repo.name] - data += [new_repo] - elif action == self._actions[1] and entry: # modify repo - new_repo = self._add_custom_repository(entry) - if new_repo is not None: - data = [d for d in data if d.name != entry.name] - data += [new_repo] - elif action == self._actions[2] and entry: # delete - data = [d for d in data if d != entry] - - return data - - def _add_custom_repository(self, preset: CustomRepository | None = None) -> CustomRepository | None: - edit_result = EditMenu( - tr('Repository name'), - alignment=Alignment.CENTER, - allow_skip=True, - default_text=preset.name if preset else None, - ).input() - - match edit_result.type_: - case ResultType.Selection: - name = edit_result.text() - case ResultType.Skip: - return preset - case _: - raise ValueError('Unhandled return type') - - header = f'{tr("Name")}: {name}' - - edit_result = EditMenu( - tr('Url'), - header=header, - alignment=Alignment.CENTER, - allow_skip=True, - default_text=preset.url if preset else None, - ).input() - - match edit_result.type_: - case ResultType.Selection: - url = edit_result.text() - case ResultType.Skip: - return preset - case _: - raise ValueError('Unhandled return type') - - header += f'\n{tr("Url")}: {url}\n' - prompt = f'{header}\n' + tr('Select signature check') - - sign_chk_items = [MenuItem(s.value, value=s.value) for s in SignCheck] - group = MenuItemGroup(sign_chk_items, sort_items=False) - - if preset is not None: - group.set_selected_by_value(preset.sign_check.value) - - result = SelectMenu[SignCheck]( - group, - header=prompt, - alignment=Alignment.CENTER, - allow_skip=False, - ).run() - - match result.type_: - case ResultType.Selection: - sign_check = SignCheck(result.get_value()) - case _: - raise ValueError('Unhandled return type') - - header += f'{tr("Signature check")}: {sign_check.value}\n' - prompt = f'{header}\n' + tr('Select signature option') - - sign_opt_items = [MenuItem(s.value, value=s.value) for s in SignOption] - group = MenuItemGroup(sign_opt_items, sort_items=False) - - if preset is not None: - group.set_selected_by_value(preset.sign_option.value) - - result = SelectMenu( - group, - header=prompt, - alignment=Alignment.CENTER, - allow_skip=False, - ).run() - - match result.type_: - case ResultType.Selection: - sign_opt = SignOption(result.get_value()) - case _: - raise ValueError('Unhandled return type') - - return CustomRepository(name, url, sign_check, sign_opt) - - -class CustomMirrorServersList(ListManager[CustomServer]): - def __init__(self, custom_servers: list[CustomServer]): - self._actions = [ - tr('Add a custom server'), - tr('Change custom server'), - tr('Delete custom server'), - ] - - super().__init__( - custom_servers, - [self._actions[0]], - self._actions[1:], - '', - ) - - @override - def selected_action_display(self, selection: CustomServer) -> str: - return selection.url - - @override - def handle_action( - self, - action: str, - entry: CustomServer | None, - data: list[CustomServer], - ) -> list[CustomServer]: - if action == self._actions[0]: # add - new_server = self._add_custom_server() - if new_server is not None: - data = [d for d in data if d.url != new_server.url] - data += [new_server] - elif action == self._actions[1] and entry: # modify repo - new_server = self._add_custom_server(entry) - if new_server is not None: - data = [d for d in data if d.url != entry.url] - data += [new_server] - elif action == self._actions[2] and entry: # delete - data = [d for d in data if d != entry] - - return data - - def _add_custom_server(self, preset: CustomServer | None = None) -> CustomServer | None: - edit_result = EditMenu( - tr('Server url'), - alignment=Alignment.CENTER, - allow_skip=True, - default_text=preset.url if preset else None, - ).input() - - match edit_result.type_: - case ResultType.Selection: - uri = edit_result.text() - return CustomServer(uri) - case ResultType.Skip: - return preset - - return None - - -class MirrorMenu(AbstractSubMenu[MirrorConfiguration]): - def __init__( - self, - preset: MirrorConfiguration | None = None, - ): - if preset: - self._mirror_config = preset - else: - self._mirror_config = MirrorConfiguration() - - menu_optioons = self._define_menu_options() - self._item_group = MenuItemGroup(menu_optioons, checkmarks=True) - - super().__init__( - self._item_group, - config=self._mirror_config, - allow_reset=True, - ) - - def _define_menu_options(self) -> list[MenuItem]: - return [ - MenuItem( - text=tr('Select regions'), - action=select_mirror_regions, - value=self._mirror_config.mirror_regions, - preview_action=self._prev_regions, - key='mirror_regions', - ), - MenuItem( - text=tr('Add custom servers'), - action=add_custom_mirror_servers, - value=self._mirror_config.custom_servers, - preview_action=self._prev_custom_servers, - key='custom_servers', - ), - MenuItem( - text=tr('Optional repositories'), - action=select_optional_repositories, - value=[], - preview_action=self._prev_additional_repos, - key='optional_repositories', - ), - MenuItem( - text=tr('Add custom repository'), - action=select_custom_mirror, - value=self._mirror_config.custom_repositories, - preview_action=self._prev_custom_mirror, - key='custom_repositories', - ), - ] - - def _prev_regions(self, item: MenuItem) -> str: - regions = item.get_value() - - output = '' - for region in regions: - output += f'{region.name}\n' - - for url in region.urls: - output += f' - {url}\n' - - output += '\n' - - return output - - def _prev_additional_repos(self, item: MenuItem) -> str | None: - if item.value: - repositories: list[Repository] = item.value - repos = ', '.join([repo.value for repo in repositories]) - return f'{tr("Additional repositories")}: {repos}' - return None - - def _prev_custom_mirror(self, item: MenuItem) -> str | None: - if not item.value: - return None - - custom_mirrors: list[CustomRepository] = item.value - output = FormattedOutput.as_table(custom_mirrors) - return output.strip() - - def _prev_custom_servers(self, item: MenuItem) -> str | None: - if not item.value: - return None - - custom_servers: list[CustomServer] = item.value - output = '\n'.join([server.url for server in custom_servers]) - return output.strip() - - @override - def run(self, additional_title: str | None = None) -> MirrorConfiguration: - super().run(additional_title=additional_title) - return self._mirror_config - - -def select_mirror_regions(preset: list[MirrorRegion]) -> list[MirrorRegion]: - Tui.print(tr('Loading mirror regions...'), clear_screen=True) - - mirror_list_handler.load_mirrors() - available_regions = mirror_list_handler.get_mirror_regions() - - if not available_regions: - return [] - - preset_regions = [region for region in available_regions if region in preset] - - items = [MenuItem(region.name, value=region) for region in available_regions] - group = MenuItemGroup(items, sort_items=True) - - group.set_selected_by_value(preset_regions) - - result = SelectMenu[MirrorRegion]( - group, - alignment=Alignment.CENTER, - frame=FrameProperties.min(tr('Mirror regions')), - allow_reset=True, - allow_skip=True, - multi=True, - ).run() - - match result.type_: - case ResultType.Skip: - return preset_regions - case ResultType.Reset: - return [] - case ResultType.Selection: - selected_mirrors = result.get_values() - return selected_mirrors - - -def add_custom_mirror_servers(preset: list[CustomServer] = []) -> list[CustomServer]: - custom_mirrors = CustomMirrorServersList(preset).run() - return custom_mirrors - - -def select_custom_mirror(preset: list[CustomRepository] = []) -> list[CustomRepository]: - custom_mirrors = CustomMirrorRepositoriesList(preset).run() - return custom_mirrors - - -def select_optional_repositories(preset: list[Repository]) -> list[Repository]: - """ - Allows the user to select additional repositories (multilib, and testing) if desired. - - :return: The string as a selected repository - :rtype: Repository - """ - - repositories = [Repository.Multilib, Repository.Testing] - items = [MenuItem(r.value, value=r) for r in repositories] - group = MenuItemGroup(items, sort_items=True) - group.set_selected_by_value(preset) - - result = SelectMenu[Repository]( - group, - alignment=Alignment.CENTER, - frame=FrameProperties.min('Additional repositories'), - allow_reset=True, - allow_skip=True, - multi=True, - ).run() - - match result.type_: - case ResultType.Skip: - return preset - case ResultType.Reset: - return [] - case ResultType.Selection: - return result.get_values() - - -class MirrorListHandler: - def __init__( - self, - local_mirrorlist: Path = Path('/etc/pacman.d/mirrorlist'), - ) -> None: - self._local_mirrorlist = local_mirrorlist - self._status_mappings: dict[str, list[MirrorStatusEntryV3]] | None = None - - def _mappings(self) -> dict[str, list[MirrorStatusEntryV3]]: - if self._status_mappings is None: - self.load_mirrors() - - assert self._status_mappings is not None - return self._status_mappings - - def get_mirror_regions(self) -> list[MirrorRegion]: - available_mirrors = [] - mappings = self._mappings() - - for region_name, status_entry in mappings.items(): - urls = [entry.server_url for entry in status_entry] - region = MirrorRegion(region_name, urls) - available_mirrors.append(region) - - return available_mirrors - - def load_mirrors(self) -> None: - from .args import arch_config_handler - - if arch_config_handler.args.offline: - self.load_local_mirrors() - else: - if not self.load_remote_mirrors(): - self.load_local_mirrors() - - def load_remote_mirrors(self) -> bool: - url = 'https://archlinux.org/mirrors/status/json/' - attempts = 3 - - for attempt_nr in range(attempts): - try: - mirrorlist = fetch_data_from_url(url) - self._status_mappings = self._parse_remote_mirror_list(mirrorlist) - return True - except Exception as e: - debug(f'Error while fetching mirror list: {e}') - time.sleep(attempt_nr + 1) - - debug('Unable to fetch mirror list remotely, falling back to local mirror list') - return False - - def load_local_mirrors(self) -> None: - with self._local_mirrorlist.open('r') as fp: - mirrorlist = fp.read() - self._status_mappings = self._parse_locale_mirrors(mirrorlist) - - def get_status_by_region(self, region: str, speed_sort: bool) -> list[MirrorStatusEntryV3]: - mappings = self._mappings() - region_list = mappings[region] - return sorted(region_list, key=lambda mirror: (mirror.score, mirror.speed)) - - def _parse_remote_mirror_list(self, mirrorlist: str) -> dict[str, list[MirrorStatusEntryV3]]: - mirror_status = MirrorStatusListV3.model_validate_json(mirrorlist) - - sorting_placeholder: dict[str, list[MirrorStatusEntryV3]] = {} - - for mirror in mirror_status.urls: - # We filter out mirrors that have bad criteria values - if any( - [ - mirror.active is False, # Disabled by mirror-list admins - mirror.last_sync is None, # Has not synced recently - # mirror.score (error rate) over time reported from backend: - # https://github.com/archlinux/archweb/blob/31333d3516c91db9a2f2d12260bd61656c011fd1/mirrors/utils.py#L111C22-L111C66 - (mirror.score is None or mirror.score >= 100), - ] - ): - continue - - if mirror.country == '': - # TODO: This should be removed once RFC!29 is merged and completed - # Until then, there are mirrors which lacks data in the backend - # and there is no way of knowing where they're located. - # So we have to assume world-wide - mirror.country = 'Worldwide' - - if mirror.url.startswith('http'): - sorting_placeholder.setdefault(mirror.country, []).append(mirror) - - sorted_by_regions: dict[str, list[MirrorStatusEntryV3]] = dict( - {region: unsorted_mirrors for region, unsorted_mirrors in sorted(sorting_placeholder.items(), key=lambda item: item[0])} - ) - - return sorted_by_regions - - def _parse_locale_mirrors(self, mirrorlist: str) -> dict[str, list[MirrorStatusEntryV3]]: - lines = mirrorlist.splitlines() - - # remove empty lines - # lines = [line for line in lines if line] - - mirror_list: dict[str, list[MirrorStatusEntryV3]] = {} - - current_region = '' - - for line in lines: - line = line.strip() - - if line.startswith('## '): - current_region = line.replace('## ', '').strip() - mirror_list.setdefault(current_region, []) - - if line.startswith('Server = '): - if not current_region: - current_region = 'Local' - mirror_list.setdefault(current_region, []) - - url = line.removeprefix('Server = ') - - mirror_entry = MirrorStatusEntryV3( - url=url.removesuffix('$repo/os/$arch'), - protocol=urllib.parse.urlparse(url).scheme, - active=True, - country=current_region or 'Worldwide', - # The following values are normally populated by - # archlinux.org mirror-list endpoint, and can't be known - # from just the local mirror-list file. - country_code='WW', - isos=True, - ipv4=True, - ipv6=True, - details='Locally defined mirror', - ) - - mirror_list[current_region].append(mirror_entry) - - return mirror_list - - -mirror_list_handler = MirrorListHandler() diff --git a/examples/archinstall/archinstall/lib/models/__init__.py b/examples/archinstall/archinstall/lib/models/__init__.py deleted file mode 100644 index 45d2b02..0000000 --- a/examples/archinstall/archinstall/lib/models/__init__.py +++ /dev/null @@ -1,87 +0,0 @@ -from .application import ( - ApplicationConfiguration, - Audio, - AudioConfiguration, - BluetoothConfiguration, -) -from .bootloader import Bootloader -from .device import ( - BDevice, - DeviceGeometry, - DeviceModification, - DiskEncryption, - DiskLayoutConfiguration, - DiskLayoutType, - EncryptionType, - Fido2Device, - FilesystemType, - LsblkInfo, - LvmConfiguration, - LvmLayoutType, - LvmVolume, - LvmVolumeGroup, - LvmVolumeStatus, - ModificationStatus, - PartitionFlag, - PartitionModification, - PartitionTable, - PartitionType, - SectorSize, - Size, - SubvolumeModification, - Unit, - _DeviceInfo, -) -from .locale import LocaleConfiguration -from .mirrors import CustomRepository, MirrorConfiguration, MirrorRegion -from .network import NetworkConfiguration, Nic, NicType -from .packages import LocalPackage, PackageSearch, PackageSearchResult, Repository -from .profile import ProfileConfiguration -from .users import PasswordStrength, User - -__all__ = [ - 'ApplicationConfiguration', - 'Audio', - 'AudioConfiguration', - 'BDevice', - 'BluetoothConfiguration', - 'Bootloader', - 'CustomRepository', - 'DeviceGeometry', - 'DeviceModification', - 'DiskEncryption', - 'DiskLayoutConfiguration', - 'DiskLayoutType', - 'EncryptionType', - 'Fido2Device', - 'FilesystemType', - 'LocalPackage', - 'LocaleConfiguration', - 'LsblkInfo', - 'LvmConfiguration', - 'LvmLayoutType', - 'LvmVolume', - 'LvmVolumeGroup', - 'LvmVolumeStatus', - 'MirrorConfiguration', - 'MirrorRegion', - 'ModificationStatus', - 'NetworkConfiguration', - 'Nic', - 'NicType', - 'PackageSearch', - 'PackageSearchResult', - 'PartitionFlag', - 'PartitionModification', - 'PartitionTable', - 'PartitionType', - 'PasswordStrength', - 'ProfileConfiguration', - 'Repository', - 'SectorSize', - 'Size', - 'SubvolumeModification', - 'Unit', - 'User', - '_DeviceInfo', -] diff --git a/examples/archinstall/archinstall/lib/models/application.py b/examples/archinstall/archinstall/lib/models/application.py deleted file mode 100644 index eeced89..0000000 --- a/examples/archinstall/archinstall/lib/models/application.py +++ /dev/null @@ -1,86 +0,0 @@ -from dataclasses import dataclass -from enum import StrEnum, auto -from typing import Any, NotRequired, TypedDict - - -class BluetoothConfigSerialization(TypedDict): - enabled: bool - - -class Audio(StrEnum): - NO_AUDIO = 'No audio server' - PIPEWIRE = auto() - PULSEAUDIO = auto() - - -class AudioConfigSerialization(TypedDict): - audio: str - - -class ApplicationSerialization(TypedDict): - bluetooth_config: NotRequired[BluetoothConfigSerialization] - audio_config: NotRequired[AudioConfigSerialization] - - -@dataclass -class AudioConfiguration: - audio: Audio - - def json(self) -> AudioConfigSerialization: - return { - 'audio': self.audio.value, - } - - @staticmethod - def parse_arg(arg: dict[str, Any]) -> 'AudioConfiguration': - return AudioConfiguration( - Audio(arg['audio']), - ) - - -@dataclass -class BluetoothConfiguration: - enabled: bool - - def json(self) -> BluetoothConfigSerialization: - return {'enabled': self.enabled} - - @staticmethod - def parse_arg(arg: dict[str, Any]) -> 'BluetoothConfiguration': - return BluetoothConfiguration(arg['enabled']) - - -@dataclass -class ApplicationConfiguration: - bluetooth_config: BluetoothConfiguration | None = None - audio_config: AudioConfiguration | None = None - - @staticmethod - def parse_arg( - args: dict[str, Any] | None = None, - old_audio_config: dict[str, Any] | None = None, - ) -> 'ApplicationConfiguration': - app_config = ApplicationConfiguration() - - if args and (bluetooth_config := args.get('bluetooth_config')) is not None: - app_config.bluetooth_config = BluetoothConfiguration.parse_arg(bluetooth_config) - - # deprecated: backwards compatibility - if old_audio_config is not None: - app_config.audio_config = AudioConfiguration.parse_arg(old_audio_config) - - if args and (audio_config := args.get('audio_config')) is not None: - app_config.audio_config = AudioConfiguration.parse_arg(audio_config) - - return app_config - - def json(self) -> ApplicationSerialization: - config: ApplicationSerialization = {} - - if self.bluetooth_config: - config['bluetooth_config'] = self.bluetooth_config.json() - - if self.audio_config: - config['audio_config'] = self.audio_config.json() - - return config diff --git a/examples/archinstall/archinstall/lib/models/authentication.py b/examples/archinstall/archinstall/lib/models/authentication.py deleted file mode 100644 index 3144138..0000000 --- a/examples/archinstall/archinstall/lib/models/authentication.py +++ /dev/null @@ -1,84 +0,0 @@ -from dataclasses import dataclass, field -from enum import Enum -from typing import Any, NotRequired, TypedDict - -from archinstall.lib.models.users import Password, User -from archinstall.lib.translationhandler import tr - - -class U2FLoginConfigSerialization(TypedDict): - u2f_login_method: str - passwordless_sudo: bool - - -class AuthenticationSerialization(TypedDict): - u2f_config: NotRequired[U2FLoginConfigSerialization] - - -class U2FLoginMethod(Enum): - Passwordless = 'passwordless' - SecondFactor = 'second_factor' - - def display_value(self) -> str: - match self: - case U2FLoginMethod.Passwordless: - return tr('Passwordless login') - case U2FLoginMethod.SecondFactor: - return tr('Second factor login') - case _: - raise ValueError(f'Unknown type: {self}') - - -@dataclass -class U2FLoginConfiguration: - u2f_login_method: U2FLoginMethod - passwordless_sudo: bool = False - - def json(self) -> U2FLoginConfigSerialization: - return { - 'u2f_login_method': self.u2f_login_method.value, - 'passwordless_sudo': self.passwordless_sudo, - } - - @staticmethod - def parse_arg(args: U2FLoginConfigSerialization) -> 'U2FLoginConfiguration | None': - u2f_login_method = args.get('u2f_login_method') - - if u2f_login_method is None: - return None - - u2f_config = U2FLoginConfiguration(u2f_login_method=U2FLoginMethod(u2f_login_method)) - - u2f_config.u2f_login_method = U2FLoginMethod(u2f_login_method) - - if passwordless_sudo := args.get('passwordless_sudo') is not None: - u2f_config.passwordless_sudo = passwordless_sudo - - return u2f_config - - -@dataclass -class AuthenticationConfiguration: - root_enc_password: Password | None = None - users: list[User] = field(default_factory=list) - u2f_config: U2FLoginConfiguration | None = None - - @staticmethod - def parse_arg(args: dict[str, Any]) -> 'AuthenticationConfiguration': - auth_config = AuthenticationConfiguration() - - if (u2f_config := args.get('u2f_config')) is not None: - auth_config.u2f_config = U2FLoginConfiguration.parse_arg(u2f_config) - - if enc_password := args.get('root_enc_password'): - auth_config.root_enc_password = Password(enc_password=enc_password) - - return auth_config - - def json(self) -> AuthenticationSerialization: - config: AuthenticationSerialization = {} - - if self.u2f_config: - config['u2f_config'] = self.u2f_config.json() - - return config diff --git a/examples/archinstall/archinstall/lib/models/bootloader.py b/examples/archinstall/archinstall/lib/models/bootloader.py deleted file mode 100644 index 1eb3562..0000000 --- a/examples/archinstall/archinstall/lib/models/bootloader.py +++ /dev/null @@ -1,50 +0,0 @@ -from __future__ import annotations - -import sys -from enum import Enum - -from ..hardware import SysInfo -from ..output import warn - - -class Bootloader(Enum): - NO_BOOTLOADER = 'No bootloader' - Systemd = 'Systemd-boot' - Grub = 'Grub' - Efistub = 'Efistub' - Limine = 'Limine' - - def has_uki_support(self) -> bool: - match self: - case Bootloader.Efistub | Bootloader.Limine | Bootloader.Systemd: - return True - case _: - return False - - def json(self) -> str: - return self.value - - @classmethod - def get_default(cls) -> Bootloader: - from ..args import arch_config_handler - - if arch_config_handler.args.skip_boot: - return Bootloader.NO_BOOTLOADER - elif SysInfo.has_uefi(): - return Bootloader.Systemd - else: - return Bootloader.Grub - - @classmethod - def from_arg(cls, bootloader: str, skip_boot: bool) -> Bootloader: - # to support old configuration files - bootloader = bootloader.capitalize() - - bootloader_options = [e.value for e in Bootloader if e != Bootloader.NO_BOOTLOADER or skip_boot is True] - - if bootloader not in bootloader_options: - values = ', '.join(bootloader_options) - warn(f'Invalid bootloader value "{bootloader}". Allowed values: {values}') - sys.exit(1) - - return Bootloader(bootloader) diff --git a/examples/archinstall/archinstall/lib/models/device.py b/examples/archinstall/archinstall/lib/models/device.py deleted file mode 100644 index 45cf064..0000000 --- a/examples/archinstall/archinstall/lib/models/device.py +++ /dev/null @@ -1,1633 +0,0 @@ -from __future__ import annotations - -import math -import uuid -from dataclasses import dataclass, field -from enum import Enum -from pathlib import Path -from typing import NotRequired, TypedDict, override -from uuid import UUID - -import parted -from parted import Disk, Geometry, Partition -from pydantic import BaseModel, Field, ValidationInfo, field_serializer, field_validator - -from archinstall.lib.translationhandler import tr - -from ..hardware import SysInfo -from ..models.users import Password -from ..output import debug - -ENC_IDENTIFIER = 'ainst' -DEFAULT_ITER_TIME = 10000 - - -class DiskLayoutType(Enum): - Default = 'default_layout' - Manual = 'manual_partitioning' - Pre_mount = 'pre_mounted_config' - - def display_msg(self) -> str: - match self: - case DiskLayoutType.Default: - return tr('Use a best-effort default partition layout') - case DiskLayoutType.Manual: - return tr('Manual Partitioning') - case DiskLayoutType.Pre_mount: - return tr('Pre-mounted configuration') - - -class _DiskLayoutConfigurationSerialization(TypedDict): - config_type: str - device_modifications: NotRequired[list[_DeviceModificationSerialization]] - lvm_config: NotRequired[_LvmConfigurationSerialization] - mountpoint: NotRequired[str] - btrfs_options: NotRequired[_BtrfsOptionsSerialization] - disk_encryption: NotRequired[_DiskEncryptionSerialization] - - -@dataclass -class DiskLayoutConfiguration: - config_type: DiskLayoutType - device_modifications: list[DeviceModification] = field(default_factory=list) - lvm_config: LvmConfiguration | None = None - disk_encryption: DiskEncryption | None = None - btrfs_options: BtrfsOptions | None = None - - # used for pre-mounted config - mountpoint: Path | None = None - - def json(self) -> _DiskLayoutConfigurationSerialization: - if self.config_type == DiskLayoutType.Pre_mount: - return { - 'config_type': self.config_type.value, - 'mountpoint': str(self.mountpoint), - } - else: - config: _DiskLayoutConfigurationSerialization = { - 'config_type': self.config_type.value, - 'device_modifications': [mod.json() for mod in self.device_modifications], - } - - if self.lvm_config: - config['lvm_config'] = self.lvm_config.json() - - if self.disk_encryption: - config['disk_encryption'] = self.disk_encryption.json() - - if self.btrfs_options: - config['btrfs_options'] = self.btrfs_options.json() - - return config - - @classmethod - def parse_arg( - cls, - disk_config: _DiskLayoutConfigurationSerialization, - enc_password: Password | None = None, - ) -> DiskLayoutConfiguration | None: - from archinstall.lib.disk.device_handler import device_handler - - device_modifications: list[DeviceModification] = [] - config_type = disk_config.get('config_type', None) - - if not config_type: - raise ValueError('Missing disk layout configuration: config_type') - - config = DiskLayoutConfiguration( - config_type=DiskLayoutType(config_type), - device_modifications=device_modifications, - ) - - if config_type == DiskLayoutType.Pre_mount.value: - if not (mountpoint := disk_config.get('mountpoint')): - raise ValueError('Must set a mountpoint when layout type is pre-mount') - - path = Path(str(mountpoint)) - - mods = device_handler.detect_pre_mounted_mods(path) - device_modifications.extend(mods) - - config.mountpoint = path - - return config - - for entry in disk_config.get('device_modifications', []): - device_path = Path(entry['device']) if entry.get('device', None) else None - - if not device_path: - continue - - device = device_handler.get_device(device_path) - - if not device: - continue - - device_modification = DeviceModification( - wipe=entry.get('wipe', False), - device=device, - ) - - device_partitions: list[PartitionModification] = [] - - for partition in entry.get('partitions', []): - flags = [flag for f in partition.get('flags', []) if (flag := PartitionFlag.from_string(f))] - - device_partition = PartitionModification( - status=ModificationStatus(partition['status']), - fs_type=FilesystemType(partition['fs_type']) if partition.get('fs_type') else None, - start=Size.parse_args(partition['start']), - length=Size.parse_args(partition['size']), - mount_options=partition['mount_options'], - mountpoint=Path(partition['mountpoint']) if partition['mountpoint'] else None, - dev_path=Path(partition['dev_path']) if partition['dev_path'] else None, - type=PartitionType(partition['type']), - flags=flags, - btrfs_subvols=SubvolumeModification.parse_args(partition.get('btrfs', [])), - ) - # special 'invisible' attr to internally identify the part mod - device_partition._obj_id = partition['obj_id'] - device_partitions.append(device_partition) - - device_modification.partitions = device_partitions - device_modifications.append(device_modification) - - for dev_mod in device_modifications: - dev_mod.partitions.sort(key=lambda p: (not p.is_delete(), p.start)) - - non_delete_partitions = [part_mod for part_mod in dev_mod.partitions if not part_mod.is_delete()] - - if not non_delete_partitions: - continue - - first = non_delete_partitions[0] - if first.status == ModificationStatus.Create and not first.start.is_valid_start(): - raise ValueError('First partition must start at no less than 1 MiB') - - for i, current_partition in enumerate(non_delete_partitions[1:], start=1): - previous_partition = non_delete_partitions[i - 1] - if current_partition.status == ModificationStatus.Create and current_partition.start < previous_partition.end: - raise ValueError('Partitions overlap') - - create_partitions = [part_mod for part_mod in non_delete_partitions if part_mod.status == ModificationStatus.Create] - - if not create_partitions: - continue - - for part in create_partitions: - if part.start != part.start.align() or part.length != part.length.align(): - raise ValueError('Partition is misaligned') - - last = create_partitions[-1] - total_size = dev_mod.device.device_info.total_size - if dev_mod.using_gpt(device_handler.partition_table): - if last.end > total_size.gpt_end(): - raise ValueError('Partition overlaps backup GPT header') - elif last.end > total_size.align(): - raise ValueError('Partition too large for device') - - # Parse LVM configuration from settings - if (lvm_arg := disk_config.get('lvm_config', None)) is not None: - config.lvm_config = LvmConfiguration.parse_arg(lvm_arg, config) - - if (enc_config := disk_config.get('disk_encryption', None)) is not None: - config.disk_encryption = DiskEncryption.parse_arg(config, enc_config, enc_password) - - if config.has_default_btrfs_vols(): - if (btrfs_arg := disk_config.get('btrfs_options', None)) is not None: - config.btrfs_options = BtrfsOptions.parse_arg(btrfs_arg) - - return config - - def has_default_btrfs_vols(self) -> bool: - if self.config_type == DiskLayoutType.Default: - for mod in self.device_modifications: - for part in mod.partitions: - if part.is_create_or_modify(): - if part.fs_type == FilesystemType.Btrfs: - if len(part.btrfs_subvols) > 0: - return True - - return False - - -class PartitionTable(Enum): - GPT = 'gpt' - MBR = 'msdos' - - def is_gpt(self) -> bool: - return self == PartitionTable.GPT - - def is_mbr(self) -> bool: - return self == PartitionTable.MBR - - @classmethod - def default(cls) -> PartitionTable: - return cls.GPT if SysInfo.has_uefi() else cls.MBR - - -class Units(Enum): - BINARY = 'binary' - DECIMAL = 'decimal' - - -class Unit(Enum): - B = 1 # byte - kB = 1000**1 # kilobyte - MB = 1000**2 # megabyte - GB = 1000**3 # gigabyte - TB = 1000**4 # terabyte - PB = 1000**5 # petabyte - EB = 1000**6 # exabyte - ZB = 1000**7 # zettabyte - YB = 1000**8 # yottabyte - - KiB = 1024**1 # kibibyte - MiB = 1024**2 # mebibyte - GiB = 1024**3 # gibibyte - TiB = 1024**4 # tebibyte - PiB = 1024**5 # pebibyte - EiB = 1024**6 # exbibyte - ZiB = 1024**7 # zebibyte - YiB = 1024**8 # yobibyte - - sectors = 'sectors' # size in sector - - @staticmethod - def get_all_units() -> list[str]: - return [u.name for u in Unit] - - @staticmethod - def get_si_units() -> list[Unit]: - return [u for u in Unit if 'i' not in u.name and u.name != 'sectors'] - - @staticmethod - def get_binary_units() -> list[Unit]: - return [u for u in Unit if 'i' in u.name or u.name == 'B'] - - -class _SectorSizeSerialization(TypedDict): - value: int - unit: str - - -@dataclass -class SectorSize: - value: int - unit: Unit - - def __post_init__(self) -> None: - match self.unit: - case Unit.sectors: - raise ValueError('Unit type sector not allowed for SectorSize') - - @staticmethod - def default() -> SectorSize: - return SectorSize(512, Unit.B) - - def json(self) -> _SectorSizeSerialization: - return { - 'value': self.value, - 'unit': self.unit.name, - } - - @classmethod - def parse_args(cls, arg: _SectorSizeSerialization) -> SectorSize: - return SectorSize( - arg['value'], - Unit[arg['unit']], - ) - - def normalize(self) -> int: - """ - will normalize the value of the unit to Byte - """ - return int(self.value * self.unit.value) - - -class _SizeSerialization(TypedDict): - value: int - unit: str - sector_size: _SectorSizeSerialization - - -@dataclass -class Size: - value: int - unit: Unit - sector_size: SectorSize - - def __post_init__(self) -> None: - if not isinstance(self.sector_size, SectorSize): - raise ValueError('sector size must be of type SectorSize') - - def json(self) -> _SizeSerialization: - return { - 'value': self.value, - 'unit': self.unit.name, - 'sector_size': self.sector_size.json(), - } - - @classmethod - def parse_args(cls, size_arg: _SizeSerialization) -> Size: - sector_size = size_arg['sector_size'] - - return Size( - size_arg['value'], - Unit[size_arg['unit']], - SectorSize.parse_args(sector_size), - ) - - def convert( - self, - target_unit: Unit, - sector_size: SectorSize | None = None, - ) -> Size: - if target_unit == Unit.sectors and sector_size is None: - raise ValueError('If target has unit sector, a sector size must be provided') - - if self.unit == target_unit: - return self - elif self.unit == Unit.sectors: - norm = self._normalize() - return Size(norm, Unit.B, self.sector_size).convert(target_unit, sector_size) - else: - if target_unit == Unit.sectors and sector_size is not None: - norm = self._normalize() - sectors = math.ceil(norm / sector_size.value) - return Size(sectors, Unit.sectors, sector_size) - else: - value = int(self._normalize() / target_unit.value) - return Size(value, target_unit, self.sector_size) - - def as_text(self) -> str: - return self.format_size( - self.unit, - self.sector_size, - ) - - def format_size( - self, - target_unit: Unit, - sector_size: SectorSize | None = None, - include_unit: bool = True, - ) -> str: - target_size = self.convert(target_unit, sector_size) - - if include_unit: - return f'{target_size.value} {target_unit.name}' - return f'{target_size.value}' - - def binary_unit_highest(self, include_unit: bool = True) -> str: - binary_units = Unit.get_binary_units() - - size = float(self._normalize()) - unit = Unit.KiB - base_value = unit.value - - for binary_unit in binary_units: - unit = binary_unit - if size < base_value: - break - size /= base_value - - formatted_size = f'{size:.1f}' - - if formatted_size.endswith('.0'): - formatted_size = formatted_size[:-2] - - if not include_unit: - return formatted_size - - return f'{formatted_size} {unit.name}' - - def si_unit_highest(self, include_unit: bool = True) -> str: - si_units = Unit.get_si_units() - - all_si_values = [self.convert(si) for si in si_units] - filtered = filter(lambda x: x.value >= 1, all_si_values) - - # we have to get the max by the unit value as we're interested - # in getting the value in the highest possible unit without floats - si_value = max(filtered, key=lambda x: x.unit.value) - - if include_unit: - return f'{si_value.value} {si_value.unit.name}' - return f'{si_value.value}' - - def format_highest(self, include_unit: bool = True, units: Units = Units.BINARY) -> str: - if units == Units.BINARY: - return self.binary_unit_highest(include_unit) - else: - return self.si_unit_highest(include_unit) - - def is_valid_start(self) -> bool: - return self >= Size(1, Unit.MiB, self.sector_size) - - def align(self) -> Size: - align_norm = Size(1, Unit.MiB, self.sector_size)._normalize() - src_norm = self._normalize() - return self - Size(abs(src_norm % align_norm), Unit.B, self.sector_size) - - def gpt_end(self) -> Size: - return self - Size(1, Unit.MiB, self.sector_size) - - def _normalize(self) -> int: - """ - will normalize the value of the unit to Byte - """ - if self.unit == Unit.sectors and self.sector_size is not None: - return self.value * self.sector_size.normalize() - return int(self.value * self.unit.value) - - def __sub__(self, other: Size) -> Size: - src_norm = self._normalize() - dest_norm = other._normalize() - return Size(abs(src_norm - dest_norm), Unit.B, self.sector_size) - - def __add__(self, other: Size) -> Size: - src_norm = self._normalize() - dest_norm = other._normalize() - return Size(abs(src_norm + dest_norm), Unit.B, self.sector_size) - - def __lt__(self, other: Size) -> bool: - return self._normalize() < other._normalize() - - def __le__(self, other: Size) -> bool: - return self._normalize() <= other._normalize() - - @override - def __eq__(self, other: object) -> bool: - if not isinstance(other, Size): - return NotImplemented - - return self._normalize() == other._normalize() - - @override - def __ne__(self, other: object) -> bool: - if not isinstance(other, Size): - return NotImplemented - - return self._normalize() != other._normalize() - - def __gt__(self, other: Size) -> bool: - return self._normalize() > other._normalize() - - def __ge__(self, other: Size) -> bool: - return self._normalize() >= other._normalize() - - -class BtrfsMountOption(Enum): - compress = 'compress=zstd' - nodatacow = 'nodatacow' - - -@dataclass -class _BtrfsSubvolumeInfo: - name: Path - mountpoint: Path | None - - -@dataclass -class _PartitionInfo: - partition: Partition - name: str - type: PartitionType - fs_type: FilesystemType | None - path: Path - start: Size - length: Size - flags: list[PartitionFlag] - partn: int | None - partuuid: str | None - uuid: str | None - disk: Disk - mountpoints: list[Path] - btrfs_subvol_infos: list[_BtrfsSubvolumeInfo] = field(default_factory=list) - - @property - def sector_size(self) -> SectorSize: - sector_size = self.partition.geometry.device.sectorSize - return SectorSize(sector_size, Unit.B) - - def table_data(self) -> dict[str, str]: - end = self.start + self.length - - part_info = { - 'Name': self.name, - 'Type': self.type.value, - 'Filesystem': self.fs_type.value if self.fs_type else tr('Unknown'), - 'Path': str(self.path), - 'Start': self.start.format_size(Unit.sectors, self.sector_size, include_unit=False), - 'End': end.format_size(Unit.sectors, self.sector_size, include_unit=False), - 'Size': self.length.format_highest(), - 'Flags': ', '.join([f.description for f in self.flags]), - } - - if self.btrfs_subvol_infos: - part_info['Btrfs vol.'] = f'{len(self.btrfs_subvol_infos)} subvolumes' - - return part_info - - @classmethod - def from_partition( - cls, - partition: Partition, - lsblk_info: LsblkInfo, - fs_type: FilesystemType | None, - btrfs_subvol_infos: list[_BtrfsSubvolumeInfo] = [], - ) -> _PartitionInfo: - partition_type = PartitionType.get_type_from_code(partition.type) - flags = [f for f in PartitionFlag if partition.getFlag(f.flag_id)] - - start = Size( - partition.geometry.start, - Unit.sectors, - SectorSize(partition.disk.device.sectorSize, Unit.B), - ) - - length = Size( - int(partition.getLength(unit='B')), - Unit.B, - SectorSize(partition.disk.device.sectorSize, Unit.B), - ) - - return _PartitionInfo( - partition=partition, - name=partition.get_name(), - type=partition_type, - fs_type=fs_type, - path=Path(partition.path), - start=start, - length=length, - flags=flags, - partn=lsblk_info.partn, - partuuid=lsblk_info.partuuid, - uuid=lsblk_info.uuid, - disk=partition.disk, - mountpoints=lsblk_info.mountpoints, - btrfs_subvol_infos=btrfs_subvol_infos, - ) - - -@dataclass -class _DeviceInfo: - model: str - path: Path - type: str - total_size: Size - free_space_regions: list[DeviceGeometry] - sector_size: SectorSize - read_only: bool - dirty: bool - - def table_data(self) -> dict[str, str | int | bool]: - total_free_space = sum([region.get_length(unit=Unit.MiB) for region in self.free_space_regions]) - return { - 'Model': self.model, - 'Path': str(self.path), - 'Type': self.type, - 'Size': self.total_size.format_highest(), - 'Free space': int(total_free_space), - 'Sector size': self.sector_size.value, - 'Read only': self.read_only, - } - - @classmethod - def from_disk(cls, disk: Disk) -> _DeviceInfo: - device = disk.device - if device.type == 18: - device_type = 'loop' - elif device.type in parted.devices: - device_type = parted.devices[device.type] - else: - debug(f'Device code unknown: {device.type}') - device_type = parted.devices[parted.DEVICE_UNKNOWN] - - sector_size = SectorSize(device.sectorSize, Unit.B) - free_space = [DeviceGeometry(g, sector_size) for g in disk.getFreeSpaceRegions()] - - return _DeviceInfo( - model=device.model.strip(), - path=Path(device.path), - type=device_type, - sector_size=sector_size, - total_size=Size(int(device.getLength(unit='B')), Unit.B, sector_size), - free_space_regions=free_space, - read_only=device.readOnly, - dirty=device.dirty, - ) - - -class _SubvolumeModificationSerialization(TypedDict): - name: str - mountpoint: str - - -@dataclass -class SubvolumeModification: - name: Path | str - mountpoint: Path | None = None - - @classmethod - def from_existing_subvol_info(cls, info: _BtrfsSubvolumeInfo) -> SubvolumeModification: - return SubvolumeModification(info.name, mountpoint=info.mountpoint) - - @classmethod - def parse_args(cls, subvol_args: list[_SubvolumeModificationSerialization]) -> list[SubvolumeModification]: - mods = [] - for entry in subvol_args: - if not entry.get('name', None) or not entry.get('mountpoint', None): - debug(f'Subvolume arg is missing name: {entry}') - continue - - mountpoint = Path(entry['mountpoint']) if entry['mountpoint'] else None - - mods.append(SubvolumeModification(entry['name'], mountpoint)) - - return mods - - @property - def relative_mountpoint(self) -> Path: - """ - Will return the relative path based on the anchor - e.g. Path('/mnt/test') -> Path('mnt/test') - """ - if self.mountpoint is not None: - return self.mountpoint.relative_to(self.mountpoint.anchor) - - raise ValueError('Mountpoint is not specified') - - def is_root(self) -> bool: - if self.mountpoint: - return self.mountpoint == Path('/') - return False - - def json(self) -> _SubvolumeModificationSerialization: - return {'name': str(self.name), 'mountpoint': str(self.mountpoint)} - - def table_data(self) -> _SubvolumeModificationSerialization: - return self.json() - - -class DeviceGeometry: - def __init__(self, geometry: Geometry, sector_size: SectorSize): - self._geometry = geometry - self._sector_size = sector_size - - @property - def start(self) -> int: - return self._geometry.start - - @property - def end(self) -> int: - return self._geometry.end - - def get_length(self, unit: Unit = Unit.sectors) -> int: - return self._geometry.getLength(unit.name) - - def table_data(self) -> dict[str, str | int]: - start = Size(self._geometry.start, Unit.sectors, self._sector_size) - end = Size(self._geometry.end, Unit.sectors, self._sector_size) - length = Size(self._geometry.getLength(), Unit.sectors, self._sector_size) - - start_str = f'{self._geometry.start} / {start.format_size(Unit.B, include_unit=False)}' - end_str = f'{self._geometry.end} / {end.format_size(Unit.B, include_unit=False)}' - length_str = f'{self._geometry.getLength()} / {length.format_size(Unit.B, include_unit=False)}' - - return { - 'Sector size': self._sector_size.value, - 'Start (sector/B)': start_str, - 'End (sector/B)': end_str, - 'Size (sectors/B)': length_str, - } - - -@dataclass -class BDevice: - disk: Disk - device_info: _DeviceInfo - partition_infos: list[_PartitionInfo] - - @override - def __hash__(self) -> int: - return hash(self.disk.device.path) - - -class PartitionType(Enum): - Boot = 'boot' - Primary = 'primary' - _Unknown = 'unknown' - - @classmethod - def get_type_from_code(cls, code: int) -> PartitionType: - if code == parted.PARTITION_NORMAL: - return PartitionType.Primary - else: - debug(f'Partition code not supported: {code}') - return PartitionType._Unknown - - def get_partition_code(self) -> int | None: - if self == PartitionType.Primary: - return parted.PARTITION_NORMAL - elif self == PartitionType.Boot: - return parted.PARTITION_BOOT - return None - - -@dataclass(frozen=True) -class PartitionFlagDataMixin: - flag_id: int - alias: str | None = None - - -class PartitionFlag(PartitionFlagDataMixin, Enum): - BOOT = parted.PARTITION_BOOT - XBOOTLDR = parted.PARTITION_BLS_BOOT, 'bls_boot' - ESP = parted.PARTITION_ESP - LINUX_HOME = parted.PARTITION_LINUX_HOME, 'linux-home' - SWAP = parted.PARTITION_SWAP - - @property - def description(self) -> str: - return self.alias or self.name.lower() - - @classmethod - def from_string(cls, s: str) -> PartitionFlag | None: - s = s.lower() - - for partition_flag in cls: - if s in (partition_flag.name.lower(), partition_flag.alias): - return partition_flag - - debug(f'Partition flag not supported: {s}') - return None - - -class PartitionGUID(Enum): - """ - A list of Partition type GUIDs (lsblk -o+PARTTYPE) can be found here: https://en.wikipedia.org/wiki/GUID_Partition_Table#Partition_type_GUIDs - """ - - LINUX_ROOT_X86_64 = '4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709' - - @property - def bytes(self) -> bytes: - return uuid.UUID(self.value).bytes - - -class FilesystemType(Enum): - Btrfs = 'btrfs' - Ext2 = 'ext2' - Ext3 = 'ext3' - Ext4 = 'ext4' - F2fs = 'f2fs' - Fat12 = 'fat12' - Fat16 = 'fat16' - Fat32 = 'fat32' - Ntfs = 'ntfs' - Xfs = 'xfs' - LinuxSwap = 'linux-swap' - - # this is not a FS known to parted, so be careful - # with the usage from this enum - Crypto_luks = 'crypto_LUKS' - - def is_crypto(self) -> bool: - return self == FilesystemType.Crypto_luks - - @property - def fs_type_mount(self) -> str: - match self: - case FilesystemType.Ntfs: - return 'ntfs3' - case FilesystemType.Fat32: - return 'vfat' - case _: - return self.value - - @property - def parted_value(self) -> str: - return self.value + '(v1)' if self == FilesystemType.LinuxSwap else self.value - - @property - def installation_pkg(self) -> str | None: - match self: - case FilesystemType.Btrfs: - return 'btrfs-progs' - case FilesystemType.Xfs: - return 'xfsprogs' - case FilesystemType.F2fs: - return 'f2fs-tools' - case _: - return None - - @property - def installation_hooks(self) -> str | None: - match self: - case FilesystemType.Btrfs: - return 'btrfs' - case _: - return None - - -class ModificationStatus(Enum): - Exist = 'existing' - Modify = 'modify' - Delete = 'delete' - Create = 'create' - - -class _PartitionModificationSerialization(TypedDict): - obj_id: str - status: str - type: str - start: _SizeSerialization - size: _SizeSerialization - fs_type: str | None - mountpoint: str | None - mount_options: list[str] - flags: list[str] - btrfs: list[_SubvolumeModificationSerialization] - dev_path: str | None - - -@dataclass -class PartitionModification: - status: ModificationStatus - type: PartitionType - start: Size - length: Size - fs_type: FilesystemType | None = None - mountpoint: Path | None = None - mount_options: list[str] = field(default_factory=list) - flags: list[PartitionFlag] = field(default_factory=list) - btrfs_subvols: list[SubvolumeModification] = field(default_factory=list) - - # only set if the device was created or exists - dev_path: Path | None = None - partn: int | None = None - partuuid: str | None = None - uuid: str | None = None - - _obj_id: UUID | str = field(init=False) - - def __post_init__(self) -> None: - # needed to use the object as a dictionary key due to hash func - if not hasattr(self, '_obj_id'): - self._obj_id = uuid.uuid4() - - if self.is_exists_or_modify() and not self.dev_path: - raise ValueError('If partition marked as existing a path must be set') - - if self.fs_type is None and self.status == ModificationStatus.Modify: - raise ValueError('FS type must not be empty on modifications with status type modify') - - @override - def __hash__(self) -> int: - return hash(self._obj_id) - - @property - def end(self) -> Size: - return self.start + self.length - - @property - def obj_id(self) -> str: - if hasattr(self, '_obj_id'): - return str(self._obj_id) - return '' - - @property - def safe_dev_path(self) -> Path: - if self.dev_path is None: - raise ValueError('Device path was not set') - return self.dev_path - - @property - def safe_fs_type(self) -> FilesystemType: - if self.fs_type is None: - raise ValueError('File system type is not set') - return self.fs_type - - @classmethod - def from_existing_partition(cls, partition_info: _PartitionInfo) -> PartitionModification: - if partition_info.btrfs_subvol_infos: - mountpoint = None - subvol_mods = [] - for i in partition_info.btrfs_subvol_infos: - subvol_mods.append( - SubvolumeModification.from_existing_subvol_info(i), - ) - else: - mountpoint = partition_info.mountpoints[0] if partition_info.mountpoints else None - subvol_mods = [] - - return PartitionModification( - status=ModificationStatus.Exist, - type=partition_info.type, - start=partition_info.start, - length=partition_info.length, - fs_type=partition_info.fs_type, - dev_path=partition_info.path, - partn=partition_info.partn, - partuuid=partition_info.partuuid, - uuid=partition_info.uuid, - flags=partition_info.flags, - mountpoint=mountpoint, - btrfs_subvols=subvol_mods, - ) - - @property - def relative_mountpoint(self) -> Path: - """ - Will return the relative path based on the anchor - e.g. Path('/mnt/test') -> Path('mnt/test') - """ - if self.mountpoint: - return self.mountpoint.relative_to(self.mountpoint.anchor) - - raise ValueError('Mountpoint is not specified') - - def is_efi(self) -> bool: - return PartitionFlag.ESP in self.flags - - def is_boot(self) -> bool: - return PartitionFlag.BOOT in self.flags - - def is_root(self) -> bool: - if self.mountpoint is not None: - return self.mountpoint == Path('/') - else: - for subvol in self.btrfs_subvols: - if subvol.is_root(): - return True - - return False - - def is_home(self) -> bool: - if self.mountpoint is not None: - return self.mountpoint == Path('/home') - return False - - def is_swap(self) -> bool: - return self.fs_type == FilesystemType.LinuxSwap - - def is_modify(self) -> bool: - return self.status == ModificationStatus.Modify - - def is_delete(self) -> bool: - return self.status == ModificationStatus.Delete - - def exists(self) -> bool: - return self.status == ModificationStatus.Exist - - def is_exists_or_modify(self) -> bool: - return self.status in [ - ModificationStatus.Exist, - ModificationStatus.Delete, - ModificationStatus.Modify, - ] - - def is_create_or_modify(self) -> bool: - return self.status in [ModificationStatus.Create, ModificationStatus.Modify] - - @property - def mapper_name(self) -> str | None: - if self.is_root(): - return 'root' - if self.is_home(): - return 'home' - if self.dev_path: - return f'{ENC_IDENTIFIER}{self.dev_path.name}' - return None - - def set_flag(self, flag: PartitionFlag) -> None: - if flag not in self.flags: - self.flags.append(flag) - - def invert_flag(self, flag: PartitionFlag) -> None: - if flag in self.flags: - self.flags = [f for f in self.flags if f != flag] - else: - self.set_flag(flag) - - def json(self) -> _PartitionModificationSerialization: - """ - Called for configuration settings - """ - return { - 'obj_id': self.obj_id, - 'status': self.status.value, - 'type': self.type.value, - 'start': self.start.json(), - 'size': self.length.json(), - 'fs_type': self.fs_type.value if self.fs_type else None, - 'mountpoint': str(self.mountpoint) if self.mountpoint else None, - 'mount_options': self.mount_options, - 'flags': [f.description for f in self.flags], - 'dev_path': str(self.dev_path) if self.dev_path else None, - 'btrfs': [vol.json() for vol in self.btrfs_subvols], - } - - def table_data(self) -> dict[str, str]: - """ - Called for displaying data in table format - """ - part_mod = { - 'Status': self.status.value, - 'Device': str(self.dev_path) if self.dev_path else '', - 'Type': self.type.value, - 'Start': self.start.format_size(Unit.sectors, self.start.sector_size, include_unit=False), - 'End': self.end.format_size(Unit.sectors, self.start.sector_size, include_unit=False), - 'Size': self.length.format_highest(), - 'FS type': self.fs_type.value if self.fs_type else 'Unknown', - 'Mountpoint': str(self.mountpoint) if self.mountpoint else '', - 'Mount options': ', '.join(self.mount_options), - 'Flags': ', '.join([f.description for f in self.flags]), - } - - if self.btrfs_subvols: - part_mod['Btrfs vol.'] = f'{len(self.btrfs_subvols)} subvolumes' - - return part_mod - - -class LvmLayoutType(Enum): - Default = 'default' - - # Manual = 'manual_lvm' - - def display_msg(self) -> str: - match self: - case LvmLayoutType.Default: - return tr('Default layout') - # case LvmLayoutType.Manual: - # return str(_('Manual configuration')) - - raise ValueError(f'Unknown type: {self}') - - -class _LvmVolumeGroupSerialization(TypedDict): - name: str - lvm_pvs: list[str] - volumes: list[_LvmVolumeSerialization] - - -@dataclass -class LvmVolumeGroup: - name: str - pvs: list[PartitionModification] - volumes: list[LvmVolume] = field(default_factory=list) - - def json(self) -> _LvmVolumeGroupSerialization: - return { - 'name': self.name, - 'lvm_pvs': [p.obj_id for p in self.pvs], - 'volumes': [vol.json() for vol in self.volumes], - } - - @staticmethod - def parse_arg(arg: _LvmVolumeGroupSerialization, disk_config: DiskLayoutConfiguration) -> LvmVolumeGroup: - lvm_pvs = [] - for mod in disk_config.device_modifications: - for part in mod.partitions: - if part.obj_id in arg.get('lvm_pvs', []): - lvm_pvs.append(part) - - return LvmVolumeGroup( - arg['name'], - lvm_pvs, - [LvmVolume.parse_arg(vol) for vol in arg['volumes']], - ) - - def contains_lv(self, lv: LvmVolume) -> bool: - return lv in self.volumes - - -class LvmVolumeStatus(Enum): - Exist = 'existing' - Modify = 'modify' - Delete = 'delete' - Create = 'create' - - -class _LvmVolumeSerialization(TypedDict): - obj_id: str - status: str - name: str - fs_type: str - length: _SizeSerialization - mountpoint: str | None - mount_options: list[str] - btrfs: list[_SubvolumeModificationSerialization] - - -@dataclass -class LvmVolume: - status: LvmVolumeStatus - name: str - fs_type: FilesystemType - length: Size - mountpoint: Path | None - mount_options: list[str] = field(default_factory=list) - btrfs_subvols: list[SubvolumeModification] = field(default_factory=list) - - # volume group name - vg_name: str | None = None - # mapper device path /dev// - dev_path: Path | None = None - - _obj_id: uuid.UUID | str = field(init=False) - - def __post_init__(self) -> None: - # needed to use the object as a dictionary key due to hash func - if not hasattr(self, '_obj_id'): - self._obj_id = uuid.uuid4() - - @override - def __hash__(self) -> int: - return hash(self._obj_id) - - @property - def obj_id(self) -> str: - if hasattr(self, '_obj_id'): - return str(self._obj_id) - return '' - - @property - def mapper_name(self) -> str | None: - if self.dev_path: - return f'{ENC_IDENTIFIER}{self.safe_dev_path.name}' - return None - - @property - def mapper_path(self) -> Path: - if self.mapper_name: - return Path(f'/dev/mapper/{self.mapper_name}') - - raise ValueError('No mapper path set') - - @property - def safe_dev_path(self) -> Path: - if self.dev_path: - return self.dev_path - raise ValueError('No device path for volume defined') - - @property - def safe_fs_type(self) -> FilesystemType: - if self.fs_type is None: - raise ValueError('File system type is not set') - return self.fs_type - - @property - def relative_mountpoint(self) -> Path: - """ - Will return the relative path based on the anchor - e.g. Path('/mnt/test') -> Path('mnt/test') - """ - if self.mountpoint is not None: - return self.mountpoint.relative_to(self.mountpoint.anchor) - - raise ValueError('Mountpoint is not specified') - - @staticmethod - def parse_arg(arg: _LvmVolumeSerialization) -> LvmVolume: - volume = LvmVolume( - status=LvmVolumeStatus(arg['status']), - name=arg['name'], - fs_type=FilesystemType(arg['fs_type']), - length=Size.parse_args(arg['length']), - mountpoint=Path(arg['mountpoint']) if arg['mountpoint'] else None, - mount_options=arg.get('mount_options', []), - btrfs_subvols=SubvolumeModification.parse_args(arg.get('btrfs', [])), - ) - - volume._obj_id = arg['obj_id'] - - return volume - - def json(self) -> _LvmVolumeSerialization: - return { - 'obj_id': self.obj_id, - 'status': self.status.value, - 'name': self.name, - 'fs_type': self.fs_type.value, - 'length': self.length.json(), - 'mountpoint': str(self.mountpoint) if self.mountpoint else None, - 'mount_options': self.mount_options, - 'btrfs': [vol.json() for vol in self.btrfs_subvols], - } - - def table_data(self) -> dict[str, str]: - part_mod = { - 'Type': self.status.value, - 'Name': self.name, - 'Size': self.length.format_highest(), - 'FS type': self.fs_type.value, - 'Mountpoint': str(self.mountpoint) if self.mountpoint else '', - 'Mount options': ', '.join(self.mount_options), - 'Btrfs': '{} {}'.format(str(len(self.btrfs_subvols)), 'vol'), - } - return part_mod - - def is_modify(self) -> bool: - return self.status == LvmVolumeStatus.Modify - - def exists(self) -> bool: - return self.status == LvmVolumeStatus.Exist - - def is_exists_or_modify(self) -> bool: - return self.status in [LvmVolumeStatus.Exist, LvmVolumeStatus.Modify] - - def is_root(self) -> bool: - if self.mountpoint is not None: - return Path('/') == self.mountpoint - else: - for subvol in self.btrfs_subvols: - if subvol.is_root(): - return True - - return False - - -@dataclass -class LvmGroupInfo: - vg_size: Size - vg_uuid: str - - -@dataclass -class LvmVolumeInfo: - lv_name: str - vg_name: str - lv_size: Size - - -@dataclass -class LvmPVInfo: - pv_name: Path - lv_name: str - vg_name: str - - -class _LvmConfigurationSerialization(TypedDict): - config_type: str - vol_groups: list[_LvmVolumeGroupSerialization] - - -@dataclass -class LvmConfiguration: - config_type: LvmLayoutType - vol_groups: list[LvmVolumeGroup] - - def __post_init__(self) -> None: - # make sure all volume groups have unique PVs - pvs = [] - for group in self.vol_groups: - for pv in group.pvs: - if pv in pvs: - raise ValueError('A PV cannot be used in multiple volume groups') - pvs.append(pv) - - def json(self) -> _LvmConfigurationSerialization: - return { - 'config_type': self.config_type.value, - 'vol_groups': [vol_gr.json() for vol_gr in self.vol_groups], - } - - @staticmethod - def parse_arg(arg: _LvmConfigurationSerialization, disk_config: DiskLayoutConfiguration) -> LvmConfiguration: - lvm_pvs = [] - for mod in disk_config.device_modifications: - for part in mod.partitions: - # FIXME: 'lvm_pvs' does not seem like it can ever exist in the 'arg' serialization - if part.obj_id in arg.get('lvm_pvs', []): # type: ignore[operator] - lvm_pvs.append(part) - - return LvmConfiguration( - config_type=LvmLayoutType(arg['config_type']), - vol_groups=[LvmVolumeGroup.parse_arg(vol_group, disk_config) for vol_group in arg['vol_groups']], - ) - - def get_all_pvs(self) -> list[PartitionModification]: - pvs = [] - for vg in self.vol_groups: - pvs += vg.pvs - - return pvs - - def get_all_volumes(self) -> list[LvmVolume]: - volumes = [] - - for vg in self.vol_groups: - volumes += vg.volumes - - return volumes - - def get_root_volume(self) -> LvmVolume | None: - for vg in self.vol_groups: - filtered = next(filter(lambda x: x.is_root(), vg.volumes), None) - if filtered: - return filtered - - return None - - -class _BtrfsOptionsSerialization(TypedDict): - snapshot_config: _SnapshotConfigSerialization | None - - -class _SnapshotConfigSerialization(TypedDict): - type: str - - -class SnapshotType(Enum): - Snapper = 'Snapper' - Timeshift = 'Timeshift' - - -@dataclass -class SnapshotConfig: - snapshot_type: SnapshotType - - def json(self) -> _SnapshotConfigSerialization: - return {'type': self.snapshot_type.value} - - @staticmethod - def parse_args(args: _SnapshotConfigSerialization) -> SnapshotConfig: - return SnapshotConfig(SnapshotType(args['type'])) - - -@dataclass -class BtrfsOptions: - snapshot_config: SnapshotConfig | None - - def json(self) -> _BtrfsOptionsSerialization: - return {'snapshot_config': self.snapshot_config.json() if self.snapshot_config else None} - - @staticmethod - def parse_arg(arg: _BtrfsOptionsSerialization) -> BtrfsOptions | None: - snapshot_args = arg.get('snapshot_config') - if snapshot_args: - snapshot_config = SnapshotConfig.parse_args(snapshot_args) - return BtrfsOptions(snapshot_config) - - return None - - -class _DeviceModificationSerialization(TypedDict): - device: str - wipe: bool - partitions: list[_PartitionModificationSerialization] - - -@dataclass -class DeviceModification: - device: BDevice - wipe: bool - partitions: list[PartitionModification] = field(default_factory=list) - - @property - def device_path(self) -> Path: - return self.device.device_info.path - - def using_gpt(self, partition_table: PartitionTable) -> bool: - if self.wipe: - return partition_table.is_gpt() - - return self.device.disk.type == PartitionTable.GPT.value - - def add_partition(self, partition: PartitionModification) -> None: - self.partitions.append(partition) - - def get_efi_partition(self) -> PartitionModification | None: - filtered = filter(lambda x: x.is_efi() and x.mountpoint, self.partitions) - return next(filtered, None) - - def get_boot_partition(self) -> PartitionModification | None: - filtered = filter(lambda x: x.is_boot() and x.mountpoint, self.partitions) - return next(filtered, None) - - def get_root_partition(self) -> PartitionModification | None: - filtered = filter(lambda x: x.is_root(), self.partitions) - return next(filtered, None) - - def json(self) -> _DeviceModificationSerialization: - """ - Called when generating configuration files - """ - return { - 'device': str(self.device.device_info.path), - 'wipe': self.wipe, - 'partitions': [p.json() for p in self.partitions], - } - - -class EncryptionType(Enum): - NoEncryption = 'no_encryption' - Luks = 'luks' - LvmOnLuks = 'lvm_on_luks' - LuksOnLvm = 'luks_on_lvm' - - @classmethod - def _encryption_type_mapper(cls) -> dict[str, 'EncryptionType']: - return { - tr('No Encryption'): EncryptionType.NoEncryption, - tr('LUKS'): EncryptionType.Luks, - tr('LVM on LUKS'): EncryptionType.LvmOnLuks, - tr('LUKS on LVM'): EncryptionType.LuksOnLvm, - } - - @classmethod - def text_to_type(cls, text: str) -> 'EncryptionType': - mapping = cls._encryption_type_mapper() - return mapping[text] - - @classmethod - def type_to_text(cls, type_: 'EncryptionType') -> str: - mapping = cls._encryption_type_mapper() - type_to_text = {type_: text for text, type_ in mapping.items()} - return type_to_text[type_] - - -class _DiskEncryptionSerialization(TypedDict): - encryption_type: str - partitions: list[str] - lvm_volumes: list[str] - hsm_device: NotRequired[_Fido2DeviceSerialization] - iter_time: NotRequired[int] - - -@dataclass -class DiskEncryption: - encryption_type: EncryptionType = EncryptionType.NoEncryption - encryption_password: Password | None = None - partitions: list[PartitionModification] = field(default_factory=list) - lvm_volumes: list[LvmVolume] = field(default_factory=list) - hsm_device: Fido2Device | None = None - iter_time: int = DEFAULT_ITER_TIME - - def __post_init__(self) -> None: - if self.encryption_type in [EncryptionType.Luks, EncryptionType.LvmOnLuks] and not self.partitions: - raise ValueError('Luks or LvmOnLuks encryption require partitions to be defined') - - if self.encryption_type == EncryptionType.LuksOnLvm and not self.lvm_volumes: - raise ValueError('LuksOnLvm encryption require LMV volumes to be defined') - - def should_generate_encryption_file(self, dev: PartitionModification | LvmVolume) -> bool: - if isinstance(dev, PartitionModification): - return dev in self.partitions and dev.mountpoint != Path('/') - else: - return dev in self.lvm_volumes and dev.mountpoint != Path('/') - - def json(self) -> _DiskEncryptionSerialization: - obj: _DiskEncryptionSerialization = { - 'encryption_type': self.encryption_type.value, - 'partitions': [p.obj_id for p in self.partitions], - 'lvm_volumes': [vol.obj_id for vol in self.lvm_volumes], - } - - if self.hsm_device: - obj['hsm_device'] = self.hsm_device.json() - - if self.iter_time != DEFAULT_ITER_TIME: # Only include if not default - obj['iter_time'] = self.iter_time - - return obj - - @classmethod - def validate_enc( - cls, - modifications: list[DeviceModification], - lvm_config: LvmConfiguration | None = None, - ) -> bool: - partitions = [] - - for mod in modifications: - for part in mod.partitions: - partitions.append(part) - - if len(partitions) > 2: # assume one boot and at least 2 additional - if lvm_config: - return False - - return True - - @classmethod - def parse_arg( - cls, - disk_config: DiskLayoutConfiguration, - disk_encryption: _DiskEncryptionSerialization, - password: Password | None = None, - ) -> 'DiskEncryption | None': - if not cls.validate_enc(disk_config.device_modifications, disk_config.lvm_config): - return None - - if not password: - return None - - enc_partitions = [] - for mod in disk_config.device_modifications: - for part in mod.partitions: - if part.obj_id in disk_encryption.get('partitions', []): - enc_partitions.append(part) - - volumes = [] - if disk_config.lvm_config: - for vol in disk_config.lvm_config.get_all_volumes(): - if vol.obj_id in disk_encryption.get('lvm_volumes', []): - volumes.append(vol) - - enc = DiskEncryption( - EncryptionType(disk_encryption['encryption_type']), - password, - enc_partitions, - volumes, - ) - - if hsm := disk_encryption.get('hsm_device', None): - enc.hsm_device = Fido2Device.parse_arg(hsm) - - if iter_time := disk_encryption.get('iter_time', None): - enc.iter_time = iter_time - - return enc - - -class _Fido2DeviceSerialization(TypedDict): - path: str - manufacturer: str - product: str - - -@dataclass -class Fido2Device: - path: Path - manufacturer: str - product: str - - def json(self) -> _Fido2DeviceSerialization: - return { - 'path': str(self.path), - 'manufacturer': self.manufacturer, - 'product': self.product, - } - - def table_data(self) -> dict[str, str]: - return { - 'Path': str(self.path), - 'Manufacturer': self.manufacturer, - 'Product': self.product, - } - - @classmethod - def parse_arg(cls, arg: _Fido2DeviceSerialization) -> 'Fido2Device': - return Fido2Device( - Path(arg['path']), - arg['manufacturer'], - arg['product'], - ) - - -class LsblkInfo(BaseModel): - name: str - path: Path - pkname: str | None - log_sec: int = Field(alias='log-sec') - size: Size - pttype: str | None - ptuuid: str | None - rota: bool - tran: str | None - partn: int | None - partuuid: str | None - parttype: str | None - uuid: str | None - fstype: str | None - fsver: str | None - fsavail: int | None - fsuse_percentage: str | None = Field(alias='fsuse%') - type: str | None # may be None for strange behavior with md devices - mountpoint: Path | None - mountpoints: list[Path] - fsroots: list[Path] - children: list[LsblkInfo] = Field(default_factory=list) - - @field_validator('size', mode='before') - @classmethod - def convert_size(cls, v: int, info: ValidationInfo) -> Size: - sector_size = SectorSize(info.data['log_sec'], Unit.B) - return Size(v, Unit.B, sector_size) - - @field_validator('mountpoints', 'fsroots', mode='before') - @classmethod - def remove_none(cls, v: list[Path | None]) -> list[Path]: - return [item for item in v if item is not None] - - @field_serializer('size', when_used='json') - def serialize_size(self, size: Size) -> str: - return size.format_size(Unit.MiB) - - @classmethod - def fields(cls) -> list[str]: - return [field.alias or name for name, field in cls.model_fields.items() if name != 'children'] diff --git a/examples/archinstall/archinstall/lib/models/locale.py b/examples/archinstall/archinstall/lib/models/locale.py deleted file mode 100644 index 9c82dd2..0000000 --- a/examples/archinstall/archinstall/lib/models/locale.py +++ /dev/null @@ -1,55 +0,0 @@ -from dataclasses import dataclass -from typing import Any - -from archinstall.lib.translationhandler import tr - -from ..locale.utils import get_kb_layout - - -@dataclass -class LocaleConfiguration: - kb_layout: str - sys_lang: str - sys_enc: str - - @staticmethod - def default() -> 'LocaleConfiguration': - layout = get_kb_layout() - if layout == '': - layout = 'us' - return LocaleConfiguration(layout, 'en_US.UTF-8', 'UTF-8') - - def json(self) -> dict[str, str]: - return { - 'kb_layout': self.kb_layout, - 'sys_lang': self.sys_lang, - 'sys_enc': self.sys_enc, - } - - def preview(self) -> str: - output = '{}: {}\n'.format(tr('Keyboard layout'), self.kb_layout) - output += '{}: {}\n'.format(tr('Locale language'), self.sys_lang) - output += '{}: {}'.format(tr('Locale encoding'), self.sys_enc) - return output - - @classmethod - def _load_config(cls, config: 'LocaleConfiguration', args: dict[str, str]) -> 'LocaleConfiguration': - if 'sys_lang' in args: - config.sys_lang = args['sys_lang'] - if 'sys_enc' in args: - config.sys_enc = args['sys_enc'] - if 'kb_layout' in args: - config.kb_layout = args['kb_layout'] - - return config - - @classmethod - def parse_arg(cls, args: dict[str, Any]) -> 'LocaleConfiguration': - default = cls.default() - - if 'locale_config' in args: - default = cls._load_config(default, args['locale_config']) - else: - default = cls._load_config(default, args) - - return default diff --git a/examples/archinstall/archinstall/lib/models/mirrors.py b/examples/archinstall/archinstall/lib/models/mirrors.py deleted file mode 100644 index 78ffd6d..0000000 --- a/examples/archinstall/archinstall/lib/models/mirrors.py +++ /dev/null @@ -1,329 +0,0 @@ -import datetime -import http.client -import urllib.error -import urllib.parse -import urllib.request -from dataclasses import dataclass, field -from enum import Enum -from typing import Any, TypedDict, override - -from pydantic import BaseModel, field_validator, model_validator - -from ..models.packages import Repository -from ..networking import DownloadTimer, ping -from ..output import debug - - -class MirrorStatusEntryV3(BaseModel): - url: str - protocol: str - active: bool - country: str - country_code: str - isos: bool - ipv4: bool - ipv6: bool - details: str - delay: int | None = None - last_sync: datetime.datetime | None = None - duration_avg: float | None = None - duration_stddev: float | None = None - completion_pct: float | None = None - score: float | None = None - _latency: float | None = None - _speed: float | None = None - _hostname: str | None = None - _port: int | None = None - _speedtest_retries: int | None = None - - @property - def server_url(self) -> str: - return f'{self.url}$repo/os/$arch' - - @property - def speed(self) -> float: - if self._speed is None: - if not self._speedtest_retries: - self._speedtest_retries = 3 - elif self._speedtest_retries < 1: - self._speedtest_retries = 1 - - retry = 0 - while retry < self._speedtest_retries and self._speed is None: - debug(f'Checking download speed of {self._hostname}[{self.score}] by fetching: {self.url}core/os/x86_64/core.db') - req = urllib.request.Request(url=f'{self.url}core/os/x86_64/core.db') - - try: - with urllib.request.urlopen(req, None, 5) as handle, DownloadTimer(timeout=5) as timer: - size = len(handle.read()) - - assert timer.time is not None - self._speed = size / timer.time - debug(f' speed: {self._speed} ({int(self._speed / 1024 / 1024 * 100) / 100}MiB/s)') - # Do not retry error - except urllib.error.URLError as error: - debug(f' speed: ({error}), skip') - self._speed = 0 - # Do retry error - except (http.client.IncompleteRead, ConnectionResetError) as error: - debug(f' speed: ({error}), retry') - # Catch all - except Exception as error: - debug(f' speed: ({error}), skip') - self._speed = 0 - - retry += 1 - - if self._speed is None: - self._speed = 0 - - return self._speed - - @property - def latency(self) -> float | None: - """ - Latency measures the miliseconds between one ICMP request & response. - It only does so once because we check if self._latency is None, and a ICMP timeout result in -1 - We do this because some hosts blocks ICMP so we'll have to rely on .speed() instead which is slower. - """ - if self._latency is None: - debug(f'Checking latency for {self.url}') - assert self._hostname is not None - self._latency = ping(self._hostname, timeout=2) - debug(f' latency: {self._latency}') - - return self._latency - - @classmethod - @field_validator('score', mode='before') - def validate_score(cls, value: float) -> int | None: - if value is not None: - value = round(value) - debug(f' score: {value}') - - return value - - @model_validator(mode='after') - def debug_output(self) -> 'MirrorStatusEntryV3': - self._hostname, *port = urllib.parse.urlparse(self.url).netloc.split(':', 1) - self._port = int(port[0]) if port and len(port) >= 1 else None - - debug(f'Loaded mirror {self._hostname}' + (f' with current score of {self.score}' if self.score else '')) - return self - - -class MirrorStatusListV3(BaseModel): - cutoff: int - last_check: datetime.datetime - num_checks: int - urls: list[MirrorStatusEntryV3] - version: int - - @model_validator(mode='before') - @classmethod - def check_model( - cls, - data: dict[str, int | datetime.datetime | list[MirrorStatusEntryV3]], - ) -> dict[str, int | datetime.datetime | list[MirrorStatusEntryV3]]: - if data.get('version') == 3: - return data - - raise ValueError('MirrorStatusListV3 only accepts version 3 data from https://archlinux.org/mirrors/status/json/') - - -@dataclass -class MirrorRegion: - name: str - urls: list[str] - - def json(self) -> dict[str, list[str]]: - return {self.name: self.urls} - - @override - def __eq__(self, other: object) -> bool: - if not isinstance(other, MirrorRegion): - return NotImplemented - return self.name == other.name - - -class SignCheck(Enum): - Never = 'Never' - Optional = 'Optional' - Required = 'Required' - - -class SignOption(Enum): - TrustedOnly = 'TrustedOnly' - TrustAll = 'TrustAll' - - -class _CustomRepositorySerialization(TypedDict): - name: str - url: str - sign_check: str - sign_option: str - - -@dataclass -class CustomRepository: - name: str - url: str - sign_check: SignCheck - sign_option: SignOption - - def table_data(self) -> dict[str, str]: - return { - 'Name': self.name, - 'Url': self.url, - 'Sign check': self.sign_check.value, - 'Sign options': self.sign_option.value, - } - - def json(self) -> _CustomRepositorySerialization: - return { - 'name': self.name, - 'url': self.url, - 'sign_check': self.sign_check.value, - 'sign_option': self.sign_option.value, - } - - @classmethod - def parse_args(cls, args: list[dict[str, str]]) -> list['CustomRepository']: - configs = [] - for arg in args: - configs.append( - CustomRepository( - arg['name'], - arg['url'], - SignCheck(arg['sign_check']), - SignOption(arg['sign_option']), - ), - ) - - return configs - - -@dataclass -class CustomServer: - url: str - - def table_data(self) -> dict[str, str]: - return {'Url': self.url} - - def json(self) -> dict[str, str]: - return {'url': self.url} - - @classmethod - def parse_args(cls, args: list[dict[str, str]]) -> list['CustomServer']: - configs = [] - for arg in args: - configs.append( - CustomServer(arg['url']), - ) - - return configs - - -class _MirrorConfigurationSerialization(TypedDict): - mirror_regions: dict[str, list[str]] - custom_servers: list[CustomServer] - optional_repositories: list[str] - custom_repositories: list[_CustomRepositorySerialization] - - -@dataclass -class MirrorConfiguration: - mirror_regions: list[MirrorRegion] = field(default_factory=list) - custom_servers: list[CustomServer] = field(default_factory=list) - optional_repositories: list[Repository] = field(default_factory=list) - custom_repositories: list[CustomRepository] = field(default_factory=list) - - @property - def region_names(self) -> str: - return '\n'.join([m.name for m in self.mirror_regions]) - - @property - def custom_server_urls(self) -> str: - return '\n'.join([s.url for s in self.custom_servers]) - - def json(self) -> _MirrorConfigurationSerialization: - regions = {} - for m in self.mirror_regions: - regions.update(m.json()) - - return { - 'mirror_regions': regions, - 'custom_servers': self.custom_servers, - 'optional_repositories': [r.value for r in self.optional_repositories], - 'custom_repositories': [c.json() for c in self.custom_repositories], - } - - def custom_servers_config(self) -> str: - config = '' - - if self.custom_servers: - config += '## Custom Servers\n' - for server in self.custom_servers: - config += f'Server = {server.url}\n' - - return config.strip() - - def regions_config(self, speed_sort: bool = True) -> str: - from ..mirrors import mirror_list_handler - - config = '' - - for mirror_region in self.mirror_regions: - sorted_stati = mirror_list_handler.get_status_by_region( - mirror_region.name, - speed_sort=speed_sort, - ) - - config += f'\n\n## {mirror_region.name}\n' - - for status in sorted_stati: - config += f'Server = {status.server_url}\n' - - return config - - def repositories_config(self) -> str: - config = '' - - for repo in self.custom_repositories: - config += f'\n\n[{repo.name}]\n' - config += f'SigLevel = {repo.sign_check.value} {repo.sign_option.value}\n' - config += f'Server = {repo.url}\n' - - return config - - @classmethod - def parse_args( - cls, - args: dict[str, Any], - backwards_compatible_repo: list[Repository] = [], - ) -> 'MirrorConfiguration': - config = MirrorConfiguration() - - mirror_regions = args.get('mirror_regions', []) - if mirror_regions: - for region, urls in mirror_regions.items(): - config.mirror_regions.append(MirrorRegion(region, urls)) - - if args.get('custom_servers'): - config.custom_servers = CustomServer.parse_args(args['custom_servers']) - - # backwards compatibility with the new custom_repository - if 'custom_mirrors' in args: - config.custom_repositories = CustomRepository.parse_args(args['custom_mirrors']) - if 'custom_repositories' in args: - config.custom_repositories = CustomRepository.parse_args(args['custom_repositories']) - - if 'optional_repositories' in args: - config.optional_repositories = [Repository(r) for r in args['optional_repositories']] - - if backwards_compatible_repo: - for r in backwards_compatible_repo: - if r not in config.optional_repositories: - config.optional_repositories.append(r) - - return config diff --git a/examples/archinstall/archinstall/lib/models/network.py b/examples/archinstall/archinstall/lib/models/network.py deleted file mode 100644 index 88f52fd..0000000 --- a/examples/archinstall/archinstall/lib/models/network.py +++ /dev/null @@ -1,259 +0,0 @@ -from __future__ import annotations - -import re -from dataclasses import dataclass, field -from enum import Enum -from typing import TYPE_CHECKING, NotRequired, TypedDict, override - -from archinstall.lib.output import debug -from archinstall.lib.translationhandler import tr - -from ..models.profile import ProfileConfiguration - -if TYPE_CHECKING: - from archinstall.lib.installer import Installer - - -class NicType(Enum): - ISO = 'iso' - NM = 'nm' - MANUAL = 'manual' - - def display_msg(self) -> str: - match self: - case NicType.ISO: - return tr('Copy ISO network configuration to installation') - case NicType.NM: - return tr('Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)') - case NicType.MANUAL: - return tr('Manual configuration') - - -class _NicSerialization(TypedDict): - iface: str | None - ip: str | None - dhcp: bool - gateway: str | None - dns: list[str] - - -@dataclass -class Nic: - iface: str | None = None - ip: str | None = None - dhcp: bool = True - gateway: str | None = None - dns: list[str] = field(default_factory=list) - - def table_data(self) -> dict[str, str | bool | list[str]]: - return { - 'iface': self.iface if self.iface else '', - 'ip': self.ip if self.ip else '', - 'dhcp': self.dhcp, - 'gateway': self.gateway if self.gateway else '', - 'dns': self.dns, - } - - def json(self) -> _NicSerialization: - return { - 'iface': self.iface, - 'ip': self.ip, - 'dhcp': self.dhcp, - 'gateway': self.gateway, - 'dns': self.dns, - } - - @staticmethod - def parse_arg(arg: _NicSerialization) -> Nic: - return Nic( - iface=arg.get('iface', None), - ip=arg.get('ip', None), - dhcp=arg.get('dhcp', True), - gateway=arg.get('gateway', None), - dns=arg.get('dns', []), - ) - - def as_systemd_config(self) -> str: - match: list[tuple[str, str]] = [] - network: list[tuple[str, str]] = [] - - if self.iface: - match.append(('Name', self.iface)) - - if self.dhcp: - network.append(('DHCP', 'yes')) - else: - if self.ip: - network.append(('Address', self.ip)) - if self.gateway: - network.append(('Gateway', self.gateway)) - for dns in self.dns: - network.append(('DNS', dns)) - - config = {'Match': match, 'Network': network} - - config_str = '' - for top, entries in config.items(): - config_str += f'[{top}]\n' - config_str += '\n'.join([f'{k}={v}' for k, v in entries]) - config_str += '\n\n' - - return config_str - - -class _NetworkConfigurationSerialization(TypedDict): - type: str - nics: NotRequired[list[_NicSerialization]] - - -@dataclass -class NetworkConfiguration: - type: NicType - nics: list[Nic] = field(default_factory=list) - - def json(self) -> _NetworkConfigurationSerialization: - config: _NetworkConfigurationSerialization = {'type': self.type.value} - if self.nics: - config['nics'] = [n.json() for n in self.nics] - - return config - - @staticmethod - def parse_arg(config: _NetworkConfigurationSerialization) -> NetworkConfiguration | None: - nic_type = config.get('type', None) - if not nic_type: - return None - - match NicType(nic_type): - case NicType.ISO: - return NetworkConfiguration(NicType.ISO) - case NicType.NM: - return NetworkConfiguration(NicType.NM) - case NicType.MANUAL: - nics_arg = config.get('nics', []) - if nics_arg: - nics = [Nic.parse_arg(n) for n in nics_arg] - return NetworkConfiguration(NicType.MANUAL, nics) - - return None - - def install_network_config( - self, - installation: Installer, - profile_config: ProfileConfiguration | None = None, - ) -> None: - match self.type: - case NicType.ISO: - installation.copy_iso_network_config( - enable_services=True, # Sources the ISO network configuration to the install medium. - ) - case NicType.NM: - installation.add_additional_packages(['networkmanager']) - if profile_config and profile_config.profile: - if profile_config.profile.is_desktop_profile(): - installation.add_additional_packages(['network-manager-applet']) - installation.enable_service('NetworkManager.service') - case NicType.MANUAL: - for nic in self.nics: - installation.configure_nic(nic) - - installation.enable_service('systemd-networkd') - installation.enable_service('systemd-resolved') - - -@dataclass -class WifiNetwork: - bssid: str - frequency: str - signal_level: str - flags: str - ssid: str - - @override - def __hash__(self) -> int: - return hash((self.bssid, self.frequency, self.signal_level, self.flags, self.ssid)) - - def table_data(self) -> dict[str, str | int]: - """Format WiFi data for table display""" - return { - 'SSID': self.ssid, - 'Signal': f'{self.signal_level} dBm', - 'Frequency': f'{self.frequency} MHz', - 'Security': self.flags, - 'BSSID': self.bssid, - } - - @staticmethod - def from_wpa(results: str) -> list[WifiNetwork]: - entries: list[WifiNetwork] = [] - - for line in results.splitlines(): - line = line.strip() - if not line: - continue - - parts = line.split() - if len(parts) != 5: - continue - - wifi = WifiNetwork(bssid=parts[0], frequency=parts[1], signal_level=parts[2], flags=parts[3], ssid=parts[4]) - entries.append(wifi) - - return entries - - -@dataclass -class WifiConfiguredNetwork: - network_id: int - ssid: str - bssid: str - flags: list[str] - - @classmethod - def from_wpa_cli_output(cls, list_networks: str) -> list[WifiConfiguredNetwork]: - """ - Example output from 'wpa_cli list_networks' - - Selected interface 'wlan0' - network id / ssid / bssid / flags - 0 WifiGuest any [CURRENT] - 1 any [DISABLED] - 2 any [DISABLED] - """ - - lines = list_networks.strip().splitlines() - lines = lines[1:] # remove the header row from the wpa_cli output - - networks = [] - - for line in lines: - line = line.strip() - parts = line.split('\t') - - if len(parts) < 3: - continue - - try: - # flags = cls._extract_flags(parts[3]) - flags: list[str] = [] - - networks.append( - WifiConfiguredNetwork( - network_id=int(parts[0]), - ssid=parts[1], - bssid=parts[2], - flags=flags, - ) - ) - except (ValueError, IndexError): - debug('Parsing error for network output') - - return networks - - @classmethod - def _extract_flags(cls, flag_string: str) -> list[str]: - pattern = r'\[([^\]]+)\]' - - extracted_values = re.findall(pattern, flag_string) - - return extracted_values diff --git a/examples/archinstall/archinstall/lib/models/packages.py b/examples/archinstall/archinstall/lib/models/packages.py deleted file mode 100644 index 557f0f4..0000000 --- a/examples/archinstall/archinstall/lib/models/packages.py +++ /dev/null @@ -1,189 +0,0 @@ -from dataclasses import dataclass, field -from enum import Enum -from functools import cached_property -from typing import Any, override - -from pydantic import BaseModel - -from archinstall.lib.translationhandler import tr - - -class Repository(Enum): - Core = 'core' - Extra = 'extra' - Multilib = 'multilib' - Testing = 'testing' - - def get_repository_list(self) -> list[str]: - match self: - case Repository.Core: - return [Repository.Core.value] - case Repository.Extra: - return [Repository.Extra.value] - case Repository.Multilib: - return [Repository.Multilib.value] - case Repository.Testing: - return [ - 'core-testing', - 'extra-testing', - 'multilib-testing', - ] - - -@dataclass -class PackageSearchResult: - pkgname: str - pkgbase: str - repo: str - arch: str - pkgver: str - pkgrel: str - epoch: int - pkgdesc: str - url: str - filename: str - compressed_size: int - installed_size: int - build_date: str - last_update: str - flag_date: str | None - maintainers: list[str] - packager: str - groups: list[str] - licenses: list[str] - conflicts: list[str] - provides: list[str] - replaces: list[str] - depends: list[str] - optdepends: list[str] - makedepends: list[str] - checkdepends: list[str] - - @staticmethod - def from_json(data: dict[str, Any]) -> 'PackageSearchResult': - return PackageSearchResult(**data) - - @property - def pkg_version(self) -> str: - return self.pkgver - - @override - def __eq__(self, other: object) -> bool: - if not isinstance(other, PackageSearchResult): - return NotImplemented - - return self.pkg_version == other.pkg_version - - def __lt__(self, other: 'PackageSearchResult') -> bool: - return self.pkg_version < other.pkg_version - - -@dataclass -class PackageSearch: - version: int - limit: int - valid: bool - num_pages: int - page: int - results: list[PackageSearchResult] - - @staticmethod - def from_json(data: dict[str, Any]) -> 'PackageSearch': - results = [PackageSearchResult.from_json(r) for r in data['results']] - - return PackageSearch( - version=data['version'], - limit=data['limit'], - valid=data['valid'], - num_pages=data['num_pages'], - page=data['page'], - results=results, - ) - - -class LocalPackage(BaseModel): - name: str - version: str - description: str - architecture: str - url: str - licenses: str - groups: str - - @override - def __eq__(self, other: object) -> bool: - if not isinstance(other, LocalPackage): - return NotImplemented - - return self.version == other.version - - def __lt__(self, other: 'LocalPackage') -> bool: - return self.version < other.version - - -class AvailablePackage(BaseModel): - name: str - architecture: str - build_date: str - depends_on: str - description: str - download_size: str - groups: str - installed_size: str - licenses: str - optional_deps: str - packager: str - provides: str - replaces: str - repository: str - url: str - validated_by: str - version: str - - @cached_property - def longest_key(self) -> int: - return max(len(key) for key in self.model_dump().keys()) - - # return all package info line by line - def info(self) -> str: - output = '' - for key, value in self.model_dump().items(): - key = key.replace('_', ' ').capitalize() - key = key.ljust(self.longest_key) - output += f'{key} : {value}\n' - - return output - - -@dataclass -class PackageGroup: - name: str - packages: list[str] = field(default_factory=list) - - @classmethod - def from_available_packages( - cls, - packages: dict[str, AvailablePackage], - ) -> dict[str, 'PackageGroup']: - pkg_groups: dict[str, 'PackageGroup'] = {} - - for pkg in packages.values(): - if 'None' in pkg.groups: - continue - - groups = pkg.groups.split(' ') - - for group in groups: - # same group names have multiple spaces in between - if len(group) == 0: - continue - - pkg_groups.setdefault(group, PackageGroup(group)) - pkg_groups[group].packages.append(pkg.name) - - return pkg_groups - - def info(self) -> str: - output = tr('Package group:') + '\n - ' - output += '\n - '.join(self.packages) - return output diff --git a/examples/archinstall/archinstall/lib/models/profile.py b/examples/archinstall/archinstall/lib/models/profile.py deleted file mode 100644 index 80cbde7..0000000 --- a/examples/archinstall/archinstall/lib/models/profile.py +++ /dev/null @@ -1,47 +0,0 @@ -from __future__ import annotations - -from dataclasses import dataclass -from typing import TYPE_CHECKING, TypedDict - -from archinstall.default_profiles.profile import GreeterType, Profile - -from ..hardware import GfxDriver - -if TYPE_CHECKING: - from archinstall.lib.profile.profiles_handler import ProfileSerialization - - -class _ProfileConfigurationSerialization(TypedDict): - profile: ProfileSerialization - gfx_driver: str | None - greeter: str | None - - -@dataclass -class ProfileConfiguration: - profile: Profile | None = None - gfx_driver: GfxDriver | None = None - greeter: GreeterType | None = None - - def json(self) -> _ProfileConfigurationSerialization: - from ..profile.profiles_handler import profile_handler - - return { - 'profile': profile_handler.to_json(self.profile), - 'gfx_driver': self.gfx_driver.value if self.gfx_driver else None, - 'greeter': self.greeter.value if self.greeter else None, - } - - @classmethod - def parse_arg(cls, arg: _ProfileConfigurationSerialization) -> 'ProfileConfiguration': - from ..profile.profiles_handler import profile_handler - - profile = profile_handler.parse_profile_config(arg['profile']) - greeter = arg.get('greeter', None) - gfx_driver = arg.get('gfx_driver', None) - - return ProfileConfiguration( - profile, - GfxDriver(gfx_driver) if gfx_driver else None, - GreeterType(greeter) if greeter else None, - ) diff --git a/examples/archinstall/archinstall/lib/models/users.py b/examples/archinstall/archinstall/lib/models/users.py deleted file mode 100644 index 3f18f52..0000000 --- a/examples/archinstall/archinstall/lib/models/users.py +++ /dev/null @@ -1,216 +0,0 @@ -from dataclasses import dataclass, field -from enum import Enum -from typing import NotRequired, TypedDict, override - -from archinstall.lib.translationhandler import tr - -from ..crypt import crypt_yescrypt - - -class PasswordStrength(Enum): - VERY_WEAK = 'very weak' - WEAK = 'weak' - MODERATE = 'moderate' - STRONG = 'strong' - - @property - @override - def value(self) -> str: # pylint: disable=invalid-overridden-method - match self: - case PasswordStrength.VERY_WEAK: - return tr('very weak') - case PasswordStrength.WEAK: - return tr('weak') - case PasswordStrength.MODERATE: - return tr('moderate') - case PasswordStrength.STRONG: - return tr('strong') - - def color(self) -> str: - match self: - case PasswordStrength.VERY_WEAK: - return 'red' - case PasswordStrength.WEAK: - return 'red' - case PasswordStrength.MODERATE: - return 'yellow' - case PasswordStrength.STRONG: - return 'green' - - @classmethod - def strength(cls, password: str) -> 'PasswordStrength': - digit = any(character.isdigit() for character in password) - upper = any(character.isupper() for character in password) - lower = any(character.islower() for character in password) - symbol = any(not character.isalnum() for character in password) - return cls._check_password_strength(digit, upper, lower, symbol, len(password)) - - @classmethod - def _check_password_strength( - cls, - digit: bool, - upper: bool, - lower: bool, - symbol: bool, - length: int, - ) -> 'PasswordStrength': - # suggested evaluation - # https://github.com/archlinux/archinstall/issues/1304#issuecomment-1146768163 - if digit and upper and lower and symbol: - match length: - case num if 13 <= num: - return PasswordStrength.STRONG - case num if 11 <= num <= 12: - return PasswordStrength.MODERATE - case num if 7 <= num <= 10: - return PasswordStrength.WEAK - case num if num <= 6: - return PasswordStrength.VERY_WEAK - elif digit and upper and lower: - match length: - case num if 14 <= num: - return PasswordStrength.STRONG - case num if 11 <= num <= 13: - return PasswordStrength.MODERATE - case num if 7 <= num <= 10: - return PasswordStrength.WEAK - case num if num <= 6: - return PasswordStrength.VERY_WEAK - elif upper and lower: - match length: - case num if 15 <= num: - return PasswordStrength.STRONG - case num if 12 <= num <= 14: - return PasswordStrength.MODERATE - case num if 7 <= num <= 11: - return PasswordStrength.WEAK - case num if num <= 6: - return PasswordStrength.VERY_WEAK - elif lower or upper: - match length: - case num if 18 <= num: - return PasswordStrength.STRONG - case num if 14 <= num <= 17: - return PasswordStrength.MODERATE - case num if 9 <= num <= 13: - return PasswordStrength.WEAK - case num if num <= 8: - return PasswordStrength.VERY_WEAK - - return PasswordStrength.VERY_WEAK - - -UserSerialization = TypedDict( - 'UserSerialization', - { - 'username': str, - '!password': NotRequired[str], - 'sudo': bool, - 'groups': list[str], - 'enc_password': str | None, - }, -) - - -class Password: - def __init__( - self, - plaintext: str = '', - enc_password: str | None = None, - ): - if plaintext: - enc_password = crypt_yescrypt(plaintext) - - if not plaintext and not enc_password: - raise ValueError('Either plaintext or enc_password must be provided') - - self._plaintext = plaintext - self.enc_password = enc_password - - @property - def plaintext(self) -> str: - return self._plaintext - - @plaintext.setter - def plaintext(self, value: str) -> None: - self._plaintext = value - self.enc_password = crypt_yescrypt(value) - - @override - def __eq__(self, other: object) -> bool: - if not isinstance(other, Password): - return NotImplemented - - if self._plaintext and other._plaintext: - return self._plaintext == other._plaintext - - return self.enc_password == other.enc_password - - def hidden(self) -> str: - if self._plaintext: - return '*' * len(self._plaintext) - else: - return '*' * 8 - - -@dataclass -class User: - username: str - password: Password - sudo: bool - groups: list[str] = field(default_factory=list) - - @override - def __str__(self) -> str: - # safety overwrite to make sure password is not leaked - return f'User({self.username=}, {self.sudo=}, {self.groups=})' - - def table_data(self) -> dict[str, str | bool | list[str]]: - return { - 'username': self.username, - 'password': self.password.hidden(), - 'sudo': self.sudo, - 'groups': self.groups, - } - - def json(self) -> UserSerialization: - return { - 'username': self.username, - 'enc_password': self.password.enc_password, - 'sudo': self.sudo, - 'groups': self.groups, - } - - @classmethod - def parse_arguments( - cls, - args: list[UserSerialization], - ) -> list['User']: - users: list[User] = [] - - for entry in args: - username = entry.get('username') - password: Password | None = None - groups = entry.get('groups', []) - plaintext = entry.get('!password') - enc_password = entry.get('enc_password') - - # DEPRECATED: backwards compatibility - if plaintext: - password = Password(plaintext=plaintext) - elif enc_password: - password = Password(enc_password=enc_password) - - if username is None or password is None: - continue - - user = User( - username=username, - password=password, - sudo=entry.get('sudo', False) is True, - groups=groups, - ) - - users.append(user) - - return users diff --git a/examples/archinstall/archinstall/lib/network/__init__.py b/examples/archinstall/archinstall/lib/network/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/examples/archinstall/archinstall/lib/network/wifi_handler.py b/examples/archinstall/archinstall/lib/network/wifi_handler.py deleted file mode 100644 index 13fc3e4..0000000 --- a/examples/archinstall/archinstall/lib/network/wifi_handler.py +++ /dev/null @@ -1,280 +0,0 @@ -from asyncio import sleep -from dataclasses import dataclass -from pathlib import Path -from typing import Any, assert_never - -from archinstall.lib.exceptions import SysCallError -from archinstall.lib.general import SysCommand -from archinstall.lib.models.network import WifiConfiguredNetwork, WifiNetwork -from archinstall.lib.network.wpa_supplicant import WpaSupplicantConfig -from archinstall.lib.output import debug -from archinstall.lib.translationhandler import tr -from archinstall.tui.menu_item import MenuItemGroup -from archinstall.tui.ui.components import ConfirmationScreen, InputScreen, LoadingScreen, NotifyScreen, TableSelectionScreen, tui -from archinstall.tui.ui.result import ResultType - - -@dataclass -class WpaCliResult: - success: bool - response: str | None = None - error: str | None = None - - -class WifiHandler: - def __init__(self) -> None: - tui.set_main(self) - self._wpa_config = WpaSupplicantConfig() - - def setup(self) -> Any: - result = tui.run() - return result - - async def run(self) -> None: - """ - This is the entry point that is called by components.TApp - """ - wifi_iface = self._find_wifi_interface() - - if not wifi_iface: - debug('No wifi interface found') - tui.exit(False) - return None - - prompt = tr('No network connection found') + '\n\n' - prompt += tr('Would you like to connect to a Wifi?') + '\n' - - result = await ConfirmationScreen[bool]( - MenuItemGroup.yes_no(), - header=prompt, - allow_skip=True, - allow_reset=True, - ).run() - - match result.type_: - case ResultType.Selection: - if result.value() is False: - tui.exit(False) - return None - case ResultType.Skip | ResultType.Reset: - tui.exit(False) - return None - case _: - assert_never(result) - - setup_result = await self._setup_wifi(wifi_iface) - tui.exit(setup_result) - - 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 - - if result.success: - debug('wpa_supplicant already running') - return True - - if result.error and 'failed to connect to non-global ctrl_ifname'.lower() not in result.error.lower(): - debug('Unexpected wpa_cli failure') - return False - - debug('wpa_supplicant not running, trying to enable') - - 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 - - def _find_wifi_interface(self) -> str | None: - net_path = Path('/sys/class/net') - - for iface in net_path.iterdir(): - maybe_wireless_path = net_path / iface / 'wireless' - if maybe_wireless_path.is_dir(): - return iface.name - - return None - - async def _setup_wifi(self, wifi_iface: str) -> bool: - debug('Setting up wifi') - - if not await self._enable_supplicant(wifi_iface): - debug('Failed to enable wpa_supplicant') - return False - - if not wifi_iface: - debug('No wifi interface found') - await NotifyScreen(header=tr('No wifi interface found')).run() - return False - - debug(f'Found wifi interface: {wifi_iface}') - - async def get_wifi_networks() -> list[WifiNetwork]: - debug('Scanning Wifi networks') - result = self._wpa_cli('scan', wifi_iface) - - if not result.success: - debug(f'Failed to scan wifi networks: {result.error}') - return [] - - await sleep(5) - return self._get_scan_results(wifi_iface) - - result = await TableSelectionScreen[WifiNetwork]( - header=tr('Select wifi network to connect to'), - loading_header=tr('Scanning wifi networks...'), - data_callback=get_wifi_networks, - allow_skip=True, - allow_reset=True, - ).run() - - match result.type_: - case ResultType.Selection: - if not result.has_data(): - debug('No networks found') - await NotifyScreen(header=tr('No wifi networks found')).run() - tui.exit(False) - return False - - network = result.value() - case ResultType.Skip | ResultType.Reset: - tui.exit(False) - return False - case _: - assert_never(result.type_) - - existing_network = self._wpa_config.get_existing_network(network.ssid) - existing_psk = existing_network.psk if existing_network else None - psk = await self._prompt_psk(existing_psk) - - if not psk: - debug('No password specified') - return False - - self._wpa_config.set_network(network, psk) - self._wpa_config.write_config() - - wpa_result = self._wpa_cli('reconfigure') - - if not wpa_result.success: - debug(f'Failed to reconfigure wpa_supplicant: {wpa_result.error}') - await self._notify_failure() - return False - - await LoadingScreen(3, 'Setting up wifi...').run() - - network_id = self._find_network_id(network.ssid, wifi_iface) - - if not network_id: - debug('Failed to find network id') - await self._notify_failure() - return False - - wpa_result = self._wpa_cli(f'enable {network_id}', wifi_iface) - - if not wpa_result.success: - debug(f'Failed to enable network: {wpa_result.error}') - await self._notify_failure() - return False - - await LoadingScreen(5, 'Connecting wifi...').run() - - return True - - async def _notify_failure(self) -> None: - await NotifyScreen(header=tr('Failed setting up wifi')).run() - - def _wpa_cli(self, command: str, iface: str | None = None) -> WpaCliResult: - cmd = 'wpa_cli' - - if iface: - cmd += f' -i {iface}' - - cmd += f' {command}' - - 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( - success=False, - error=f'Error running wpa_cli command: {err}', - ) - - def _find_network_id(self, ssid: str, iface: str) -> int | None: - result = self._wpa_cli('list_networks', iface) - - if not result.success: - debug(f'Failed to list networks: {result.error}') - return None - - list_networks = result.response - - if not list_networks: - debug('No networks found') - return None - - existing_networks = WifiConfiguredNetwork.from_wpa_cli_output(list_networks) - - for network in existing_networks: - if network.ssid == ssid: - return network.network_id - - return None - - async def _prompt_psk(self, existing: str | None = None) -> str | None: - result = await InputScreen( - header=tr('Enter wifi password'), - password=True, - allow_skip=True, - allow_reset=True, - default_value=existing, - ).run() - - if result.type_ != ResultType.Selection: - debug('No password provided, aborting connection') - return None - - return result.value() - - def _get_scan_results(self, iface: str) -> list[WifiNetwork]: - debug(f'Retrieving scan results: {iface}') - - 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 - - -wifi_handler = WifiHandler() diff --git a/examples/archinstall/archinstall/lib/network/wpa_supplicant.py b/examples/archinstall/archinstall/lib/network/wpa_supplicant.py deleted file mode 100644 index 935e9b4..0000000 --- a/examples/archinstall/archinstall/lib/network/wpa_supplicant.py +++ /dev/null @@ -1,136 +0,0 @@ -from dataclasses import dataclass, field -from pathlib import Path - -from archinstall.lib.models.network import WifiNetwork -from archinstall.lib.output import debug - - -@dataclass -class WpaSupplicantNetwork: - mappings: dict[str, str] = field(default_factory=dict) - - @property - def psk(self) -> str: - return self.mappings['psk'].strip('"') - - @property - def ssid(self) -> str: - return self.mappings['ssid'].strip('"') - - def to_config_entry(self) -> str: - wpa_net_config = '\n' - wpa_net_config += 'network={\n' - - for key, value in self.mappings.items(): - wpa_net_config += f'\t{key}={value}\n' - - if 'mesh_fwding' not in self.mappings: - wpa_net_config += '\tmesh_fwding=1\n' - - wpa_net_config += '}\n\n' - return wpa_net_config - - -class WpaSupplicantConfig: - def __init__(self) -> None: - self.config_file = Path('/etc/wpa_supplicant/wpa_supplicant.conf') - self._wpa_networks: list[WpaSupplicantNetwork] = [] - - def load_config(self) -> None: - if not self.config_file.is_file(): - debug('wpa_supplicant.conf not found, creating') - self._create_config() - else: - debug('wpa_supplicant.conf found') - content = self.config_file.read_text() - - config_header = '' - if 'ctrl_interface' not in content: - config_header += 'ctrl_interface=/run/wpa_supplicant\n' - if 'update_config' not in content: - config_header += 'update_config=1\n\n' - - if config_header: - config = config_header + content - self.config_file.write_text(config) - - self._wpa_networks = self._parse_config() - - def _config_header(self) -> str: - return 'ctrl_interface=/run/wpa_supplicant\nupdate_config=1' - - def get_existing_network(self, ssid: str) -> WpaSupplicantNetwork | None: - ssid = f'"{ssid}"' - - for network in self._wpa_networks: - if network.mappings['ssid'] == ssid: - return network - - return None - - def set_network(self, network: WifiNetwork, psk: str) -> None: - debug('setting new wifi network') - - existing_network = self.get_existing_network(network.ssid) - - if not existing_network: - wpa_net_config = WpaSupplicantNetwork( - mappings={ - 'ssid': f'"{network.ssid}"', - 'psk': f'"{psk}"', - } - ) - self._wpa_networks.append(wpa_net_config) - else: - existing_network.mappings['psk'] = f'"{psk}"' - - def write_config(self) -> None: - debug('writing wpa_supplicant config') - - config = self._config_header() - config += '\n\n' - - for network in self._wpa_networks: - config += network.to_config_entry() - - self.config_file.write_text(config) - - def _create_config(self) -> None: - self.config_file.touch() - - header = self._config_header() - self.config_file.write_text(header) - - def _parse_config(self) -> list[WpaSupplicantNetwork]: - content = self.config_file.read_text() - - networks: list[WpaSupplicantNetwork] = [] - in_network_block = False - cur_net_data: dict[str, str] = {} - - for line in content.splitlines(): - line = line.strip() - - if not line or line.startswith('#'): - continue - - if line == 'network={': - in_network_block = True - cur_net_data = {} - continue - - if in_network_block and line == '}': - new_network = WpaSupplicantNetwork( - mappings=cur_net_data, - ) - - networks.append(new_network) - in_network_block = False - continue - - if in_network_block: - if '=' in line: - key, value = line.split('=', 1) - cur_net_data[key.strip()] = value.strip() - - return networks diff --git a/examples/archinstall/archinstall/lib/networking.py b/examples/archinstall/archinstall/lib/networking.py deleted file mode 100644 index f7d4efa..0000000 --- a/examples/archinstall/archinstall/lib/networking.py +++ /dev/null @@ -1,198 +0,0 @@ -import os -import random -import select -import signal -import socket -import ssl -import struct -import time -from types import FrameType, TracebackType -from typing import Self -from urllib.error import URLError -from urllib.parse import urlencode -from urllib.request import urlopen - -from .exceptions import DownloadTimeout, SysCallError -from .output import debug, error, info -from .pacman import Pacman - - -class DownloadTimer: - """ - Context manager for timing downloads with timeouts. - """ - - def __init__(self, timeout: int = 5): - """ - Args: - timeout: - The download timeout in seconds. The DownloadTimeout exception - will be raised in the context after this many seconds. - """ - self.time: float | None = None - self.start_time: float | None = None - self.timeout = timeout - self.previous_handler = None - self.previous_timer: int | None = None - - def raise_timeout(self, signl: int, frame: FrameType | None) -> None: - """ - Raise the DownloadTimeout exception. - """ - raise DownloadTimeout(f'Download timed out after {self.timeout} second(s).') - - def __enter__(self) -> Self: - if self.timeout > 0: - self.previous_handler = signal.signal(signal.SIGALRM, self.raise_timeout) # type: ignore[assignment] - self.previous_timer = signal.alarm(self.timeout) - - self.start_time = time.time() - return self - - def __exit__(self, exc_type: type[BaseException] | None, exc_value: BaseException | None, traceback: TracebackType | None) -> None: - if self.start_time: - time_delta = time.time() - self.start_time - signal.alarm(0) - self.time = time_delta - if self.timeout > 0: - signal.signal(signal.SIGALRM, self.previous_handler) - - previous_timer = self.previous_timer - if previous_timer and previous_timer > 0: - remaining_time = int(previous_timer - time_delta) - # The alarm should have been raised during the download. - if remaining_time <= 0: - signal.raise_signal(signal.SIGALRM) - else: - signal.alarm(remaining_time) - self.start_time = None - - -def get_hw_addr(ifname: str) -> str: - import fcntl - - s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - ret = fcntl.ioctl(s.fileno(), 0x8927, struct.pack('256s', bytes(ifname, 'utf-8')[:15])) - return ':'.join(f'{b:02x}' for b in ret[18:24]) - - -def list_interfaces(skip_loopback: bool = True) -> dict[str, str]: - interfaces = {} - - for _index, iface in socket.if_nameindex(): - if skip_loopback and iface == 'lo': - continue - - mac = get_hw_addr(iface).replace(':', '-').lower() - interfaces[mac] = iface - - return interfaces - - -def update_keyring() -> bool: - info('Updating archlinux-keyring ...') - try: - Pacman.run('-Sy --noconfirm archlinux-keyring') - return True - except SysCallError: - if os.geteuid() != 0: - error("update_keyring() uses 'pacman -Sy archlinux-keyring' which requires root.") - - return False - - -def enrich_iface_types(interfaces: list[str]) -> dict[str, str]: - result = {} - - for iface in interfaces: - if os.path.isdir(f'/sys/class/net/{iface}/bridge/'): - result[iface] = 'BRIDGE' - elif os.path.isfile(f'/sys/class/net/{iface}/tun_flags'): - # ethtool -i {iface} - result[iface] = 'TUN/TAP' - elif os.path.isdir(f'/sys/class/net/{iface}/device'): - if os.path.isdir(f'/sys/class/net/{iface}/wireless/'): - result[iface] = 'WIRELESS' - else: - result[iface] = 'PHYSICAL' - else: - result[iface] = 'UNKNOWN' - - return result - - -def fetch_data_from_url(url: str, params: dict[str, str] | None = None) -> str: - ssl_context = ssl.create_default_context() - ssl_context.check_hostname = False - ssl_context.verify_mode = ssl.CERT_NONE - - if params is not None: - encoded = urlencode(params) - full_url = f'{url}?{encoded}' - else: - full_url = url - - try: - response = urlopen(full_url, context=ssl_context) - data = response.read().decode('UTF-8') - return data - except URLError as e: - raise ValueError(f'Unable to fetch data from url: {url}\n{e}') - except Exception as e: - raise ValueError(f'Unexpected error when parsing response: {e}') - - -def calc_checksum(icmp_packet: bytes) -> int: - # Calculate the ICMP checksum - checksum = 0 - for i in range(0, len(icmp_packet), 2): - checksum += (icmp_packet[i] << 8) + (struct.unpack('B', icmp_packet[i + 1 : i + 2])[0] if len(icmp_packet[i + 1 : i + 2]) else 0) - - checksum = (checksum >> 16) + (checksum & 0xFFFF) - checksum = ~checksum & 0xFFFF - - return checksum - - -def build_icmp(payload: bytes) -> bytes: - # Define the ICMP Echo Request packet - icmp_packet = struct.pack('!BBHHH', 8, 0, 0, 0, 1) + payload - - checksum = calc_checksum(icmp_packet) - - return struct.pack('!BBHHH', 8, 0, checksum, 0, 1) + payload - - -def ping(hostname: str, timeout: int = 5) -> int: - watchdog = select.epoll() - started = time.time() - random_identifier = f'archinstall-{random.randint(1000, 9999)}'.encode() - - # Create a raw socket (requires root, which should be fine on archiso) - icmp_socket = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMP) - watchdog.register(icmp_socket, select.EPOLLIN | select.EPOLLHUP) - - icmp_packet = build_icmp(random_identifier) - - # Send the ICMP packet - icmp_socket.sendto(icmp_packet, (hostname, 0)) - latency = -1 - - # Gracefully wait for X amount of time - # for a ICMP response or exit with no latency - while latency == -1 and time.time() - started < timeout: - try: - for _fileno, _event in watchdog.poll(0.1): - response, _ = icmp_socket.recvfrom(1024) - icmp_type = struct.unpack('!B', response[20:21])[0] - - # Check if it's an Echo Reply (ICMP type 0) - if icmp_type == 0 and response[-len(random_identifier) :] == random_identifier: - latency = round((time.time() - started) * 1000) - break - except OSError as e: - debug(f'Error: {e}') - break - - icmp_socket.close() - return latency diff --git a/examples/archinstall/archinstall/lib/output.py b/examples/archinstall/archinstall/lib/output.py deleted file mode 100644 index 2cac13b..0000000 --- a/examples/archinstall/archinstall/lib/output.py +++ /dev/null @@ -1,338 +0,0 @@ -import logging -import os -import sys -from collections.abc import Callable -from dataclasses import asdict, is_dataclass -from datetime import UTC, datetime -from enum import Enum -from pathlib import Path -from typing import TYPE_CHECKING, Any - -from .utils.unicode import unicode_ljust, unicode_rjust - -if TYPE_CHECKING: - from _typeshed import DataclassInstance - - -class FormattedOutput: - @classmethod - def _get_values( - cls, - o: 'DataclassInstance', - class_formatter: str | Callable | None = None, # type: ignore[type-arg] - filter_list: list[str] = [], - ) -> dict[str, Any]: - """ - the original values returned a dataclass as dict thru the call to some specific methods - this version allows thru the parameter class_formatter to call a dynamically selected formatting method. - Can transmit a filter list to the class_formatter, - """ - if class_formatter: - # if invoked per reference it has to be a standard function or a classmethod. - # A method of an instance does not make sense - if callable(class_formatter): - return class_formatter(o, filter_list) - # if is invoked by name we restrict it to a method of the class. No need to mess more - elif hasattr(o, class_formatter) and callable(getattr(o, class_formatter)): - func = getattr(o, class_formatter) - return func(filter_list) - - raise ValueError('Unsupported formatting call') - elif hasattr(o, 'table_data'): - return o.table_data() - elif hasattr(o, 'json'): - return o.json() - elif is_dataclass(o): - return asdict(o) - else: - return o.__dict__ # type: ignore[unreachable] - - @classmethod - def as_table( - cls, - obj: list[Any], - class_formatter: str | Callable | None = None, # type: ignore[type-arg] - filter_list: list[str] = [], - capitalize: bool = False, - ) -> str: - """variant of as_table (subtly different code) which has two additional parameters - filter which is a list of fields which will be shon - class_formatter a special method to format the outgoing data - - A general comment, the format selected for the output (a string where every data record is separated by newline) - is for compatibility with a print statement - As_table_filter can be a drop in replacement for as_table - """ - raw_data = [cls._get_values(o, class_formatter, filter_list) for o in obj] - - # determine the maximum column size - column_width: dict[str, int] = {} - for o in raw_data: - for k, v in o.items(): - if not filter_list or k in filter_list: - column_width.setdefault(k, 0) - column_width[k] = max([column_width[k], len(str(v)), len(k)]) - - if not filter_list: - filter_list = list(column_width.keys()) - - # create the header lines - output = '' - key_list = [] - for key in filter_list: - width = column_width[key] - key = key.replace('!', '').replace('_', ' ') - - if capitalize: - key = key.capitalize() - - key_list.append(unicode_ljust(key, width)) - - output += ' | '.join(key_list) + '\n' - output += '-' * len(output) + '\n' - - # create the data lines - for record in raw_data: - obj_data = [] - for key in filter_list: - width = column_width.get(key, len(key)) - value = record.get(key, '') - - if '!' in key: - value = '*' * len(value) - - if isinstance(value, int | float) or (isinstance(value, str) and value.isnumeric()): - obj_data.append(unicode_rjust(str(value), width)) - else: - obj_data.append(unicode_ljust(str(value), width)) - - output += ' | '.join(obj_data) + '\n' - - return output - - @classmethod - def as_columns(cls, entries: list[str], cols: int) -> str: - """ - Will format a list into a given number of columns - """ - chunks = [] - 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 - - -class Journald: - @staticmethod - def log(message: str, level: int = logging.DEBUG) -> None: - try: - import systemd.journal # type: ignore[import-not-found] - except ModuleNotFoundError: - return None - - log_adapter = logging.getLogger('archinstall') - log_fmt = logging.Formatter('[%(levelname)s]: %(message)s') - log_ch = systemd.journal.JournalHandler() - log_ch.setFormatter(log_fmt) - log_adapter.addHandler(log_ch) - log_adapter.setLevel(logging.DEBUG) - - log_adapter.log(level, message) - - -class Logger: - def __init__(self, path: Path = Path('/var/log/archinstall')) -> None: - self._path = path - - @property - def path(self) -> Path: - return self._path / 'install.log' - - @property - def directory(self) -> Path: - return self._path - - def _check_permissions(self) -> None: - log_file = self.path - - try: - self._path.mkdir(exist_ok=True, parents=True) - log_file.touch(exist_ok=True) - - with log_file.open('a') as f: - f.write('') - except PermissionError: - # Fallback to creating the log file in the current folder - logger._path = Path('./').absolute() - - warn(f'Not enough permission to place log file at {log_file}, creating it in {logger.path} instead') - - def log(self, level: int, content: str) -> None: - self._check_permissions() - - with self.path.open('a') as f: - ts = _timestamp() - level_name = logging.getLevelName(level) - f.write(f'[{ts}] - {level_name} - {content}\n') - - -logger = Logger() - - -def _supports_color() -> bool: - """ - Found first reference here: - https://stackoverflow.com/questions/7445658/how-to-detect-if-the-console-does-support-ansi-escape-codes-in-python - And re-used this: - https://github.com/django/django/blob/master/django/core/management/color.py#L12 - - Return True if the running system's terminal supports color, - and False otherwise. - """ - supported_platform = sys.platform != 'win32' or 'ANSICON' in os.environ - - # isatty is not always implemented, #6223. - is_a_tty = hasattr(sys.stdout, 'isatty') and sys.stdout.isatty() - return supported_platform and is_a_tty - - -class Font(Enum): - bold = '1' - italic = '3' - underscore = '4' - blink = '5' - reverse = '7' - conceal = '8' - - -def _stylize_output( - text: str, - fg: str, - bg: str | None, - reset: bool, - font: list[Font] = [], -) -> str: - """ - Heavily influenced by: - https://github.com/django/django/blob/ae8338daf34fd746771e0678081999b656177bae/django/utils/termcolors.py#L13 - Color options here: - https://askubuntu.com/questions/528928/how-to-do-underline-bold-italic-strikethrough-color-background-and-size-i - - Adds styling to a text given a set of color arguments. - """ - colors = { - 'black': '0', - 'red': '1', - 'green': '2', - 'yellow': '3', - 'blue': '4', - 'magenta': '5', - 'cyan': '6', - 'white': '7', - 'teal': '8;5;109', # Extended 256-bit colors (not always supported) - 'orange': '8;5;208', # https://www.lihaoyi.com/post/BuildyourownCommandLinewithANSIescapecodes.html#256-colors - 'darkorange': '8;5;202', - 'gray': '8;5;246', - 'grey': '8;5;246', - 'darkgray': '8;5;240', - 'lightgray': '8;5;256', - } - - foreground = {key: f'3{colors[key]}' for key in colors} - background = {key: f'4{colors[key]}' for key in colors} - code_list = [] - - if text == '' and reset: - return '\x1b[0m' - - code_list.append(foreground[str(fg)]) - - if bg: - code_list.append(background[str(bg)]) - - for o in font: - code_list.append(o.value) - - ansi = ';'.join(code_list) - - return f'\033[{ansi}m{text}\033[0m' - - -def info( - *msgs: str, - level: int = logging.INFO, - fg: str = 'white', - bg: str | None = None, - reset: bool = False, - font: list[Font] = [], -) -> None: - log(*msgs, level=level, fg=fg, bg=bg, reset=reset, font=font) - - -def _timestamp() -> str: - now = datetime.now(tz=UTC) - return now.strftime('%Y-%m-%d %H:%M:%S') - - -def debug( - *msgs: str, - level: int = logging.DEBUG, - fg: str = 'white', - bg: str | None = None, - reset: bool = False, - font: list[Font] = [], -) -> None: - log(*msgs, level=level, fg=fg, bg=bg, reset=reset, font=font) - - -def error( - *msgs: str, - level: int = logging.ERROR, - fg: str = 'red', - bg: str | None = None, - reset: bool = False, - font: list[Font] = [], -) -> None: - log(*msgs, level=level, fg=fg, bg=bg, reset=reset, font=font) - - -def warn( - *msgs: str, - level: int = logging.WARNING, - fg: str = 'yellow', - bg: str | None = None, - reset: bool = False, - font: list[Font] = [], -) -> None: - log(*msgs, level=level, fg=fg, bg=bg, reset=reset, font=font) - - -def log( - *msgs: str, - level: int = logging.INFO, - fg: str = 'white', - bg: str | None = None, - reset: bool = False, - font: list[Font] = [], -) -> None: - text = ' '.join([str(x) for x in msgs]) - - logger.log(level, text) - - # Attempt to colorize the output if supported - # Insert default colors and override with **kwargs - if _supports_color(): - text = _stylize_output(text, fg, bg, reset, font) - - Journald.log(text, level=level) - - if level != logging.DEBUG: - from archinstall.tui.curses_menu import Tui - - Tui.print(text) diff --git a/examples/archinstall/archinstall/lib/packages/__init__.py b/examples/archinstall/archinstall/lib/packages/__init__.py deleted file mode 100644 index 7cc617c..0000000 --- a/examples/archinstall/archinstall/lib/packages/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -from .packages import find_package, find_packages, group_search, installed_package, list_available_packages, package_search, validate_package_list - -__all__ = [ - 'find_package', - 'find_packages', - 'group_search', - 'installed_package', - 'list_available_packages', - 'package_search', - 'validate_package_list', -] diff --git a/examples/archinstall/archinstall/lib/packages/packages.py b/examples/archinstall/archinstall/lib/packages/packages.py deleted file mode 100644 index b3e0c8c..0000000 --- a/examples/archinstall/archinstall/lib/packages/packages.py +++ /dev/null @@ -1,178 +0,0 @@ -import json -import ssl -from functools import lru_cache -from urllib.error import HTTPError -from urllib.parse import urlencode -from urllib.request import urlopen -from urllib.response import addinfourl - -from ..exceptions import PackageError, SysCallError -from ..models.packages import AvailablePackage, LocalPackage, PackageSearch, PackageSearchResult, Repository -from ..output import debug -from ..pacman import Pacman - -BASE_URL_PKG_SEARCH = 'https://archlinux.org/packages/search/json/' -# BASE_URL_PKG_CONTENT = 'https://archlinux.org/packages/search/json/' -BASE_GROUP_URL = 'https://archlinux.org/groups/search/json/' - - -def _make_request(url: str, params: dict[str, str]) -> addinfourl: - ssl_context = ssl.create_default_context() - ssl_context.check_hostname = False - ssl_context.verify_mode = ssl.CERT_NONE - - encoded = urlencode(params) - full_url = f'{url}?{encoded}' - - return urlopen(full_url, context=ssl_context) - - -def group_search(name: str) -> list[PackageSearchResult]: - # TODO UPSTREAM: Implement /json/ for the groups search - try: - response = _make_request(BASE_GROUP_URL, {'name': name}) - except HTTPError as err: - if err.code == 404: - return [] - else: - raise err - - # Just to be sure some code didn't slip through the exception - data = response.read().decode('utf-8') - - return [PackageSearchResult(**package) for package in json.loads(data)['results']] - - -def package_search(package: str) -> PackageSearch: - """ - Finds a specific package via the package database. - It makes a simple web-request, which might be a bit slow. - """ - # TODO UPSTREAM: Implement bulk search, either support name=X&name=Y or split on space (%20 or ' ') - # TODO: utilize pacman cache first, upstream second. - response = _make_request(BASE_URL_PKG_SEARCH, {'name': package}) - - if response.code != 200: - raise PackageError(f'Could not locate package: [{response.code}] {response}') - - data = response.read().decode('UTF-8') - json_data = json.loads(data) - return PackageSearch.from_json(json_data) - - -def find_package(package: str) -> list[PackageSearchResult]: - data = package_search(package) - results = [] - - for result in data.results: - if result.pkgname == package: - results.append(result) - - # If we didn't find the package in the search results, - # odds are it's a group package - if not results: - # Check if the package is actually a group - for result in group_search(package): - results.append(result) - - return results - - -def find_packages(*names: str) -> dict[str, PackageSearchResult]: - """ - This function returns the search results for many packages. - The function itself is rather slow, so consider not sending to - many packages to the search query. - """ - result = {} - for package in names: - for found_package in find_package(package): - result[package] = found_package - - return result - - -def validate_package_list(packages: list[str]) -> tuple[list[str], list[str]]: - """ - Validates a list of given packages. - return: Tuple of lists containing valid packavges in the first and invalid - packages in the second entry - """ - valid_packages = {package for package in packages if find_package(package)} - invalid_packages = set(packages) - valid_packages - - return list(valid_packages), list(invalid_packages) - - -def installed_package(package: str) -> LocalPackage | None: - try: - package_info = [] - for line in Pacman.run(f'-Q --info {package}'): - package_info.append(line.decode().strip()) - - return _parse_package_output(package_info, LocalPackage) - except SysCallError: - pass - - return None - - -@lru_cache -def check_package_upgrade(package: str) -> str | None: - try: - for line in Pacman.run(f'-Qu {package}'): - return line.decode().strip() - except SysCallError: - debug(f'Failed to check for package upgrades: {package}') - - return None - - -@lru_cache -def list_available_packages( - repositories: tuple[Repository, ...], -) -> dict[str, AvailablePackage]: - """ - Returns a list of all available packages in the database - """ - packages: dict[str, AvailablePackage] = {} - current_package: list[str] = [] - filtered_repos = [name for repo in repositories for name in repo.get_repository_list()] - - try: - Pacman.run('-Sy') - except Exception as e: - debug(f'Failed to sync Arch Linux package database: {e}') - - for line in Pacman.run('-S --info'): - dec_line = line.decode().strip() - current_package.append(dec_line) - - if dec_line.startswith('Validated'): - if current_package: - avail_pkg = _parse_package_output(current_package, AvailablePackage) - if avail_pkg.repository in filtered_repos: - packages[avail_pkg.name] = avail_pkg - current_package = [] - - return packages - - -@lru_cache(maxsize=128) -def _normalize_key_name(key: str) -> str: - return key.strip().lower().replace(' ', '_') - - -def _parse_package_output[PackageType: (AvailablePackage, LocalPackage)]( - package_meta: list[str], - cls: type[PackageType], -) -> PackageType: - package = {} - - for line in package_meta: - if ':' in line: - key, value = line.split(':', 1) - key = _normalize_key_name(key) - package[key] = value.strip() - - return cls.model_validate(package) diff --git a/examples/archinstall/archinstall/lib/pacman/__init__.py b/examples/archinstall/archinstall/lib/pacman/__init__.py deleted file mode 100644 index 68a74e6..0000000 --- a/examples/archinstall/archinstall/lib/pacman/__init__.py +++ /dev/null @@ -1,89 +0,0 @@ -import time -from collections.abc import Callable -from pathlib import Path - -from archinstall.lib.translationhandler import tr - -from ..exceptions import RequirementError -from ..general import SysCommand -from ..output import error, info, warn -from ..plugins import plugins -from .config import PacmanConfig - - -class Pacman: - def __init__(self, target: Path, silent: bool = False): - self.synced = False - self.silent = silent - self.target = target - - @staticmethod - def run(args: str, default_cmd: str = 'pacman') -> SysCommand: - """ - A centralized function to call `pacman` from. - It also protects us from colliding with other running pacman sessions (if used locally). - The grace period is set to 10 minutes before exiting hard if another pacman instance is running. - """ - pacman_db_lock = Path('/var/lib/pacman/db.lck') - - if pacman_db_lock.exists(): - warn(tr('Pacman is already running, waiting maximum 10 minutes for it to terminate.')) - - started = time.time() - while pacman_db_lock.exists(): - time.sleep(0.25) - - if time.time() - started > (60 * 10): - error(tr('Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall.')) - exit(1) - - return SysCommand(f'{default_cmd} {args}') - - def ask(self, error_message: str, bail_message: str, func: Callable, *args, **kwargs) -> None: # type: ignore[no-untyped-def, type-arg] - while True: - try: - func(*args, **kwargs) - break - except Exception as err: - error(f'{error_message}: {err}') - if not self.silent and input('Would you like to re-try this download? (Y/n): ').lower().strip() in 'y': - continue - raise RequirementError(f'{bail_message}: {err}') - - def sync(self) -> None: - if self.synced: - return - self.ask( - 'Could not sync a new package database', - 'Could not sync mirrors', - self.run, - '-Syy', - default_cmd='pacman', - ) - self.synced = True - - def strap(self, packages: str | list[str]) -> None: - self.sync() - if isinstance(packages, str): - packages = [packages] - - for plugin in plugins.values(): - if hasattr(plugin, 'on_pacstrap'): - if result := plugin.on_pacstrap(packages): - packages = result - - info(f'Installing packages: {packages}') - - self.ask( - 'Could not strap in packages', - 'Pacstrap failed. See /var/log/archinstall/install.log or above message for error details', - SysCommand, - f'pacstrap -C /etc/pacman.conf -K {self.target} {" ".join(packages)} --noconfirm', - peek_output=True, - ) - - -__all__ = [ - 'Pacman', - 'PacmanConfig', -] diff --git a/examples/archinstall/archinstall/lib/pacman/config.py b/examples/archinstall/archinstall/lib/pacman/config.py deleted file mode 100644 index 6b46824..0000000 --- a/examples/archinstall/archinstall/lib/pacman/config.py +++ /dev/null @@ -1,55 +0,0 @@ -import re -from pathlib import Path -from shutil import copy2 - -from ..models.packages import Repository - - -class PacmanConfig: - def __init__(self, target: Path | None): - self._config_path = Path('/etc') / 'pacman.conf' - self._config_remote_path: Path | None = None - - if target: - self._config_remote_path = target / 'etc' / 'pacman.conf' - - self._repositories: list[Repository] = [] - - def enable(self, repo: Repository | list[Repository]) -> None: - if not isinstance(repo, list): - repo = [repo] - - self._repositories += repo - - def apply(self) -> None: - if not self._repositories: - return - - repos_to_enable = [] - for repo in self._repositories: - if repo == Repository.Testing: - repos_to_enable.extend(['core-testing', 'extra-testing', 'multilib-testing']) - else: - repos_to_enable.append(repo.value) - - content = self._config_path.read_text().splitlines(keepends=True) - - for row, line in enumerate(content): - # Check if this is a commented repository section that needs to be enabled - match = re.match(r'^#\s*\[(.*)\]', line) - - if match and match.group(1) in repos_to_enable: - # uncomment the repository section line, properly removing # and any spaces - content[row] = re.sub(r'^#\s*', '', line) - - # also uncomment the next line (Include statement) if it exists and is commented - if row + 1 < len(content) and content[row + 1].lstrip().startswith('#'): - content[row + 1] = re.sub(r'^#\s*', '', content[row + 1]) - - # Write the modified content back to the file - with open(self._config_path, 'w') as f: - f.writelines(content) - - def persist(self) -> None: - if self._repositories and self._config_remote_path: - copy2(self._config_path, self._config_remote_path) diff --git a/examples/archinstall/archinstall/lib/plugins.py b/examples/archinstall/archinstall/lib/plugins.py deleted file mode 100644 index c4dd348..0000000 --- a/examples/archinstall/archinstall/lib/plugins.py +++ /dev/null @@ -1,115 +0,0 @@ -import hashlib -import importlib.util -import os -import sys -import urllib.parse -import urllib.request -from importlib import metadata -from pathlib import Path - -from .output import error, info, warn - -plugins = {} - - -# 1: List archinstall.plugin definitions -# 2: Load the plugin entrypoint -# 3: Initiate the plugin and store it as .name in plugins -for plugin_definition in metadata.entry_points().select(group='archinstall.plugin'): - plugin_entrypoint = plugin_definition.load() - - try: - plugins[plugin_definition.name] = plugin_entrypoint() - except Exception as err: - error( - f'Error: {err}', - f'The above error was detected when loading the plugin: {plugin_definition}', - ) - - -def _localize_path(path: Path) -> Path: - """ - Support structures for load_plugin() - """ - url = urllib.parse.urlparse(str(path)) - - if url.scheme and url.scheme in ('https', 'http'): - converted_path = Path(f'/tmp/{path.stem}_{hashlib.md5(os.urandom(12)).hexdigest()}.py') - - with open(converted_path, 'w') as temp_file: - temp_file.write(urllib.request.urlopen(url.geturl()).read().decode('utf-8')) - - return converted_path - else: - return path - - -def _import_via_path(path: Path, namespace: str | None = None) -> str: - if not namespace: - namespace = os.path.basename(path) - - if namespace == '__init__.py': - namespace = path.parent.name - - try: - spec = importlib.util.spec_from_file_location(namespace, path) - if spec and spec.loader: - imported = importlib.util.module_from_spec(spec) - sys.modules[namespace] = imported - spec.loader.exec_module(sys.modules[namespace]) - - return namespace - except Exception as err: - error( - f'Error: {err}', - f'The above error was detected when loading the plugin: {path}', - ) - - try: - del sys.modules[namespace] - except Exception: - pass - - return namespace - - -def load_plugin(path: Path) -> None: - namespace: str | None = None - parsed_url = urllib.parse.urlparse(str(path)) - info(f'Loading plugin from url {parsed_url}') - - # The Profile was not a direct match on a remote URL - if not parsed_url.scheme: - # Path was not found in any known examples, check if it's an absolute path - if os.path.isfile(path): - namespace = _import_via_path(path) - elif parsed_url.scheme in ('https', 'http'): - localized = _localize_path(path) - namespace = _import_via_path(localized) - - if namespace and namespace in sys.modules: - from .args import arch_config_handler - - # Version dependency via __archinstall__version__ variable (if present) in the plugin - # Any errors in version inconsistency will be handled through normal error handling if not defined. - version = arch_config_handler.config.version - - if version is not None: - version_major_and_minor = version.rsplit('.', 1)[0] - - if sys.modules[namespace].__archinstall__version__ < float(version_major_and_minor): - error(f'Plugin {sys.modules[namespace]} does not support the current Archinstall version.') - - # Locate the plugin entry-point called Plugin() - # This in accordance with the entry_points() from setup.cfg above - if hasattr(sys.modules[namespace], 'Plugin'): - try: - plugins[namespace] = sys.modules[namespace].Plugin() - info(f'Plugin {plugins[namespace]} has been loaded.') - except Exception as err: - error( - f'Error: {err}', - f'The above error was detected when initiating the plugin: {path}', - ) - else: - warn(f"Plugin '{path}' is missing a valid entry-point or is corrupt.") diff --git a/examples/archinstall/archinstall/lib/profile/__init__.py b/examples/archinstall/archinstall/lib/profile/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/examples/archinstall/archinstall/lib/profile/profile_menu.py b/examples/archinstall/archinstall/lib/profile/profile_menu.py deleted file mode 100644 index ca12246..0000000 --- a/examples/archinstall/archinstall/lib/profile/profile_menu.py +++ /dev/null @@ -1,239 +0,0 @@ -from __future__ import annotations - -from typing import override - -from archinstall.default_profiles.profile import GreeterType, Profile -from archinstall.lib.translationhandler import tr -from archinstall.tui.curses_menu import SelectMenu -from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.result import ResultType -from archinstall.tui.types import Alignment, FrameProperties, Orientation - -from ..hardware import GfxDriver -from ..interactions.system_conf import select_driver -from ..menu.abstract_menu import AbstractSubMenu -from ..models.profile import ProfileConfiguration - - -class ProfileMenu(AbstractSubMenu[ProfileConfiguration]): - def __init__( - self, - preset: ProfileConfiguration | None = None, - ): - if preset: - self._profile_config = preset - else: - self._profile_config = ProfileConfiguration() - - menu_optioons = self._define_menu_options() - self._item_group = MenuItemGroup(menu_optioons, checkmarks=True) - - super().__init__( - self._item_group, - self._profile_config, - allow_reset=True, - ) - - def _define_menu_options(self) -> list[MenuItem]: - return [ - MenuItem( - text=tr('Type'), - action=self._select_profile, - value=self._profile_config.profile, - preview_action=self._preview_profile, - key='profile', - ), - MenuItem( - text=tr('Graphics driver'), - action=self._select_gfx_driver, - value=self._profile_config.gfx_driver if self._profile_config.profile and self._profile_config.profile.is_graphic_driver_supported() else None, - preview_action=self._prev_gfx, - enabled=self._profile_config.profile.is_graphic_driver_supported() if self._profile_config.profile else False, - dependencies=['profile'], - key='gfx_driver', - ), - MenuItem( - text=tr('Greeter'), - action=lambda x: select_greeter(preset=x), - value=self._profile_config.greeter if self._profile_config.profile and self._profile_config.profile.is_greeter_supported() else None, - enabled=self._profile_config.profile.is_graphic_driver_supported() if self._profile_config.profile else False, - preview_action=self._prev_greeter, - dependencies=['profile'], - key='greeter', - ), - ] - - @override - def run(self, additional_title: str | None = None) -> ProfileConfiguration | None: - super().run(additional_title=additional_title) - return self._profile_config - - def _select_profile(self, preset: Profile | None) -> Profile | None: - profile = select_profile(preset) - - if profile is not None: - if not profile.is_graphic_driver_supported(): - self._item_group.find_by_key('gfx_driver').enabled = False - self._item_group.find_by_key('gfx_driver').value = None - else: - self._item_group.find_by_key('gfx_driver').enabled = True - self._item_group.find_by_key('gfx_driver').value = GfxDriver.AllOpenSource - - if not profile.is_greeter_supported(): - self._item_group.find_by_key('greeter').enabled = False - self._item_group.find_by_key('greeter').value = None - else: - self._item_group.find_by_key('greeter').enabled = True - self._item_group.find_by_key('greeter').value = profile.default_greeter_type - else: - self._item_group.find_by_key('gfx_driver').value = None - self._item_group.find_by_key('greeter').value = None - - return profile - - def _select_gfx_driver(self, preset: GfxDriver | None = None) -> GfxDriver | None: - driver = preset - profile: Profile | None = self._item_group.find_by_key('profile').value - - if profile: - if profile.is_graphic_driver_supported(): - driver = select_driver(preset=preset) - - if driver and 'Sway' in profile.current_selection_names(): - if driver.is_nvidia(): - header = tr('The proprietary Nvidia driver is not supported by Sway.') + '\n' - header += tr('It is likely that you will run into issues, are you okay with that?') + '\n' - - group = MenuItemGroup.yes_no() - group.focus_item = MenuItem.no() - group.default_item = MenuItem.no() - - result = SelectMenu[bool]( - group, - header=header, - allow_skip=False, - columns=2, - orientation=Orientation.HORIZONTAL, - alignment=Alignment.CENTER, - ).run() - - if result.item() == MenuItem.no(): - return preset - - return driver - - def _prev_gfx(self, item: MenuItem) -> str | None: - if item.value: - driver = item.get_value().value - packages = item.get_value().packages_text() - return f'Driver: {driver}\n{packages}' - return None - - def _prev_greeter(self, item: MenuItem) -> str | None: - if item.value: - return f'{tr("Greeter")}: {item.value.value}' - return None - - def _preview_profile(self, item: MenuItem) -> str | None: - profile: Profile | None = item.value - text = '' - - if profile: - if (sub_profiles := profile.current_selection) is not None: - text += tr('Selected profiles: ') - text += ', '.join([p.name for p in sub_profiles]) + '\n' - - if packages := profile.packages_text(include_sub_packages=True): - text += f'{packages}' - - if text: - return text - - return None - - -def select_greeter( - profile: Profile | None = None, - preset: GreeterType | None = None, -) -> GreeterType | None: - if not profile or profile.is_greeter_supported(): - items = [MenuItem(greeter.value, value=greeter) for greeter in GreeterType] - group = MenuItemGroup(items, sort_items=True) - - default: GreeterType | None = None - if preset is not None: - default = preset - elif profile is not None: - default_greeter = profile.default_greeter_type - default = default_greeter if default_greeter else None - - group.set_default_by_value(default) - - result = SelectMenu[GreeterType]( - group, - allow_skip=True, - frame=FrameProperties.min(tr('Greeter')), - alignment=Alignment.CENTER, - ).run() - - match result.type_: - case ResultType.Skip: - return preset - case ResultType.Selection: - return result.get_value() - case ResultType.Reset: - raise ValueError('Unhandled result type') - - return None - - -def select_profile( - current_profile: Profile | None = None, - header: str | None = None, - allow_reset: bool = True, -) -> Profile | None: - from archinstall.lib.profile.profiles_handler import profile_handler - - top_level_profiles = profile_handler.get_top_level_profiles() - - if header is None: - header = tr('This is a list of pre-programmed default_profiles') + '\n' - - items = [MenuItem(p.name, value=p) for p in top_level_profiles] - group = MenuItemGroup(items, sort_items=True) - group.set_selected_by_value(current_profile) - - result = SelectMenu[Profile]( - group, - header=header, - allow_reset=allow_reset, - allow_skip=True, - alignment=Alignment.CENTER, - frame=FrameProperties.min(tr('Main profile')), - ).run() - - match result.type_: - case ResultType.Reset: - return None - case ResultType.Skip: - return current_profile - case ResultType.Selection: - profile_selection = result.get_value() - select_result = profile_selection.do_on_select() - - if not select_result: - return None - - # we're going to reset the currently selected profile(s) to avoid - # any stale data laying around - match select_result: - case select_result.NewSelection: - profile_handler.reset_top_level_profiles(exclude=[profile_selection]) - current_profile = profile_selection - case select_result.ResetCurrent: - profile_handler.reset_top_level_profiles() - current_profile = None - case select_result.SameSelection: - pass - - return current_profile diff --git a/examples/archinstall/archinstall/lib/profile/profiles_handler.py b/examples/archinstall/archinstall/lib/profile/profiles_handler.py deleted file mode 100644 index cfe85de..0000000 --- a/examples/archinstall/archinstall/lib/profile/profiles_handler.py +++ /dev/null @@ -1,364 +0,0 @@ -from __future__ import annotations - -import importlib.util -import inspect -import sys -from collections import Counter -from functools import cached_property -from pathlib import Path -from tempfile import NamedTemporaryFile -from types import ModuleType -from typing import TYPE_CHECKING, NotRequired, TypedDict - -from archinstall.lib.translationhandler import tr - -from ...default_profiles.profile import GreeterType, Profile -from ..hardware import GfxDriver -from ..models.profile import ProfileConfiguration -from ..networking import fetch_data_from_url, list_interfaces -from ..output import debug, error, info - -if TYPE_CHECKING: - from ..installer import Installer - - -class ProfileSerialization(TypedDict): - main: NotRequired[str] - details: NotRequired[list[str]] - custom_settings: NotRequired[dict[str, dict[str, str | None]]] - path: NotRequired[str] - - -class ProfileHandler: - def __init__(self) -> None: - self._profiles: list[Profile] | None = None - - # special variable to keep track of a profile url configuration - # it is merely used to be able to export the path again when a user - # wants to save the configuration - self._url_path: str | None = None - - def to_json(self, profile: Profile | None) -> ProfileSerialization: - """ - Serialize the selected profile setting to JSON - """ - data: ProfileSerialization = {} - - if profile is not None: - data = { - 'main': profile.name, - 'details': [profile.name for profile in profile.current_selection], - 'custom_settings': {profile.name: profile.custom_settings for profile in profile.current_selection}, - } - - if self._url_path is not None: - data['path'] = self._url_path - - return data - - def parse_profile_config(self, profile_config: ProfileSerialization) -> Profile | None: - """ - Deserialize JSON configuration for profile - """ - profile: Profile | None = None - - # the order of these is important, we want to - # load all the default_profiles from url and custom - # so that we can then apply whatever was specified - # in the main/detail sections - if url_path := profile_config.get('path', None): - self._url_path = url_path - local_path = Path(url_path) - - if local_path.is_file(): - profiles = self._process_profile_file(local_path) - self.remove_custom_profiles(profiles) - self.add_custom_profiles(profiles) - else: - self._import_profile_from_url(url_path) - - # if custom := profile_config.get('custom', None): - # from archinstall.default_profiles.custom import CustomTypeProfile - # custom_types = [] - # - # for entry in custom: - # custom_types.append( - # CustomTypeProfile( - # entry['name'], - # entry['enabled'], - # entry.get('packages', []), - # entry.get('services', []) - # ) - # ) - # - # self.remove_custom_profiles(custom_types) - # self.add_custom_profiles(custom_types) - # - # # this doesn't mean it's actual going to be set as a selection - # # but we are simply populating the custom profile with all - # # possible custom definitions - # if custom_profile := self.get_profile_by_name('Custom'): - # custom_profile.set_current_selection(custom_types) - - if main := profile_config.get('main', None): - profile = self.get_profile_by_name(main) if main else None - - if not profile: - return None - - valid_sub_profiles: list[Profile] = [] - invalid_sub_profiles: list[str] = [] - details: list[str] = profile_config.get('details', []) - - if details: - for detail in filter(None, details): - # [2024-04-19] TODO: Backwards compatibility after naming change: https://github.com/archlinux/archinstall/pull/2421 - # 'Kde' is deprecated, remove this block in a future version - if detail == 'Kde': - detail = 'KDE Plasma' - - if sub_profile := self.get_profile_by_name(detail): - valid_sub_profiles.append(sub_profile) - else: - invalid_sub_profiles.append(detail) - - if invalid_sub_profiles: - info('No profile definition found: {}'.format(', '.join(invalid_sub_profiles))) - - custom_settings = profile_config.get('custom_settings', {}) - profile.current_selection = valid_sub_profiles - - for sub_profile in valid_sub_profiles: - sub_profile_settings = custom_settings.get(sub_profile.name, {}) - if sub_profile_settings: - sub_profile.custom_settings = sub_profile_settings - - return profile - - @property - def profiles(self) -> list[Profile]: - """ - List of all available default_profiles - """ - self._profiles = self._profiles or self._find_available_profiles() - return self._profiles - - @cached_property - def _local_mac_addresses(self) -> list[str]: - return list(list_interfaces()) - - def add_custom_profiles(self, profiles: Profile | list[Profile]) -> None: - if not isinstance(profiles, list): - profiles = [profiles] - - for profile in profiles: - self.profiles.append(profile) - - self._verify_unique_profile_names(self.profiles) - - def remove_custom_profiles(self, profiles: Profile | list[Profile]) -> None: - if not isinstance(profiles, list): - profiles = [profiles] - - remove_names = [p.name for p in profiles] - self._profiles = [p for p in self.profiles if p.name not in remove_names] - - def get_profile_by_name(self, name: str) -> Profile | None: - return next(filter(lambda x: x.name == name, self.profiles), None) - - def get_top_level_profiles(self) -> list[Profile]: - return [p for p in self.profiles if p.is_top_level_profile()] - - def get_server_profiles(self) -> list[Profile]: - return [p for p in self.profiles if p.is_server_type_profile()] - - def get_desktop_profiles(self) -> list[Profile]: - return [p for p in self.profiles if p.is_desktop_type_profile()] - - def get_custom_profiles(self) -> list[Profile]: - return [p for p in self.profiles if p.is_custom_type_profile()] - - def get_mac_addr_profiles(self) -> list[Profile]: - tailored = [p for p in self.profiles if p.is_tailored()] - return [t for t in tailored if t.name in self._local_mac_addresses] - - def install_greeter(self, install_session: 'Installer', greeter: GreeterType) -> None: - packages = [] - service = None - - match greeter: - case GreeterType.LightdmSlick: - packages = ['lightdm', 'lightdm-slick-greeter'] - service = ['lightdm'] - case GreeterType.Lightdm: - packages = ['lightdm', 'lightdm-gtk-greeter'] - service = ['lightdm'] - case GreeterType.Sddm: - packages = ['sddm'] - service = ['sddm'] - case GreeterType.Gdm: - packages = ['gdm'] - service = ['gdm'] - case GreeterType.Ly: - packages = ['ly'] - service = ['ly'] - case GreeterType.CosmicSession: - packages = ['cosmic-greeter'] - - if packages: - install_session.add_additional_packages(packages) - if service: - install_session.enable_service(service) - - # slick-greeter requires a config change - if greeter == GreeterType.LightdmSlick: - path = install_session.target.joinpath('etc/lightdm/lightdm.conf') - with open(path) as file: - filedata = file.read() - - filedata = filedata.replace('#greeter-session=example-gtk-gnome', 'greeter-session=lightdm-slick-greeter') - - with open(path, 'w') as file: - file.write(filedata) - - def install_gfx_driver(self, install_session: 'Installer', driver: GfxDriver) -> None: - debug(f'Installing GFX driver: {driver.value}') - - if driver in [GfxDriver.NvidiaOpenKernel, GfxDriver.NvidiaProprietary]: - headers = [f'{kernel}-headers' for kernel in install_session.kernels] - # Fixes https://github.com/archlinux/archinstall/issues/585 - install_session.add_additional_packages(headers) - - driver_pkgs = driver.gfx_packages() - pkg_names = [p.value for p in driver_pkgs] - install_session.add_additional_packages(pkg_names) - - def install_profile_config(self, install_session: 'Installer', profile_config: ProfileConfiguration) -> None: - profile = profile_config.profile - - if not profile: - return - - profile.install(install_session) - - if profile_config.gfx_driver and (profile.is_xorg_type_profile() or profile.is_desktop_profile()): - self.install_gfx_driver(install_session, profile_config.gfx_driver) - - if profile_config.greeter: - self.install_greeter(install_session, profile_config.greeter) - - def _import_profile_from_url(self, url: str) -> None: - """ - Import default_profiles from a url path - """ - try: - data = fetch_data_from_url(url) - b_data = bytes(data, 'utf-8') - - with NamedTemporaryFile(delete=False, suffix='.py') as fp: - fp.write(b_data) - filepath = Path(fp.name) - - 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]: - """ - Load all default_profiles defined in a module - """ - profiles = [] - for v in module.__dict__.values(): - if isinstance(v, type) and v.__module__ == module.__name__: - bases = inspect.getmro(v) - - if Profile in bases: - try: - cls_ = v() - if isinstance(cls_, Profile): - profiles.append(cls_) - except Exception: - debug(f'Cannot import {module}, it does not appear to be a Profile class') - - return profiles - - def _verify_unique_profile_names(self, profiles: list[Profile]) -> None: - """ - All profile names have to be unique, this function will verify - that the provided list contains only default_profiles with unique names - """ - counter = Counter([p.name for p in profiles]) - duplicates = [x for x in counter.items() if x[1] != 1] - - if len(duplicates) > 0: - err = tr('Profiles must have unique name, but profile definitions with duplicate name found: {}').format(duplicates[0][0]) - error(err) - sys.exit(1) - - def _is_legacy(self, file: Path) -> bool: - """ - Check if the provided profile file contains a - legacy profile definition - """ - with open(file) as fp: - for line in fp.readlines(): - if '__packages__' in line: - return True - return False - - def _process_profile_file(self, file: Path) -> list[Profile]: - """ - Process a file for profile definitions - """ - if self._is_legacy(file): - info(f'Cannot import {file} because it is no longer supported, please use the new profile format') - return [] - - if not file.is_file(): - info(f'Cannot find profile file {file}') - return [] - - name = file.name.removesuffix(file.suffix) - debug(f'Importing profile: {file}') - - try: - if spec := importlib.util.spec_from_file_location(name, file): - imported = importlib.util.module_from_spec(spec) - if spec.loader is not None: - spec.loader.exec_module(imported) - return self._load_profile_class(imported) - except Exception as e: - error(f'Unable to parse file {file}: {e}') - - return [] - - def _find_available_profiles(self) -> list[Profile]: - """ - Search the profile path for profile definitions - """ - profiles_path = Path(__file__).parents[2] / 'default_profiles' - profiles = [] - for file in profiles_path.glob('**/*.py'): - # ignore the abstract default_profiles class - if 'profile.py' in file.name: - continue - profiles += self._process_profile_file(file) - - self._verify_unique_profile_names(profiles) - return profiles - - def reset_top_level_profiles(self, exclude: list[Profile] = []) -> None: - """ - Reset all top level profile configurations, this is usually necessary - when a new top level profile is selected - """ - excluded_profiles = [p.name for p in exclude] - for profile in self.get_top_level_profiles(): - if profile.name not in excluded_profiles: - profile.reset() - - -profile_handler = ProfileHandler() diff --git a/examples/archinstall/archinstall/lib/storage.py b/examples/archinstall/archinstall/lib/storage.py deleted file mode 100644 index 68861ca..0000000 --- a/examples/archinstall/archinstall/lib/storage.py +++ /dev/null @@ -1,20 +0,0 @@ -# There's a few scenarios of execution: -# 1. In the git repository, where ./profiles_bck/ exist -# 2. When executing from a remote directory, but targeted a script that starts from the git repository -# 3. When executing as a python -m archinstall module where profiles_bck exist one step back for library reasons. -# (4. Added the ~/.config directory as an additional option for future reasons) -# -# And Keeping this in dict ensures that variables are shared across imports. -from typing import TYPE_CHECKING, NotRequired, TypedDict - -if TYPE_CHECKING: - from archinstall.lib.boot import Boot - from archinstall.lib.installer import Installer - - -class _StorageDict(TypedDict): - active_boot: NotRequired['Boot | None'] - installation_session: NotRequired['Installer'] - - -storage: _StorageDict = {} diff --git a/examples/archinstall/archinstall/lib/translationhandler.py b/examples/archinstall/archinstall/lib/translationhandler.py deleted file mode 100644 index 5a13e04..0000000 --- a/examples/archinstall/archinstall/lib/translationhandler.py +++ /dev/null @@ -1,183 +0,0 @@ -from __future__ import annotations - -import builtins -import gettext -import json -import os -from dataclasses import dataclass -from pathlib import Path -from typing import override - - -@dataclass -class Language: - abbr: str - name_en: str - translation: gettext.NullTranslations - translation_percent: int - translated_lang: str | None - - @property - def display_name(self) -> str: - name = self.name_en - return f'{name} ({self.translation_percent}%)' - - def is_match(self, lang_or_translated_lang: str) -> bool: - if self.name_en == lang_or_translated_lang: - return True - elif self.translated_lang == lang_or_translated_lang: - return True - return False - - def json(self) -> str: - return self.name_en - - -class TranslationHandler: - def __init__(self) -> None: - self._base_pot = 'base.pot' - self._languages = 'languages.json' - - self._total_messages = self._get_total_active_messages() - self._translated_languages = self._get_translations() - - @property - def translated_languages(self) -> list[Language]: - return self._translated_languages - - def _get_translations(self) -> list[Language]: - """ - Load all translated languages and return a list of such - """ - mappings = self._load_language_mappings() - defined_languages = self._provided_translations() - - languages = [] - - for short_form in defined_languages: - mapping_entry: dict[str, str] = next(filter(lambda x: x['abbr'] == short_form, mappings)) - abbr = mapping_entry['abbr'] - lang = mapping_entry['lang'] - translated_lang = mapping_entry.get('translated_lang', None) - - 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) - languages.append(language) - except FileNotFoundError as err: - raise FileNotFoundError(f"Could not locate language file for '{lang}': {err}") - - return languages - - def _load_language_mappings(self) -> list[dict[str, str]]: - """ - Load the mapping table of all known languages - """ - locales_dir = self._get_locales_dir() - languages = Path.joinpath(locales_dir, self._languages) - - with open(languages) as fp: - return json.load(fp) - - def _get_catalog_size(self, translation: gettext.NullTranslations) -> int: - """ - Get the number of translated messages for a translations - """ - # this is a very naughty way of retrieving the data but - # there's no alternative method exposed unfortunately - catalog = translation._catalog # type: ignore[attr-defined] - messages = {k: v for k, v in catalog.items() if k and v} - return len(messages) - - def _get_total_active_messages(self) -> int: - """ - Get total messages that could be translated - """ - locales = self._get_locales_dir() - with open(f'{locales}/{self._base_pot}') as fp: - lines = fp.readlines() - msgid_lines = [line for line in lines if 'msgid' in line] - - return len(msgid_lines) - 1 # don't count the first line which contains the metadata - - def get_language_by_name(self, name: str) -> Language: - """ - Get a language object by it's name, e.g. English - """ - try: - return next(filter(lambda x: x.name_en == name, self._translated_languages)) - except Exception: - raise ValueError(f'No language with name found: {name}') - - def get_language_by_abbr(self, abbr: str) -> Language: - """ - Get a language object by its abbreviation, e.g. en - """ - try: - return next(filter(lambda x: x.abbr == abbr, self._translated_languages)) - except Exception: - raise ValueError(f'No language with abbreviation "{abbr}" found') - - def activate(self, language: Language) -> None: - """ - Set the provided language as the current translation - """ - # The install() call has the side effect of assigning GNUTranslations.gettext to builtins._ - language.translation.install() - - def _get_locales_dir(self) -> Path: - """ - Get the locales directory path - """ - cur_path = Path(__file__).parent.parent - locales_dir = Path.joinpath(cur_path, 'locales') - return locales_dir - - def _provided_translations(self) -> list[str]: - """ - Get a list of all known languages - """ - locales_dir = self._get_locales_dir() - filenames = os.listdir(locales_dir) - - translation_files = [] - for filename in filenames: - if len(filename) == 2 or filename in ['pt_BR', 'zh-CN', 'zh-TW']: - translation_files.append(filename) - - return translation_files - - -class _DeferredTranslation: - def __init__(self, message: str): - self.message = message - - @override - def __str__(self) -> str: - if builtins._ is _DeferredTranslation: # type: ignore[attr-defined] - return self.message - - # builtins._ is changed from _DeferredTranslation to GNUTranslations.gettext after - # Language.activate() is called - return builtins._(self.message) # type: ignore[attr-defined] - - -def tr(message: str) -> str: - return str(_DeferredTranslation(message)) - - -builtins._ = _DeferredTranslation # type: ignore[attr-defined] - - -translation_handler = TranslationHandler() diff --git a/examples/archinstall/archinstall/lib/utils/__init__.py b/examples/archinstall/archinstall/lib/utils/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/examples/archinstall/archinstall/lib/utils/unicode.py b/examples/archinstall/archinstall/lib/utils/unicode.py deleted file mode 100644 index 402c14a..0000000 --- a/examples/archinstall/archinstall/lib/utils/unicode.py +++ /dev/null @@ -1,40 +0,0 @@ -import unicodedata -from functools import lru_cache - - -@lru_cache(maxsize=128) -def _is_wide_character(char: str) -> bool: - return unicodedata.east_asian_width(char) in 'FW' - - -def _count_wchars(string: str) -> int: - "Count the total number of wide characters contained in a string" - return sum(_is_wide_character(c) for c in string) - - -def unicode_ljust(string: str, width: int, fillbyte: str = ' ') -> str: - """Return a left-justified unicode string of length width. - >>> unicode_ljust('Hello', 15, '*') - 'Hello**********' - >>> unicode_ljust('你好', 15, '*') - '你好***********' - >>> unicode_ljust('안녕하세요', 15, '*') - '안녕하세요*****' - >>> unicode_ljust('こんにちは', 15, '*') - 'こんにちは*****' - """ - return string.ljust(width - _count_wchars(string), fillbyte) - - -def unicode_rjust(string: str, width: int, fillbyte: str = ' ') -> str: - """Return a right-justified unicode string of length width. - >>> unicode_rjust('Hello', 15, '*') - '**********Hello' - >>> unicode_rjust('你好', 15, '*') - '***********你好' - >>> unicode_rjust('안녕하세요', 15, '*') - '*****안녕하세요' - >>> unicode_rjust('こんにちは', 15, '*') - '*****こんにちは' - """ - return string.rjust(width - _count_wchars(string), fillbyte) diff --git a/examples/archinstall/archinstall/lib/utils/util.py b/examples/archinstall/archinstall/lib/utils/util.py deleted file mode 100644 index e72d5c7..0000000 --- a/examples/archinstall/archinstall/lib/utils/util.py +++ /dev/null @@ -1,140 +0,0 @@ -from pathlib import Path - -from archinstall.lib.translationhandler import tr -from archinstall.tui.curses_menu import EditMenu -from archinstall.tui.result import ResultType -from archinstall.tui.types import Alignment - -from ..models.users import Password -from ..output import FormattedOutput - - -def get_password( - text: str, - header: str | None = None, - allow_skip: bool = False, - preset: str | None = None, - skip_confirmation: bool = False, -) -> Password | None: - failure: str | None = None - - while True: - user_hdr = None - if failure is not None: - user_hdr = f'{header}\n{failure}\n' - elif header is not None: - user_hdr = header - - result = EditMenu( - text, - header=user_hdr, - alignment=Alignment.CENTER, - allow_skip=allow_skip, - default_text=preset, - hide_input=True, - ).input() - - if allow_skip: - if not result.has_item() or not result.text(): - return None - - password = Password(plaintext=result.text()) - - if skip_confirmation: - return password - - if header is not None: - confirmation_header = f'{header}{tr("Password")}: {password.hidden()}\n' - else: - confirmation_header = f'{tr("Password")}: {password.hidden()}\n' - - result = EditMenu( - tr('Confirm password'), - header=confirmation_header, - alignment=Alignment.CENTER, - allow_skip=False, - hide_input=True, - ).input() - - if password._plaintext == result.text(): - return password - - failure = tr('The confirmation password did not match, please try again') - - -def prompt_dir( - text: str, - header: str | None = None, - validate: bool = True, - must_exist: bool = True, - allow_skip: bool = False, - preset: str | None = None, -) -> Path | None: - def validate_path(path: str | None) -> str | None: - if path: - dest_path = Path(path) - - if must_exist: - if dest_path.exists() and dest_path.is_dir(): - return None - else: - return None - - return tr('Not a valid directory') - - if validate: - validate_func = validate_path - else: - validate_func = None - - result = EditMenu( - text, - header=header, - alignment=Alignment.CENTER, - allow_skip=allow_skip, - validator=validate_func, - default_text=preset, - ).input() - - match result.type_: - case ResultType.Skip: - return None - case ResultType.Selection: - if not result.text(): - return None - return Path(result.text()) - - return None - - -def is_subpath(first: Path, second: Path) -> bool: - """ - Check if _first_ a subpath of _second_ - """ - try: - first.relative_to(second) - return True - except ValueError: - return False - - -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 += FormattedOutput.as_columns(items, col) - # remove whitespaces on each row - text = '\n'.join([t.strip() for t in text.split('\n')]) - return text diff --git a/examples/archinstall/archinstall/locales/README.md b/examples/archinstall/archinstall/locales/README.md deleted file mode 100644 index 27e04de..0000000 --- a/examples/archinstall/archinstall/locales/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# Nationalization - -Archinstall supports multiple languages, which depend on translations coming from the community :) - -## Important Note -Before starting a new language translation be aware that a font for that language may not be -available on the ISO. - -Fonts that are using a different character set than Latin will not be displayed correctly. If those languages -want to be selected, then a proper font has to be set manually in the console. - -All available console fonts can be found in `/usr/share/kbd/consolefonts` and they -can be set with `setfont LatGrkCyr-8x16`. - -## Adding new languages - -New languages can be added simply by creating a new folder with the proper language abbreviation (see list `languages.json` if unsure). -Run the following command to create a new template for a language -``` -mkdir -p /LC_MESSAGES/ && touch /LC_MESSAGES/base.po -``` - -After that run the script `./locales_generator.sh ` it will automatically populate the new `base.po` file with the strings that -need to be translated into the new language. -For example the `base.po` might contain something like the following now -``` -#: lib/user_interaction.py:82 -msgid "Do you really want to abort?" -msgstr "" -``` - -The `msgid` is the identifier of the string in the code as well as the default text to be displayed, meaning that if no -translation is provided for a language then this is the text that is going to be shown. - -## Perform translations - -Firstly run the script `./locales_generator.sh ` to update `base.po` to the latest. - -To perform translations for a language, the file `base.po` can be edited manually, or the neat `poedit` can be used (https://poedit.net/). -If editing the file manually, write the translation in the `msgstr` part - -``` -#: lib/user_interaction.py:82 -msgid "Do you really want to abort?" -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 :) diff --git a/examples/archinstall/archinstall/locales/ar/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/ar/LC_MESSAGES/base.mo deleted file mode 100644 index 0ccaa92..0000000 Binary files a/examples/archinstall/archinstall/locales/ar/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/ar/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/ar/LC_MESSAGES/base.po deleted file mode 100644 index 1489be3..0000000 --- a/examples/archinstall/archinstall/locales/ar/LC_MESSAGES/base.po +++ /dev/null @@ -1,1868 +0,0 @@ -# Header entry was created by Lokalize. -# -# zer0-x, 2022. -# SPDX-FileCopyrightText: 2024 Omar TS -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2024-11-22 13:44+0100\n" -"Last-Translator: Omar TS \n" -"Language-Team: Arabic \n" -"Language: ar\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" -"X-Generator: Lokalize 24.08.3\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] مِلَف سِجِل أُنشِأ هُنا: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " يُرجى تسليم تقرير عن هذا الخلل (مع المِلَف) إلى https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "هل تُريدُ حقًا إجهاضَ العَملِيَّة؟" - -msgid "And one more time for verification: " -msgstr "ومرة أخرى للتحقق: " - -msgid "Would you like to use swap on zram?" -msgstr "هل تريد استخدام swap أو zram؟" - -msgid "Desired hostname for the installation: " -msgstr "اسم المضيف المُراد للتثبيت: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "اسم المتستخدم لأجل المستخدم الخارِق المطلوب مع امتيازات sudo: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "أي مستخدمين إضافيين للتثبيت (اتركه فارغًا لعدم وجود مستخدمين): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "هل يجب أن يكون هذا المستخدم خارقا (sudoer)؟" - -msgid "Select a timezone" -msgstr "حدِّد منطقة زمنية" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "هل ترغب في استخدام GRUB كمُحمّل إقلاع بدلاً من systemd-boot؟" - -msgid "Choose a bootloader" -msgstr "اختر مُحمّل الإقلاع" - -msgid "Choose an audio server" -msgstr "اختر خادِم صوتيات" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "فقط الحزم مثل base وbase-devel وlinux وlinux-firmware وefibootmgr و حِزم مِلف اختيارية سوف تُثَبَّت." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "إذا كنت ترغب في متصفح الويب ، مثل Firefox أو chromium، فيمكنك تحديده في موضِع الكتابة التالي." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "اكتب حزمًا إضافية لتثبيتها (تُفصَل بالمسافات، اتركها فارغة للتخطي): " - -msgid "Copy ISO network configuration to installation" -msgstr "انسخ إعداد شبكة الـISO للتثبيت" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "استخدم مُدير الشبكة (ضروري لإعداد الإنترنت باستخدام واجهة رسومية في جنوم و كيدي)" - -msgid "Select one network interface to configure" -msgstr "حدِّد واجهة شبكة واحدة للإعداد" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "حدد الوضع المراد تهيئته لـ\"{}\" أو تخطى لاستخدام الوضع الافتراضي \"{}\"" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "أدخِل الIP مع تجزئة الشبكة لـ{} (على سبيل المثال: 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "أدخل عنوان IP الخاص بالبوابة (جهاز التوجيه) أو اتركه فارغاً لعدم وجود عنوان IP: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "أدخل خوادم DNS الخاصة بك (يجب أن تكون مفصولة بمسافات، أو فارغة في حالة عدم وجود خوادم): " - -msgid "Select which filesystem your main partition should use" -msgstr "حدد نظام الملفات الذي يجب أن يستخدمه القسم الرئيسي الخاص بك" - -msgid "Current partition layout" -msgstr "تخطيط القسم الحالي" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"حدد ما يجب القيام به باستخدام\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "إدخال نوع نظام الملفات المطلوب للقسم" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "أدخل نقطة البداية (بوحدات مجزأة: s، GB، %، إلخ؛ default: {}): " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "أدخل موقع النهاية (بوحدات مجزأة: s، GB، %، إلخ؛ على سبيل المثال: {}): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "تحتوي {} على أقسام مدرجة في قائمة الانتظار، سيؤدي ذلك إلى إزالتها، هل أنت متأكد؟" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"حدد حسب الفهرس الأقسام المراد حذفها" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"اختر حسب الفهرس القسم الذي تريد تحميله حيث" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * نقاط تحميل القسم هي نسبية داخل التثبيت، سيكون الإقلاع /boot كمثال. " - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "حدد مكان تحميل القسم (اتركه فارغاً لإزالة نقطة التحميل): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"حدد القسم المراد إخفاءه للتهيئة" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"حدد القسم المراد وضع علامة على أنه مشفر" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"حدد القسم المراد وضع علامة على أنه قابل للإقلاع" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"حدد القسم المراد وضع علامة على أنه قابل للتمهيد" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "أدخل نوع نظام الملفات المطلوب للقسم: " - -msgid "Archinstall language" -msgstr "لغات Archinstall" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "امسح جميع محركات الأقراص المحددة واستخدم تخطيط القسم الافتراضي الأفضل من حيث الجهد" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "حدد ما يجب فعله بكل محرك أقراص على حدة (متبوعًا باستخدام القسم)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "حدد ما ترغب في القيام به مع أجهزة الكتلة المحددة" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "هذه قائمة بالملفات الشخصية المبرمجة مسبقاً، قد تسهل تثبيت أشياء مثل بيئات سطح المكتب" - -msgid "Select keyboard layout" -msgstr "تحديد تخطيط لوحة المفاتيح" - -msgid "Select one of the regions to download packages from" -msgstr "اختر إحدى المناطق لتنزيل الحزم منها" - -msgid "Select one or more hard drives to use and configure" -msgstr "حدد محرك أقراص ثابت واحد أو أكثر لاستخدامه وإعداده" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "للحصول على أفضل توافق مع أجهزة AMD الخاصة بك، قد ترغب في استخدام إما خيارات جميع المصادر المفتوحة المصدر أو AMD / ATI." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "للحصول على أفضل توافق مع أجهزة Intel الخاصة بك، قد ترغب في استخدام إما جميع الخيارات مفتوحة المصدر أو خيارات Intel.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "للحصول على أفضل توافق مع أجهزة Nvidia الخاصة بك، قد ترغب في استخدام برنامج التشغيل الخاص ب Nvidia.\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"حدد برنامج تشغيل رسومات أو اتركه فارغاً لتثبيت جميع برامج التشغيل مفتوحة المصدر" - -msgid "All open-source (default)" -msgstr "جميعها مفتوحة المصدر (افتراضي)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "اختر النواة التي تريد استخدامها أو اتركها فارغة للإعداد الافتراضي \"{}\"" - -msgid "Choose which locale language to use" -msgstr "اختر اللغة المحلية التي تريد استخدامها" - -msgid "Choose which locale encoding to use" -msgstr "اختر ترميز الإعدادات المحلية المراد استخدامها" - -msgid "Select one of the values shown below: " -msgstr "اختر إحدى القيم الموضحة أدناه: " - -msgid "Select one or more of the options below: " -msgstr "حدد واحداً أو أكثر من الخيارات أدناه: " - -msgid "Adding partition...." -msgstr "إضافة قسم...." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "تحتاج إلى إدخال نوع fs صالح من أجل المتابعة. انظر 'man parted' لمعرفة نوع fs صالح." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "خطأ: نتج عن إدراج ملفات التعريف على عنوان URL \"{}\":" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "خطأ: تعذر فك تشفير نتيجة \"{}\" كنتيجة JSON:" - -msgid "Keyboard layout" -msgstr "تخطيط لوحة المفاتيح" - -msgid "Mirror region" -msgstr "منطقة المرايا" - -msgid "Locale language" -msgstr "لغة الإعدادات المحلية" - -msgid "Locale encoding" -msgstr "ترميز الإعدادات المحلية" - -msgid "Drive(s)" -msgstr "محرك (أو محركات)" - -msgid "Disk layout" -msgstr "تخطيط القرص" - -msgid "Encryption password" -msgstr "كلمة سر التشفير" - -msgid "Swap" -msgstr "ذاكرة التبديل(Swap)" - -msgid "Bootloader" -msgstr "محمل الإقلاع" - -msgid "Root password" -msgstr "كلمة مرور الجذر" - -msgid "Superuser account" -msgstr "حساب المستخدم المتميز" - -msgid "User account" -msgstr "حساب المستخدم" - -msgid "Profile" -msgstr "الملف الشخصي" - -msgid "Audio" -msgstr "الصوت" - -msgid "Kernels" -msgstr "الأنوية" - -msgid "Additional packages" -msgstr "الباقات الإضافية" - -msgid "Network configuration" -msgstr "ضبط الشبكة" - -msgid "Automatic time sync (NTP)" -msgstr "المزامنة التلقائية للوقت (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "تثبيت ({} الإعداد(ات) مفقودة)" - -msgid "" -"You decided to skip harddrive selection\n" -"and will use whatever drive-setup is mounted at {} (experimental)\n" -"WARNING: Archinstall won't check the suitability of this setup\n" -"Do you wish to continue?" -msgstr "" -"قررت تخطي اختيار القرص الصلب\n" -"وستستخدم أي إعداد لمحرك الأقراص مثبت على {} (تجريبي)\n" -"تحذير: لن يتحقق برنامج Archinstall من ملاءمة هذا الإعداد\n" -"هل ترغب في المتابعة؟" - -msgid "Re-using partition instance: {}" -msgstr "إعادة استخدام مثيل القسم: {}" - -msgid "Create a new partition" -msgstr "أنشئ قسماً جديداً" - -msgid "Delete a partition" -msgstr "احذف قسماً" - -msgid "Clear/Delete all partitions" -msgstr "مسح/حذف جميع الأقسام" - -msgid "Assign mount-point for a partition" -msgstr "تعيين نقطة تثبيت لقسم" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "وضع علامة/إلغاء وضع علامة على قسم ليتم تهيئته (مسح البيانات)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "وضع علامة/إلغاء وضع علامة على قسم على أنه مشفر" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "تحديد/إلغاء تحديد قسم على أنه قابل للإقلاع (تلقائي ل /boot)" - -msgid "Set desired filesystem for a partition" -msgstr "تعيين نظام الملفات المطلوب للقسم" - -msgid "Abort" -msgstr "إلغاء" - -msgid "Hostname" -msgstr "اسم المُضيف" - -msgid "Not configured, unavailable unless setup manually" -msgstr "غير مهيأ، غير متوفر ما لم يتم إعداده يدوياً" - -msgid "Timezone" -msgstr "المنطقة الزمنية" - -msgid "Set/Modify the below options" -msgstr "تعيين/تعديل الخيارات التالية" - -msgid "Install" -msgstr "التثبيت" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "استخدم ESC لتخطي\n" - -msgid "Suggest partition layout" -msgstr "اقتراح تخطيط التقسيم" - -msgid "Enter a password: " -msgstr "أدخل كلمة مرور: " - -msgid "Enter a encryption password for {}" -msgstr "أدخل كلمة مرور تشفير لـ {}" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "أدخل كلمة مرور تشفير القرص (اتركها فارغة لعدم وجود تشفير): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "أدخل كلمة مرور تشفير القرص (اتركها فارغة لعدم استخدام التشفير): " - -msgid "Enter root password (leave blank to disable root): " -msgstr "أدخل كلمة مرور الجذر (اتركها فارغة لتعطيل الجذر): " - -msgid "Password for user \"{}\": " -msgstr "كلمة المرور للمستخدم \"{}\": " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "التحقق من وجود حزم إضافية (قد يستغرق ذلك بضع ثوانٍ)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "هل ترغب في استخدام المزامنة التلقائية للوقت (NTP) مع خوادم الوقت الافتراضية؟\n" - -msgid "" -"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" -"For more information, please check the Arch wiki" -msgstr "" -"قد تكون هناك حاجة إلى وقت الأجهزة وخطوات أخرى بعد التكوين حتى يعمل NTP.\n" -"للمزيد من المعلومات، يُرجى مراجعة ويكي Arch" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "أدخل اسم مستخدم لإنشاء مستخدم إضافي (اتركه فارغاً للتخطي): " - -msgid "Use ESC to skip\n" -msgstr "استخدم ESC لتخطي\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -" اختر غرضًا من القائمة، وحدد أحد الإجراءات المتاحة لتنفيذه" - -msgid "Cancel" -msgstr "إلغاء" - -msgid "Confirm and exit" -msgstr "تأكيد وخروج" - -msgid "Add" -msgstr "إضافة" - -msgid "Copy" -msgstr "نسخ" - -msgid "Edit" -msgstr "تعديل" - -msgid "Delete" -msgstr "حذف" - -msgid "Select an action for '{}'" -msgstr "تحديد إجراء ل '{}'" - -msgid "Copy to new key:" -msgstr "نسخ إلى مفتاح جديد:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "نوع nic غير معروف: {}. القيم الممكنة هي {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"هذه هي الإعدادات التي اخترتها:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "باكمان يعمل بالفعل، وينتظر 10 دقائق كحد أقصى حتى ينتهي." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "باكمان يعمل بالفعل، ينتظر 10 دقائق كحد أقصى حتى ينتهي." - -msgid "Choose which optional additional repositories to enable" -msgstr "اختر المستودعات الإضافية الاختيارية التي تريد تمكينها" - -msgid "Add a user" -msgstr "إضافة مستخدم" - -msgid "Change password" -msgstr "تغيير كلمة المرور" - -msgid "Promote/Demote user" -msgstr "ترقية/خفض رتبة مستخدم" - -msgid "Delete User" -msgstr "حذف المستخدم" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"تعريف مستخدم جديد\n" - -msgid "User Name : " -msgstr "اسم المستخدم : " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "هل يجب أن يكون {} مستخدمًا خارقًا (سودو)؟" - -msgid "Define users with sudo privilege: " -msgstr "تعريف المستخدمين بامتياز sudo: " - -msgid "No network configuration" -msgstr "لا يوجد إعداد للشبكة" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "تعيين وحدات التخزين الفرعية المطلوبة على قسم btrfs" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"حدد القسم الذي تريد تعيين وحدات التخزين الفرعية عليه" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "إدارة وحدات تخزين btrfs الفرعية للقسم الحالي" - -msgid "No configuration" -msgstr "لا يوجد إعدادات" - -msgid "Save user configuration" -msgstr "حفظ إعدادات المستخدم" - -msgid "Save user credentials" -msgstr "حفظ بيانات اعتماد المستخدم" - -msgid "Save disk layout" -msgstr "حفظ تخطيط القرص" - -msgid "Save all" -msgstr "حفظ الكل" - -msgid "Choose which configuration to save" -msgstr "اختر الإعدادات التي تريد حفظها" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "أدخل مجلداً للإعدادات التي سيتم حفظها: " - -msgid "Not a valid directory: {}" -msgstr "ليس مجلدًا صالحًا: {}" - -msgid "The password you are using seems to be weak," -msgstr "يبدو أن كلمة المرور التي تستخدمها ضعيفة," - -msgid "are you sure you want to use it?" -msgstr "هل أنت متأكد من أنك تريد استخدامها؟" - -msgid "Optional repositories" -msgstr "المستودعات الاختيارية" - -msgid "Save configuration" -msgstr "حفظ الإعدادات" - -msgid "Missing configurations:\n" -msgstr "إعدادات مفقودة:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "يجب تحديد إما كلمة مرور الجذر أو على الأقل المستخدم المتميز" - -msgid "Manage superuser accounts: " -msgstr "إدارة حسابات المستخدمين المتميزين: " - -msgid "Manage ordinary user accounts: " -msgstr "إدارة حسابات المستخدمين العاديين: " - -msgid " Subvolume :{:16}" -msgstr " المجلد الفرعي :{:16} " - -msgid " mounted at {:16}" -msgstr " مثبتة في {:16} " - -msgid " with option {}" -msgstr " مع الخيار {} " - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -" املأ القيم المطلوبة لوحدة التخزين الفرعية الجديدة \n" - -msgid "Subvolume name " -msgstr "اسم وحدة التخزين الفرعية " - -msgid "Subvolume mountpoint" -msgstr "نقطة تحميل وحدة التخزين الفرعية" - -msgid "Subvolume options" -msgstr "خيارات وحدة التخزين الفرعية" - -msgid "Save" -msgstr "حفظ" - -msgid "Subvolume name :" -msgstr "اسم وحدة التخزين الفرعية :" - -msgid "Select a mount point :" -msgstr "حدد نقطة التثبيت :" - -msgid "Select the desired subvolume options " -msgstr "حدد خيارات وحدة التخزين الفرعية المطلوبة " - -msgid "Define users with sudo privilege, by username: " -msgstr "تحديد المستخدمين الذين لديهم امتياز sudo، حسب اسم المستخدم: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] تم إنشاء ملف سجل هنا: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "هل ترغب في استخدام وحدات التخزين الفرعية BTRFS ذات البنية الافتراضية؟" - -msgid "Would you like to use BTRFS compression?" -msgstr "هل ترغب في استخدام ضغط BTRFS؟" - -msgid "Would you like to create a separate partition for /home?" -msgstr "هل ترغب في إنشاء قسم منفصل لـ /home؟" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "لا تحتوي محركات الأقراص المحددة على الحد الأدنى من السعة المطلوبة للاقتراح التلقائي\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "الحد الأدنى لسعة القسم /home: {} جيجابايت\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "الحد الأدنى لسعة قسم Arch Linux: {} جيجابايت" - -msgid "Continue" -msgstr "متابعة" - -msgid "yes" -msgstr "نعم" - -msgid "no" -msgstr "لا" - -msgid "set: {}" -msgstr "حدد: {}" - -msgid "Manual configuration setting must be a list" -msgstr "يجب أن يكون إعداد التكوين اليدوي قائمة" - -msgid "No iface specified for manual configuration" -msgstr "لا يوجد وجه (iface) محدد للتكوين اليدوي" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "يتطلب تكوين nic اليدوي مع عدم وجود DHCP التلقائي عنوان IP" - -msgid "Add interface" -msgstr "إضافة واجهة" - -msgid "Edit interface" -msgstr "تعديل الواجهة" - -msgid "Delete interface" -msgstr "حذف الواجهة" - -msgid "Select interface to add" -msgstr "حدد واجهة لإضافتها" - -msgid "Manual configuration" -msgstr "ضبط يدوي" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "وضع علامة/إلغاء وضع علامة على قسم كقسم مضغوط (btrfs فقط)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "يبدو أن كلمة المرور التي تستخدمها ضعيفة، هل أنت متأكد من أنك تريد استخدامها؟" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "يوفر مجموعة مختارة من بيئات سطح المكتب ومديري نوافذ التجانب، مثل gnome و kde و sway" - -msgid "Select your desired desktop environment" -msgstr "حدد بيئة سطح المكتب التي تريدها" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "تثبيت أساسي جداً يسمح لك بتخصيص آرتش لينكس (Arch Linux) كما تراه مناسباً." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "يوفر مجموعة مختارة من حزم الخوادم المختلفة لتثبيتها وتمكينها، مثل httpd و nginx و mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "اختر الخوادم التي سيتم تثبيتها، إذا لم يكن هناك أي خوادم، فسيتم إجراء الحد الأدنى من التثبيت" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "تثبيت الحد الأدنى من النظام بالإضافة إلى إكسورج (xorg) وبرامج تشغيل الرسومات." - -msgid "Press Enter to continue." -msgstr "اضغط على Enter للمتابعة." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "هل ترغب في الانتقال (chroot) إلى التثبيت الذي تم إنشاؤه حديثاً وإجراء تهيئة ما بعد التثبيت؟" - -msgid "Are you sure you want to reset this setting?" -msgstr "هل أنت متأكد من رغبتك في إعادة ضبط هذا الإعداد؟" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "حدد محرك أقراص صلب واحد أو أكثر لاستخدامه وضبطه\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "أي تعديلات على الإعداد الحالي سيعيد ضبط تخطيط القرص!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "إذا قمت بإعادة تعيين اختيار القرص الصلب، فسيؤدي ذلك أيضًا إلى إعادة تعيين تخطيط القرص الحالي. هل أنت متأكد؟" - -msgid "Save and exit" -msgstr "الحفظ والخروج" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"تحتوي على أقسام في قائمة الانتظار، سيؤدي ذلك إلى إزالتها، هل أنت متأكد؟" - -msgid "No audio server" -msgstr "لا يوجد خادم صوت" - -msgid "(default)" -msgstr "(افتراضي)" - -msgid "Use ESC to skip" -msgstr "استخدم زر الهروب ESC للتخطي" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"استخدم CTRL+C لإعادة تعيين التحديد الحالي\n" -"\n" -"\n" - -msgid "Copy to: " -msgstr "نسخ إلى: " - -msgid "Edit: " -msgstr "تعديل: " - -msgid "Key: " -msgstr "مفتاح: " - -msgid "Edit {}: " -msgstr "تعديل {}: " - -msgid "Add: " -msgstr "أضف: " - -msgid "Value: " -msgstr "القيمة: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "يمكنك تخطي تحديد محرك أقراص وتقسيمه واستخدام أي إعدادات محرك أقراص مثبتة على /mnt (تجريبي)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "حدد أحد الأقراص أو تخطى واستخدم /mnt كافتراضي" - -msgid "Select which partitions to mark for formatting:" -msgstr "حدد الأقسام التي تريد وضع علامة عليها للتهيئة:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "استخدام HSM لإلغاء قفل محرك الأقراص المشفر" - -msgid "Device" -msgstr "جهاز" - -msgid "Size" -msgstr "حجم" - -msgid "Free space" -msgstr "مساحة خالية" - -msgid "Bus-type" -msgstr "نوع الناقلة" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "يجب تحديد إما كلمة مرور الجذر أو مستخدم واحد على الأقل بامتيازات سودو (sudo)" - -msgid "Enter username (leave blank to skip): " -msgstr "أدخل اسم المستخدم (اتركه فارغاً للتخطي): " - -msgid "The username you entered is invalid. Try again" -msgstr "اسم المستخدم الذي أدخلته غير صالح. حاول مرة أخرى" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "هل يجب أن يكون \"{}\" مستخدمًا خارقًا (sudo)؟" - -msgid "Select which partitions to encrypt" -msgstr "حدد الأقسام المراد تشفيرها" - -msgid "very weak" -msgstr "ضعيف جداً" - -msgid "weak" -msgstr "ضعيف" - -msgid "moderate" -msgstr "متوسط" - -msgid "strong" -msgstr "قوي" - -msgid "Add subvolume" -msgstr "إضافة حجم فرعي" - -msgid "Edit subvolume" -msgstr "تعديل الحجم الفرعي" - -msgid "Delete subvolume" -msgstr "حذف الحجم الفرعي" - -msgid "Configured {} interfaces" -msgstr "تهيئة {} الواجهات" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "يتيح هذا الخيار عدد التنزيلات المتوازية التي يمكن أن تحدث أثناء التثبيت" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"أدخل عدد التنزيلات المتوازية المراد تمكينها.\n" -" (أدخل قيمة تتراوح بين 1 إلى {})\n" -"ملاحظة: " - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - الحد الأقصى للقيمة : {} (يسمح بـ {} تنزيلات متوازية ، ويسمح بـ {} تنزيلات في المرة الواحدة)" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - الحد الأدنى للقيمة: 1 (يسمح بتنزيل متوازي واحد، ويسمح بتنزيلين في المرة الواحدة)" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - تعطيل/افتراضي: 0 (تعطيل التنزيل المتوازي، يسمح بتنزيل واحد فقط في كل مرة)" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "إدخال غير صالح! حاول مرة أخرى بإدخال صالح [1 إلى {max_downloads}، أو 0 لتعطيل]" - -msgid "Parallel Downloads" -msgstr "التنزيلات الموازية" - -msgid "ESC to skip" -msgstr "زر الهروب ESC للتخطي" - -msgid "CTRL+C to reset" -msgstr "CTRL+C لإعادة التعيين" - -msgid "TAB to select" -msgstr "TAB لتحديد" - -msgid "[Default value: 0] > " -msgstr "[القيمة الافتراضية: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "" -"لتتمكن من استخدام هذه الترجمة، يرجى تثبيت الخط يدوياً الذي يدعم اللغة.\n" -"To be able to use this translation, please install a font manually that supports the language." - -msgid "The font should be stored as {}" -msgstr "يجب تخزين الخط كـ {}" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "يتطلب أرشِنستال Archinstall امتيازات الجذر للتشغيل. انظر help-- للمزيد من المعلومات." - -msgid "Select an execution mode" -msgstr "تحديد وضع التنفيذ" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "تعذر جلب ملف التعريف من عنوان url المحدد: {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "يجب أن يكون لملفات التعريف (profile) اسم فريد، ولكن تم العثور على تعريفات ملفات التعريف (profile) ذات أسماء مكررة: {}" - -msgid "Select one or more devices to use and configure" -msgstr "حدد جهازاً واحداً أو أكثر لاستخدامه وإعداده" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "إذا قمت بإعادة تعيين تحديد الجهاز فسيؤدي ذلك أيضاً إلى إعادة تعيين تخطيط القرص الحالي. هل أنت متأكد؟" - -msgid "Existing Partitions" -msgstr "الأقسام الموجودة" - -msgid "Select a partitioning option" -msgstr "حدد خيار التقسيم" - -msgid "Enter the root directory of the mounted devices: " -msgstr "أدخل دليل الجذر للأجهزة المثبتة: " - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "الحد الأدنى لسعة القسم /home: {} جيجا بايت GiB \n" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "الحد الأدنى لسعة قسم آرش لينكس (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 "هذه قائمة بالملفات الشخصية المبرمجة مسبقاً_bck، قد تسهل تثبيت أشياء مثل بيئات سطح المكتب" - -msgid "Current profile selection" -msgstr "اختيار الملف الشخصي الحالي" - -msgid "Remove all newly added partitions" -msgstr "إزالة جميع الأقسام المضافة حديثاً" - -msgid "Assign mountpoint" -msgstr "تعيين نقطة التحميل" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "وضع او إلغاء علامة تحديد التهيئة (مسح البيانات)" - -msgid "Mark/Unmark as bootable" -msgstr "وضع او إلغاء علامة قابل للإقلاع" - -msgid "Change filesystem" -msgstr "تغيير نظام الملفات" - -msgid "Mark/Unmark as compressed" -msgstr "وضع او إلغاء علامة كمضغوط" - -msgid "Set subvolumes" -msgstr "تعيين المجلدات الفرعية" - -msgid "Delete partition" -msgstr "حذف القسم" - -msgid "Partition" -msgstr "تقسيم" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "هذا القسم مشفر حالياً، ولتهيئة نظام الملفات يجب تحديد نظام الملفات" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "نقاط تحميل القسم تكون نسبية داخل التثبيت، سيكون الإقلاع /boot كمثال." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "إذا تم تعيين نقطة التثبيت /boot، فسيتم وضع علامة على القسم أيضًا على أنه قابل للإقلاع." - -msgid "Mountpoint: " -msgstr " نقطة التثبيت: " - -msgid "Current free sectors on device {}:" -msgstr "القطاعات الخالية الحالية على الجهاز {}:" - -msgid "Total sectors: {}" -msgstr "إجمالي القطاعات: {}" - -msgid "Enter the start sector (default: {}): " -msgstr "أدخل قطاع البداية (افتراضي: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "أدخل قطاع نهاية القسم (النسبة المئوية أو رقم الكتلة، الافتراضي: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "سيؤدي ذلك إلى إزالة جميع الأقسام المضافة حديثاً، متابعة؟" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "إدارة التقسيم: {}" - -#, python-brace-format -msgid "Total length: {}" -msgstr "الطول الإجمالي: {}" - -msgid "Encryption type" -msgstr "نوع التشفير" - -msgid "Iteration time" -msgstr "" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "" - -msgid "Higher values increase security but slow down boot time" -msgstr "" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "" - -msgid "Iteration time cannot be empty" -msgstr "" - -msgid "Iteration time must be at least 100ms" -msgstr "" - -msgid "Iteration time must be at most 120000ms" -msgstr "" - -msgid "Please enter a valid number" -msgstr "" - -msgid "Partitions" -msgstr "التقسيمات" - -msgid "No HSM devices available" -msgstr "لا توجد أجهزة HSM متوفرة" - -msgid "Partitions to be encrypted" -msgstr "الأقسام المراد تشفيرها" - -msgid "Select disk encryption option" -msgstr "حدد خيار تشفير القرص" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "اختر جهاز FIDO2 لاستخدامه في HSM" - -msgid "Use a best-effort default partition layout" -msgstr "استخدم أفضل تخطيط افتراضي للتقسيم الافتراضي" - -msgid "Manual Partitioning" -msgstr "التقسيم اليدوي" - -msgid "Pre-mounted configuration" -msgstr "تهيئة مثبتة مسبقاً" - -msgid "Unknown" -msgstr "غير معروف" - -msgid "Partition encryption" -msgstr "تشفير التقسيم" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr " ! تهيئة {} في " - -msgid "← Back" -msgstr "رجوع ← " - -msgid "Disk encryption" -msgstr "تشفير القرص " - -msgid "Configuration" -msgstr "الإعداد " - -msgid "Password" -msgstr "كلمة المرور" - -msgid "All settings will be reset, are you sure?" -msgstr "ستتم إعادة ضبط جميع الإعدادات، هل أنت متأكد؟" - -msgid "Back" -msgstr "رجوع" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "يرجى اختيار المُرحِّب الذي سيتم تثبيته للملفات الشخصية المختارة: {}" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "نوع البيئة: {}" - -msgid "The proprietary Nvidia driver is not supported by Sway. It is likely that you will run into issues, are you okay with that?" -msgstr "برنامج تشغيل Nvidia الخاص غير مدعوم من قبل Sway. من المحتمل أنك ستواجه مشاكل، هل أنت موافق على ذلك؟" - -msgid "Installed packages" -msgstr "الحزم المثبّتة" - -msgid "Add profile" -msgstr "إضافة ملف شخصي" - -msgid "Edit profile" -msgstr "تعديل الملف الشخصي" - -msgid "Delete profile" -msgstr "حذف الملف الشخصي" - -msgid "Profile name: " -msgstr "اسم الملف الشخصي: " - -msgid "The profile name you entered is already in use. Try again" -msgstr "اسم الملف الشخصي الذي أدخلته قيد الاستخدام بالفعل. حاول مرة أخرى" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "اكتب حزمًا إضافية لتثبيتها (تُفصَل بالمسافات، اتركها فارغة للتخطي): " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "الخدمات التي سيتم تمكينها مع ملف التعريف هذا (مفصولة بمسافة، اتركها فارغة للتخطي): " - -msgid "Should this profile be enabled for installation?" -msgstr "هل يجب تمكين ملف التعريف هذا للتثبيت؟" - -msgid "Create your own" -msgstr "اصنع بنفسك" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"حدد برنامج تشغيل رسومات أو اتركه فارغاً لتثبيت جميع برامج التشغيل مفتوحة المصدر" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "يحتاج Sway إلى الوصول إلى مقعدك (مجموعة من الأجهزة مثل لوحة المفاتيح والماوس وغيرها)" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"حدد خياراً لمنح Sway إمكانية الوصول إلى أجهزتك" - -msgid "Graphics driver" -msgstr "مشغل الرسومات" - -msgid "Greeter" -msgstr "المُرحِّب" - -msgid "Please chose which greeter to install" -msgstr "يرجى اختيار المُرحِّب الذي سيتم تثبيته" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "هذه قائمة بالملفات الافتراضية المبرمجة مسبقًا" - -msgid "Disk configuration" -msgstr "ضبط القرص" - -msgid "Profiles" -msgstr "الملفات الشخصية" - -msgid "Finding possible directories to save configuration files ..." -msgstr "البحث عن الدلائل المحتملة لحفظ ملفات الإعدادات ..." - -msgid "Select directory (or directories) for saving configuration files" -msgstr "تحديد مجلد (أو مجلدات) لحفظ ملفات التكوين" - -msgid "Add a custom mirror" -msgstr "إضافة مرآة مخصصة" - -msgid "Change custom mirror" -msgstr "تغيير المرآة المخصصة" - -msgid "Delete custom mirror" -msgstr "حذف المرآة المخصصة" - -msgid "Enter name (leave blank to skip): " -msgstr "أدخل الاسم (اترك الاسم فارغاً للتخطي): " - -msgid "Enter url (leave blank to skip): " -msgstr "أدخل عنوان url (اتركه فارغاً للتخطي): " - -msgid "Select signature check option" -msgstr "حدد خيار التحقق من التوقيع" - -msgid "Select signature option" -msgstr "حدد خيار التوقيع" - -msgid "Custom mirrors" -msgstr "مرايا مخصصة" - -msgid "Defined" -msgstr "محدد" - -msgid "Save user configuration (including disk layout)" -msgstr "حفظ إعدادات المستخدم (بما في ذلك تخطيط القرص)" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"أدخل مجلداً للتكوين (التهيئة (التكوينات) المراد حفظها (تم تمكين الإكمال بtab)\n" -"حفظ المجلد: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"هل تريد حفظ ملف (ملفات) الضبط {} في الموقع التالي؟\n" -"\n" -"{}" - -msgid "Saving {} configuration files to {}" -msgstr "حفظ {} ملفات الإعدادات إلى {}" - -msgid "Mirrors" -msgstr "المرايا" - -msgid "Mirror regions" -msgstr "مناطق المرايا" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - الحد الأقصى للقيمة : {} (يسمح بـ {} تنزيلات متوازية ، ويسمح بـ {ماكس_تنزيلات + 1} تنزيلات في المرة الواحدة)" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "إدخال غير صالح! حاول مرة أخرى باستخدام إدخال صحيح [1 إلى {}، أو 0 لتعطيل]" - -msgid "Locales" -msgstr "المحلية (Locales)" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "استخدم مُدير الشبكة NetworkManager (ضروري لإعداد الإنترنت باستخدام واجهة رسومية في جنوم و كيدي)" - -msgid "Total: {} / {}" -msgstr "الإجمالي: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "يمكن إرفاق جميع القيم المدخلة بوحدة: B، KB، KB، KiB، MB، MiB..." - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "إذا لم يتم توفير أي وحدة، يتم تفسير القيمة على أنها قطاعات" - -msgid "Enter start (default: sector {}): " -msgstr "أدخل البداية (افتراضي: القطاع {}): " - -msgid "Enter end (default: {}): " -msgstr "أدخل النهاية (افتراضي: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "غير قادر على تحديد أجهزة fido2. هل تم تثبيت libfido2؟" - -msgid "Path" -msgstr "المسار (Path)" - -msgid "Manufacturer" -msgstr "الشركة المصنعة" - -msgid "Product" -msgstr "المنتوج" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "تكوين غير صالح: {error}" - -msgid "Type" -msgstr "النوع" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "يتيح هذا الخيار عدد التنزيلات المتوازية التي يمكن أن تحدث أثناء تنزيل الحزمة" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"أدخل عدد التنزيلات المتوازية المراد تمكينها.\n" -"\n" -"ملاحظة:\n" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - الحد الأقصى للقيمة الموصى بها: {} (يسمح بـ {} تنزيلات متوازية في المرة الواحدة)" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - تعطيل/افتراضي: 0 (تعطيل التنزيل المتوازي، يسمح بتنزيل واحد فقط في كل مرة)\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "إدخال غير صالح! حاول مرة أخرى باستخدام إدخال صحيح [أو 0 لتعطيل]" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "تحتاج Hyprland إلى الوصول إلى مقعدك (مجموعة من الأجهزة مثل لوحة المفاتيح والفأرة وغيرها)" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"حدد خيارًا لمنح Hyprland إمكانية الوصول إلى أجهزتك" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "يمكن إرفاق جميع القيم المدخلة بوحدة: ٪، ب، كيلوبايت، كيلوبايت، كيلوبايت، ميغابايت، ميغابايت، ميغابايت..." - -msgid "Would you like to use unified kernel images?" -msgstr "هل ترغب في استخدام صور النواة الموحدة؟" - -msgid "Unified kernel images" -msgstr "صور النواة الموحدة" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "في انتظار اكتمال مزامنة الوقت (عرض timedatectl timedatectl)." - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "عدم اكتمال مزامنة الوقت، أثناء الانتظار - راجع المستندات لمعرفة الحلول البديلة: https://archinstall.readthedocs.io/" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "تخطي انتظار المزامنة التلقائية للوقت (قد يتسبب ذلك في حدوث مشكلات إذا كان الوقت غير متزامن أثناء التثبيت)" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "في انتظار اكتمال مزامنة حلقة مفاتيح أرش لينكس (archlinux-keyring-wkd-sync)." - -msgid "Selected profiles: " -msgstr "ملفات تعريف مختارة: " - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "عدم اكتمال مزامنة الوقت، أثناء انتظارك - راجع المستندات لمعرفة الحلول: https://archinstall.readthedocs.io/" - -msgid "Mark/Unmark as nodatacow" -msgstr "وضع علامة/إلغاء وضع علامة كـ nodatacow" - -msgid "Would you like to use compression or disable CoW?" -msgstr "هل ترغب في استخدام الضغط أو تعطيل CoW؟" - -msgid "Use compression" -msgstr "استخدام الضغط" - -msgid "Disable Copy-on-Write" -msgstr "تعطيل النسخ عند الكتابة" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "يوفر مجموعة مختارة من بيئات سطح المكتب ومديري نوافذ التجانب، مثل Gnome و KDE و Sway" - -#, python-brace-format -msgid "Configuration type: {}" -msgstr "نوع الإعداد: {}" - -msgid "LVM configuration type" -msgstr "نوع إعداد LVM" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "تشفير قرص LVM بأكثر من قسمين غير مدعوم حاليًا" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "استخدم مُدير الشبكة NetworkManager (ضروري لإعداد الإنترنت باستخدام واجهة رسومية في جنوم و كيدي)" - -msgid "Select a LVM option" -msgstr "حدد خيار LVM" - -msgid "Partitioning" -msgstr "تقسيم" - -msgid "Logical Volume Management (LVM)" -msgstr "إدارة الحجم المنطقي (LVM)" - -msgid "Physical volumes" -msgstr "أحجام فيزيائية" - -msgid "Volumes" -msgstr "أحجام" - -msgid "LVM volumes" -msgstr "أقسام LVM" - -msgid "LVM volumes to be encrypted" -msgstr "أقسام LVM المراد تشفيرها" - -msgid "Select which LVM volumes to encrypt" -msgstr "حدد أقسام LVM المراد تشفيرها" - -msgid "Default layout" -msgstr "التخطيط الافتراضي" - -msgid "No Encryption" -msgstr "لا تشفير" - -msgid "LUKS" -msgstr "LUKS" - -msgid "LVM on LUKS" -msgstr "LVM على LUKS" - -msgid "LUKS on LVM" -msgstr "LUKS على LVM" - -msgid "Yes" -msgstr "نعم" - -msgid "No" -msgstr "لا" - -msgid "Archinstall help" -msgstr "مساعدة Archinstall" - -msgid " (default)" -msgstr " (افتراضي)" - -msgid "Press Ctrl+h for help" -msgstr "اضغط على Ctrl+h للحصول على المساعدة" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "حدد خياراً لمنح Sway إمكانية الوصول إلى أجهزتك" - -msgid "Seat access" -msgstr "الوصول إلى المقعد" - -msgid "Mountpoint" -msgstr "نقطة الضمّ:" - -msgid "HSM" -msgstr "HSM" - -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "أدخل كلمة مرور تشفير القرص (اتركها فارغة لعدم وجود تشفير):" - -msgid "Disk encryption password" -msgstr "كلمة سر التشفير" - -msgid "Partition - New" -msgstr "تقسيم - جديد" - -msgid "Filesystem" -msgstr "نظام الملفات" - -msgid "Invalid size" -msgstr "الحجم غير صالح" - -msgid "Start (default: sector {}): " -msgstr "البداية (افتراضي: القطاع {}): " - -msgid "End (default: {}): " -msgstr "النهاية (افتراضي: {}): " - -msgid "Subvolume name" -msgstr "اسم وحدة التخزين الفرعية" - -msgid "Disk configuration type" -msgstr "نوع ضبط القرص" - -msgid "Root mount directory" -msgstr "دليل جذر الضم" - -msgid "Select language" -msgstr "حدد لغة" - -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "اكتب حزمًا إضافية لتثبيتها (تُفصَل بالمسافات، اتركها فارغة للتخطي):" - -msgid "Invalid download number" -msgstr "رقم التنزيل غير صالح" - -msgid "Number downloads" -msgstr "عدد التنزيلات" - -msgid "The username you entered is invalid" -msgstr "اسم المستخدم الذي أدخلته غير صالح." - -msgid "Username" -msgstr "اسم المستخدم" - -#, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "هل يجب أن يكون \"{}\" مستخدمًا خارقًا (sudo)؟\n" - -msgid "Interfaces" -msgstr "واجهات" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "تحتاج إلى إدخال IP صالح في وضع IP-config" - -msgid "Modes" -msgstr "وسائط" - -msgid "IP address" -msgstr "عنوان IP" - -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "أدخل عنوان IP الخاص بالبوابة (جهاز التوجيه) أو اتركه فارغاً لعدم وجود عنوان IP" - -msgid "Gateway address" -msgstr "عنوان البوابة" - -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "أدخل خوادم DNS الخاصة بك مفصولة بمسافات (اتركها فارغة في حالة عدم وجود خوادم)" - -msgid "DNS servers" -msgstr "خوادم DNS" - -msgid "Configure interfaces" -msgstr "تهيئة الواجهات" - -msgid "Kernel" -msgstr "النواة" - -msgid "UEFI is not detected and some options are disabled" -msgstr "لم يُكتشف UEFI وعطّلتْ بعض الخيارات" - -msgid "Info" -msgstr "معلومات" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "برنامج تشغيل Nvidia المملوك غير مدعوم من قبل Sway." - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "من المحتمل أنك ستواجه مشاكل، هل أنت موافق على ذلك؟" - -msgid "Main profile" -msgstr "الملف الشخصي" - -msgid "Confirm password" -msgstr "أكّد كلمة المرور" - -msgid "The confirmation password did not match, please try again" -msgstr "كلمة المرور التأكيدية غير متطابقة، يرجى المحاولة مرة أخرى" - -msgid "Not a valid directory" -msgstr "ليس دليلاً صالحًا" - -msgid "Would you like to continue?" -msgstr "هل ترغب في الاستمرار؟" - -msgid "Directory" -msgstr "دليل" - -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "أدخل دليلا للتكوين (التكوينات) المراد حفظها (مُكِّن الإكمال بـtab)" - -#, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "هل تريد حفظ ملف (ملفات) الضبط إلى {} ؟" - -msgid "Enabled" -msgstr "مفعّل" - -msgid "Disabled" -msgstr "معطّل" - -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "يُرجى تسليم تقرير عن هذا الخلل (مع المِلَف) إلى https://github.com/archlinux/archinstall/issues" - -msgid "Mirror name" -msgstr "اسم المرآة" - -msgid "Url" -msgstr "عنوان URL" - -msgid "Select signature check" -msgstr "حدد خيار التحقق من التوقيع" - -msgid "Select execution mode" -msgstr "حدد وضع التنفيذ" - -msgid "Press ? for help" -msgstr "اضغط ؟ للمساعدة" - -#, fuzzy -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"حدد خيارًا لمنح Hyprland إمكانية الوصول إلى أجهزتك" - -#, fuzzy -msgid "Additional repositories" -msgstr "المستودعات الاختيارية" - -msgid "NTP" -msgstr "" - -msgid "Swap on zram" -msgstr "" - -msgid "Name" -msgstr "" - -#, fuzzy -msgid "Signature check" -msgstr "حدد خيار التحقق من التوقيع" - -#, fuzzy, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "القطاعات الخالية الحالية على الجهاز {}:" - -#, fuzzy, python-brace-format -msgid "Size: {} / {}" -msgstr "الإجمالي: {} / {}" - -#, fuzzy, python-brace-format -msgid "Size (default: {}): " -msgstr "النهاية (افتراضي: {}): " - -#, fuzzy -msgid "HSM device" -msgstr "جهاز" - -msgid "Some packages could not be found in the repository" -msgstr "" - -#, fuzzy -msgid "User" -msgstr "اسم المستخدم" - -msgid "The specified configuration will be applied" -msgstr "" - -msgid "Wipe" -msgstr "" - -#, fuzzy -msgid "Mark/Unmark as XBOOTLDR" -msgstr "وضع او إلغاء علامة قابل للإقلاع" - -#, fuzzy -msgid "Loading packages..." -msgstr "الباقات الإضافية" - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "" - -#, fuzzy -msgid "Add a custom repository" -msgstr "إضافة مرآة مخصصة" - -#, fuzzy -msgid "Change custom repository" -msgstr "تغيير المرآة المخصصة" - -#, fuzzy -msgid "Delete custom repository" -msgstr "حذف المرآة المخصصة" - -#, fuzzy -msgid "Repository name" -msgstr "اسم المرآة" - -#, fuzzy -msgid "Add a custom server" -msgstr "إضافة مرآة مخصصة" - -#, fuzzy -msgid "Change custom server" -msgstr "تغيير المرآة المخصصة" - -#, fuzzy -msgid "Delete custom server" -msgstr "حذف المرآة المخصصة" - -msgid "Server url" -msgstr "" - -#, fuzzy -msgid "Select regions" -msgstr "حدد خيار التوقيع" - -#, fuzzy -msgid "Add custom servers" -msgstr "إضافة مرآة مخصصة" - -#, fuzzy -msgid "Add custom repository" -msgstr "إضافة مرآة مخصصة" - -#, fuzzy -msgid "Loading mirror regions..." -msgstr "مناطق المرايا" - -#, fuzzy -msgid "Mirrors and repositories" -msgstr "المستودعات الاختيارية" - -#, fuzzy -msgid "Selected mirror regions" -msgstr "مناطق المرايا" - -#, fuzzy -msgid "Custom servers" -msgstr "مرايا مخصصة" - -#, fuzzy -msgid "Custom repositories" -msgstr "المستودعات الاختيارية" - -msgid "Only ASCII characters are supported" -msgstr "" - -msgid "Show help" -msgstr "" - -msgid "Exit help" -msgstr "" - -msgid "Preview scroll up" -msgstr "" - -msgid "Preview scroll down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move right" -msgstr "" - -msgid "Move left" -msgstr "" - -msgid "Jump to entry" -msgstr "" - -msgid "Skip selection (if available)" -msgstr "" - -msgid "Reset selection (if available)" -msgstr "" - -#, fuzzy -msgid "Select on single select" -msgstr "حدد خيار التحقق من التوقيع" - -#, fuzzy -msgid "Select on multi select" -msgstr "حدِّد منطقة زمنية" - -msgid "Reset" -msgstr "" - -#, fuzzy -msgid "Skip selection menu" -msgstr "حدد وضع التنفيذ" - -msgid "Start search mode" -msgstr "" - -msgid "Exit search mode" -msgstr "" - -#, fuzzy -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "يحتاج Sway إلى الوصول إلى مقعدك (مجموعة من الأجهزة مثل لوحة المفاتيح والماوس وغيرها)" - -#, fuzzy -msgid "Choose an option to give labwc access to your hardware" -msgstr "حدد خياراً لمنح Sway إمكانية الوصول إلى أجهزتك" - -#, fuzzy -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "يحتاج Sway إلى الوصول إلى مقعدك (مجموعة من الأجهزة مثل لوحة المفاتيح والماوس وغيرها)" - -#, fuzzy -msgid "Choose an option to give niri access to your hardware" -msgstr "حدد خياراً لمنح Sway إمكانية الوصول إلى أجهزتك" - -#, fuzzy -msgid "Mark/Unmark as ESP" -msgstr "وضع او إلغاء علامة قابل للإقلاع" - -msgid "Package group:" -msgstr "" - -#, fuzzy -msgid "Exit archinstall" -msgstr "مساعدة Archinstall" - -#, fuzzy -msgid "Reboot system" -msgstr "نظام الملفات" - -#, fuzzy -msgid "chroot into installation for post-installation configurations" -msgstr "هل ترغب في الانتقال (chroot) إلى التثبيت الذي تم إنشاؤه حديثاً وإجراء تهيئة ما بعد التثبيت؟" - -msgid "Installation completed" -msgstr "" - -#, fuzzy -msgid "What would you like to do next?" -msgstr "هل ترغب في الاستمرار؟" - -#, fuzzy, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "حدد الوضع المراد تهيئته لـ\"{}\" أو تخطى لاستخدام الوضع الافتراضي \"{}\"" - -#, fuzzy -msgid "Incorrect credentials file decryption password" -msgstr "كلمة سر التشفير" - -#, fuzzy -msgid "Incorrect password" -msgstr "كلمة مرور الجذر" - -#, fuzzy -msgid "Credentials file decryption password" -msgstr "كلمة سر التشفير" - -#, fuzzy -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "هل تريد حفظ ملف (ملفات) الضبط إلى {} ؟" - -#, fuzzy -msgid "Credentials file encryption password" -msgstr "كلمة سر التشفير" - -#, fuzzy, python-brace-format -msgid "Repositories: {}" -msgstr "اسم المرآة" - -#, fuzzy -msgid "New version available" -msgstr "لا توجد أجهزة HSM متوفرة" - -#, fuzzy -msgid "Passwordless login" -msgstr "كلمة المرور" - -msgid "Second factor login" -msgstr "" - -msgid "Bluetooth" -msgstr "" - -#, fuzzy -msgid "Would you like to configure Bluetooth?" -msgstr "هل ترغب في الاستمرار؟" - -msgid "Authentication" -msgstr "" - -msgid "Applications" -msgstr "" - -msgid "U2F login method: " -msgstr "" - -msgid "Passwordless sudo: " -msgstr "" - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "" - -msgid "Syncing the system..." -msgstr "" - -msgid "Value cannot be empty" -msgstr "" - -msgid "Snapshot type" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Snapshot type: {}" -msgstr "نوع البيئة: {}" - -msgid "U2F login setup" -msgstr "" - -msgid "No U2F devices found" -msgstr "" - -msgid "U2F Login Method" -msgstr "" - -#, fuzzy -msgid "Enable passwordless sudo?" -msgstr "أدخل كلمة مرور: " - -#, fuzzy, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "اختر جهاز FIDO2 لاستخدامه في HSM" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "" - -msgid "Starting device modifications in " -msgstr "" - -#, fuzzy -msgid "No network connection found" -msgstr "لا يوجد إعداد للشبكة" - -#, fuzzy -msgid "Would you like to connect to a Wifi?" -msgstr "هل ترغب في الاستمرار؟" - -#, fuzzy -msgid "No wifi interface found" -msgstr "تهيئة الواجهات" - -#, fuzzy -msgid "Select wifi network to connect to" -msgstr "حدِّد واجهة شبكة واحدة للإعداد" - -msgid "Scanning wifi networks..." -msgstr "" - -#, fuzzy -msgid "No wifi networks found" -msgstr "لا يوجد إعداد للشبكة" - -msgid "Failed setting up wifi" -msgstr "" - -#, fuzzy -msgid "Enter wifi password" -msgstr "أدخل كلمة مرور: " - -msgid "Ok" -msgstr "" diff --git a/examples/archinstall/archinstall/locales/base.pot b/examples/archinstall/archinstall/locales/base.pot deleted file mode 100644 index e3a0711..0000000 --- a/examples/archinstall/archinstall/locales/base.pot +++ /dev/null @@ -1,1859 +0,0 @@ -msgid "" -msgstr "" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "" - -msgid "" -" Please submit this issue (and file) to https://github.com/archlinux/" -"archinstall/issues" -msgstr "" - -msgid "Do you really want to abort?" -msgstr "" - -msgid "And one more time for verification: " -msgstr "" - -msgid "Would you like to use swap on zram?" -msgstr "" - -msgid "Desired hostname for the installation: " -msgstr "" - -msgid "Username for required superuser with sudo privileges: " -msgstr "" - -msgid "Any additional users to install (leave blank for no users): " -msgstr "" - -msgid "Should this user be a superuser (sudoer)?" -msgstr "" - -msgid "Select a timezone" -msgstr "" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "" - -msgid "Choose a bootloader" -msgstr "" - -msgid "Choose an audio server" -msgstr "" - -msgid "" -"Only packages such as base, base-devel, linux, linux-firmware, efibootmgr " -"and optional profile packages are installed." -msgstr "" - -msgid "" -"If you desire a web browser, such as firefox or chromium, you may specify it " -"in the following prompt." -msgstr "" - -msgid "" -"Write additional packages to install (space separated, leave blank to skip): " -msgstr "" - -msgid "Copy ISO network configuration to installation" -msgstr "" - -msgid "" -"Use NetworkManager (necessary for configuring internet graphically in GNOME " -"and KDE)" -msgstr "" - -msgid "Select one network interface to configure" -msgstr "" - -msgid "" -"Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "" - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "" - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "" - -msgid "Select which filesystem your main partition should use" -msgstr "" - -msgid "Current partition layout" -msgstr "" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" - -msgid "Enter a desired filesystem type for the partition" -msgstr "" - -msgid "" -"Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "" - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "" - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" - -msgid "" -" * Partition mount-points are relative to inside the installation, the boot " -"would be /boot as an example." -msgstr "" - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "" - -msgid "Archinstall language" -msgstr "" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "" - -msgid "" -"Select what to do with each individual drive (followed by partition usage)" -msgstr "" - -msgid "Select what you wish to do with the selected block devices" -msgstr "" - -msgid "" -"This is a list of pre-programmed profiles, they might make it easier to " -"install things like desktop environments" -msgstr "" - -msgid "Select keyboard layout" -msgstr "" - -msgid "Select one of the regions to download packages from" -msgstr "" - -msgid "Select one or more hard drives to use and configure" -msgstr "" - -msgid "" -"For the best compatibility with your AMD hardware, you may want to use " -"either the all open-source or AMD / ATI options." -msgstr "" - -msgid "" -"For the best compatibility with your Intel hardware, you may want to use " -"either the all open-source or Intel options.\n" -msgstr "" - -msgid "" -"For the best compatibility with your Nvidia hardware, you may want to use " -"the Nvidia proprietary driver.\n" -msgstr "" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" - -msgid "All open-source (default)" -msgstr "" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "" - -msgid "Choose which locale language to use" -msgstr "" - -msgid "Choose which locale encoding to use" -msgstr "" - -msgid "Select one of the values shown below: " -msgstr "" - -msgid "Select one or more of the options below: " -msgstr "" - -msgid "Adding partition...." -msgstr "" - -msgid "" -"You need to enter a valid fs-type in order to continue. See `man parted` for " -"valid fs-type's." -msgstr "" - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "" - -msgid "Keyboard layout" -msgstr "" - -msgid "Mirror region" -msgstr "" - -msgid "Locale language" -msgstr "" - -msgid "Locale encoding" -msgstr "" - -msgid "Drive(s)" -msgstr "" - -msgid "Disk layout" -msgstr "" - -msgid "Encryption password" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Bootloader" -msgstr "" - -msgid "Root password" -msgstr "" - -msgid "Superuser account" -msgstr "" - -msgid "User account" -msgstr "" - -msgid "Profile" -msgstr "" - -msgid "Audio" -msgstr "" - -msgid "Kernels" -msgstr "" - -msgid "Additional packages" -msgstr "" - -msgid "Network configuration" -msgstr "" - -msgid "Automatic time sync (NTP)" -msgstr "" - -msgid "Install ({} config(s) missing)" -msgstr "" - -msgid "" -"You decided to skip harddrive selection\n" -"and will use whatever drive-setup is mounted at {} (experimental)\n" -"WARNING: Archinstall won't check the suitability of this setup\n" -"Do you wish to continue?" -msgstr "" - -msgid "Re-using partition instance: {}" -msgstr "" - -msgid "Create a new partition" -msgstr "" - -msgid "Delete a partition" -msgstr "" - -msgid "Clear/Delete all partitions" -msgstr "" - -msgid "Assign mount-point for a partition" -msgstr "" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "" - -msgid "Set desired filesystem for a partition" -msgstr "" - -msgid "Abort" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "Not configured, unavailable unless setup manually" -msgstr "" - -msgid "Timezone" -msgstr "" - -msgid "Set/Modify the below options" -msgstr "" - -msgid "Install" -msgstr "" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" - -msgid "Suggest partition layout" -msgstr "" - -msgid "Enter a password: " -msgstr "" - -msgid "Enter a encryption password for {}" -msgstr "" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "" - -msgid "Create a required super-user with sudo privileges: " -msgstr "" - -msgid "Enter root password (leave blank to disable root): " -msgstr "" - -msgid "Password for user \"{}\": " -msgstr "" - -msgid "" -"Verifying that additional packages exist (this might take a few seconds)" -msgstr "" - -msgid "" -"Would you like to use automatic time synchronization (NTP) with the default " -"time servers?\n" -msgstr "" - -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 "" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "" - -msgid "Use ESC to skip\n" -msgstr "" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for " -"it to execute" -msgstr "" - -msgid "Cancel" -msgstr "" - -msgid "Confirm and exit" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Copy" -msgstr "" - -msgid "Edit" -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "Select an action for '{}'" -msgstr "" - -msgid "Copy to new key:" -msgstr "" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" - -msgid "" -"Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "" - -msgid "" -"Pre-existing pacman lock never exited. Please clean up any existing pacman " -"sessions before using archinstall." -msgstr "" - -msgid "Choose which optional additional repositories to enable" -msgstr "" - -msgid "Add a user" -msgstr "" - -msgid "Change password" -msgstr "" - -msgid "Promote/Demote user" -msgstr "" - -msgid "Delete User" -msgstr "" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" - -msgid "User Name : " -msgstr "" - -msgid "Should {} be a superuser (sudoer)?" -msgstr "" - -msgid "Define users with sudo privilege: " -msgstr "" - -msgid "No network configuration" -msgstr "" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "" - -msgid "No configuration" -msgstr "" - -msgid "Save user configuration" -msgstr "" - -msgid "Save user credentials" -msgstr "" - -msgid "Save disk layout" -msgstr "" - -msgid "Save all" -msgstr "" - -msgid "Choose which configuration to save" -msgstr "" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "" - -msgid "Not a valid directory: {}" -msgstr "" - -msgid "The password you are using seems to be weak," -msgstr "" - -msgid "are you sure you want to use it?" -msgstr "" - -msgid "Optional repositories" -msgstr "" - -msgid "Save configuration" -msgstr "" - -msgid "Missing configurations:\n" -msgstr "" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "" - -msgid "Manage superuser accounts: " -msgstr "" - -msgid "Manage ordinary user accounts: " -msgstr "" - -msgid " Subvolume :{:16}" -msgstr "" - -msgid " mounted at {:16}" -msgstr "" - -msgid " with option {}" -msgstr "" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" - -msgid "Subvolume name " -msgstr "" - -msgid "Subvolume mountpoint" -msgstr "" - -msgid "Subvolume options" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Subvolume name :" -msgstr "" - -msgid "Select a mount point :" -msgstr "" - -msgid "Select the desired subvolume options " -msgstr "" - -msgid "Define users with sudo privilege, by username: " -msgstr "" - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "" - -msgid "Would you like to use BTRFS compression?" -msgstr "" - -msgid "Would you like to create a separate partition for /home?" -msgstr "" - -msgid "" -"The selected drives do not have the minimum capacity required for an " -"automatic suggestion\n" -msgstr "" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "" - -msgid "Continue" -msgstr "" - -msgid "yes" -msgstr "" - -msgid "no" -msgstr "" - -msgid "set: {}" -msgstr "" - -msgid "Manual configuration setting must be a list" -msgstr "" - -msgid "No iface specified for manual configuration" -msgstr "" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "" - -msgid "Add interface" -msgstr "" - -msgid "Edit interface" -msgstr "" - -msgid "Delete interface" -msgstr "" - -msgid "Select interface to add" -msgstr "" - -msgid "Manual configuration" -msgstr "" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "" - -msgid "" -"The password you are using seems to be weak, are you sure you want to use it?" -msgstr "" - -msgid "" -"Provides a selection of desktop environments and tiling window managers, " -"e.g. gnome, kde, sway" -msgstr "" - -msgid "Select your desired desktop environment" -msgstr "" - -msgid "" -"A very basic installation that allows you to customize Arch Linux as you see " -"fit." -msgstr "" - -msgid "" -"Provides a selection of various server packages to install and enable, e.g. " -"httpd, nginx, mariadb" -msgstr "" - -msgid "" -"Choose which servers to install, if none then a minimal installation will be " -"done" -msgstr "" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "" - -msgid "Press Enter to continue." -msgstr "" - -msgid "" -"Would you like to chroot into the newly created installation and perform " -"post-installation configuration?" -msgstr "" - -msgid "Are you sure you want to reset this setting?" -msgstr "" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "" - -msgid "" -"If you reset the harddrive selection this will also reset the current disk " -"layout. Are you sure?" -msgstr "" - -msgid "Save and exit" -msgstr "" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" - -msgid "No audio server" -msgstr "" - -msgid "(default)" -msgstr "" - -msgid "Use ESC to skip" -msgstr "" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" - -msgid "Copy to: " -msgstr "" - -msgid "Edit: " -msgstr "" - -msgid "Key: " -msgstr "" - -msgid "Edit {}: " -msgstr "" - -msgid "Add: " -msgstr "" - -msgid "Value: " -msgstr "" - -msgid "" -"You can skip selecting a drive and partitioning and use whatever drive-setup " -"is mounted at /mnt (experimental)" -msgstr "" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "" - -msgid "Select which partitions to mark for formatting:" -msgstr "" - -msgid "Use HSM to unlock encrypted drive" -msgstr "" - -msgid "Device" -msgstr "" - -msgid "Size" -msgstr "" - -msgid "Free space" -msgstr "" - -msgid "Bus-type" -msgstr "" - -msgid "" -"Either root-password or at least 1 user with sudo privileges must be " -"specified" -msgstr "" - -msgid "Enter username (leave blank to skip): " -msgstr "" - -msgid "The username you entered is invalid. Try again" -msgstr "" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "" - -msgid "Select which partitions to encrypt" -msgstr "" - -msgid "very weak" -msgstr "" - -msgid "weak" -msgstr "" - -msgid "moderate" -msgstr "" - -msgid "strong" -msgstr "" - -msgid "Add subvolume" -msgstr "" - -msgid "Edit subvolume" -msgstr "" - -msgid "Delete subvolume" -msgstr "" - -msgid "Configured {} interfaces" -msgstr "" - -msgid "" -"This option enables the number of parallel downloads that can occur during " -"installation" -msgstr "" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" - -msgid "" -" - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads " -"at a time )" -msgstr "" - -msgid "" -" - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a " -"time )" -msgstr "" - -msgid "" -" - Disable/Default : 0 ( Disables parallel downloading, allows only 1 " -"download at a time )" -msgstr "" - -#, python-brace-format -msgid "" -"Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to " -"disable]" -msgstr "" - -msgid "Parallel Downloads" -msgstr "" - -msgid "ESC to skip" -msgstr "" - -msgid "CTRL+C to reset" -msgstr "" - -msgid "TAB to select" -msgstr "" - -msgid "[Default value: 0] > " -msgstr "" - -msgid "" -"To be able to use this translation, please install a font manually that " -"supports the language." -msgstr "" - -msgid "The font should be stored as {}" -msgstr "" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "" - -msgid "Select an execution mode" -msgstr "" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "" - -#, python-brace-format -msgid "" -"Profiles must have unique name, but profile definitions with duplicate name " -"found: {}" -msgstr "" - -msgid "Select one or more devices to use and configure" -msgstr "" - -msgid "" -"If you reset the device selection this will also reset the current disk " -"layout. Are you sure?" -msgstr "" - -msgid "Existing Partitions" -msgstr "" - -msgid "Select a partitioning option" -msgstr "" - -msgid "Enter the root directory of the mounted devices: " -msgstr "" - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "" - -msgid "" -"This is a list of pre-programmed profiles_bck, they might make it easier to " -"install things like desktop environments" -msgstr "" - -msgid "Current profile selection" -msgstr "" - -msgid "Remove all newly added partitions" -msgstr "" - -msgid "Assign mountpoint" -msgstr "" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "" - -msgid "Mark/Unmark as bootable" -msgstr "" - -msgid "Change filesystem" -msgstr "" - -msgid "Mark/Unmark as compressed" -msgstr "" - -msgid "Set subvolumes" -msgstr "" - -msgid "Delete partition" -msgstr "" - -msgid "Partition" -msgstr "" - -msgid "" -"This partition is currently encrypted, to format it a filesystem has to be " -"specified" -msgstr "" - -msgid "" -"Partition mount-points are relative to inside the installation, the boot " -"would be /boot as an example." -msgstr "" - -msgid "" -"If mountpoint /boot is set, then the partition will also be marked as " -"bootable." -msgstr "" - -msgid "Mountpoint: " -msgstr "" - -msgid "Current free sectors on device {}:" -msgstr "" - -msgid "Total sectors: {}" -msgstr "" - -msgid "Enter the start sector (default: {}): " -msgstr "" - -msgid "" -"Enter the end sector of the partition (percentage or block number, default: " -"{}): " -msgstr "" - -msgid "This will remove all newly added partitions, continue?" -msgstr "" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "" - -#, python-brace-format -msgid "Total length: {}" -msgstr "" - -msgid "Encryption type" -msgstr "" - -msgid "Iteration time" -msgstr "" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "" - -msgid "Higher values increase security but slow down boot time" -msgstr "" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "" - -msgid "Iteration time cannot be empty" -msgstr "" - -msgid "Iteration time must be at least 100ms" -msgstr "" - -msgid "Iteration time must be at most 120000ms" -msgstr "" - -msgid "Please enter a valid number" -msgstr "" - -msgid "Partitions" -msgstr "" - -msgid "No HSM devices available" -msgstr "" - -msgid "Partitions to be encrypted" -msgstr "" - -msgid "Select disk encryption option" -msgstr "" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "" - -msgid "Use a best-effort default partition layout" -msgstr "" - -msgid "Manual Partitioning" -msgstr "" - -msgid "Pre-mounted configuration" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "Partition encryption" -msgstr "" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr "" - -msgid "← Back" -msgstr "" - -msgid "Disk encryption" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "All settings will be reset, are you sure?" -msgstr "" - -msgid "Back" -msgstr "" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "" - -msgid "" -"The proprietary Nvidia driver is not supported by Sway. It is likely that " -"you will run into issues, are you okay with that?" -msgstr "" - -msgid "Installed packages" -msgstr "" - -msgid "Add profile" -msgstr "" - -msgid "Edit profile" -msgstr "" - -msgid "Delete profile" -msgstr "" - -msgid "Profile name: " -msgstr "" - -msgid "The profile name you entered is already in use. Try again" -msgstr "" - -msgid "" -"Packages to be install with this profile (space separated, leave blank to " -"skip): " -msgstr "" - -msgid "" -"Services to be enabled with this profile (space separated, leave blank to " -"skip): " -msgstr "" - -msgid "Should this profile be enabled for installation?" -msgstr "" - -msgid "Create your own" -msgstr "" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" - -msgid "" -"Sway needs access to your seat (collection of hardware devices i.e. " -"keyboard, mouse, etc)" -msgstr "" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" - -msgid "Graphics driver" -msgstr "" - -msgid "Greeter" -msgstr "" - -msgid "Please chose which greeter to install" -msgstr "" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "" - -msgid "Disk configuration" -msgstr "" - -msgid "Profiles" -msgstr "" - -msgid "Finding possible directories to save configuration files ..." -msgstr "" - -msgid "Select directory (or directories) for saving configuration files" -msgstr "" - -msgid "Add a custom mirror" -msgstr "" - -msgid "Change custom mirror" -msgstr "" - -msgid "Delete custom mirror" -msgstr "" - -msgid "Enter name (leave blank to skip): " -msgstr "" - -msgid "Enter url (leave blank to skip): " -msgstr "" - -msgid "Select signature check option" -msgstr "" - -msgid "Select signature option" -msgstr "" - -msgid "Custom mirrors" -msgstr "" - -msgid "Defined" -msgstr "" - -msgid "Save user configuration (including disk layout)" -msgstr "" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion " -"enabled)\n" -"Save directory: " -msgstr "" - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" - -msgid "Saving {} configuration files to {}" -msgstr "" - -msgid "Mirrors" -msgstr "" - -msgid "Mirror regions" -msgstr "" - -msgid "" -" - Maximum value : {} ( Allows {} parallel downloads, allows " -"{max_downloads+1} downloads at a time )" -msgstr "" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "" - -msgid "Locales" -msgstr "" - -msgid "" -"Use NetworkManager (necessary to configure internet graphically in GNOME and " -"KDE)" -msgstr "" - -msgid "Total: {} / {}" -msgstr "" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "" - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "" - -msgid "Enter start (default: sector {}): " -msgstr "" - -msgid "Enter end (default: {}): " -msgstr "" - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "" - -msgid "Path" -msgstr "" - -msgid "Manufacturer" -msgstr "" - -msgid "Product" -msgstr "" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "" - -msgid "Type" -msgstr "" - -msgid "" -"This option enables the number of parallel downloads that can occur during " -"package downloads" -msgstr "" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" - -#, python-brace-format -msgid "" -" - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr "" - -msgid "" -" - Disable/Default : 0 ( Disables parallel downloading, allows only 1 " -"download at a time )\n" -msgstr "" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "" - -msgid "" -"Hyprland needs access to your seat (collection of hardware devices i.e. " -"keyboard, mouse, etc)" -msgstr "" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" - -msgid "" -"All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "" - -msgid "Would you like to use unified kernel images?" -msgstr "" - -msgid "Unified kernel images" -msgstr "" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "" - -msgid "" -"Time syncronization not completing, while you wait - check the docs for " -"workarounds: https://archinstall.readthedocs.io/" -msgstr "" - -msgid "" -"Skipping waiting for automatic time sync (this can cause issues if time is " -"out of sync during installation)" -msgstr "" - -msgid "" -"Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "" - -msgid "Selected profiles: " -msgstr "" - -msgid "" -"Time synchronization not completing, while you wait - check the docs for " -"workarounds: https://archinstall.readthedocs.io/" -msgstr "" - -msgid "Mark/Unmark as nodatacow" -msgstr "" - -msgid "Would you like to use compression or disable CoW?" -msgstr "" - -msgid "Use compression" -msgstr "" - -msgid "Disable Copy-on-Write" -msgstr "" - -msgid "" -"Provides a selection of desktop environments and tiling window managers, " -"e.g. GNOME, KDE Plasma, Sway" -msgstr "" - -#, python-brace-format -msgid "Configuration type: {}" -msgstr "" - -msgid "LVM configuration type" -msgstr "" - -msgid "" -"LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "" - -msgid "" -"Use NetworkManager (necessary to configure internet graphically in GNOME and " -"KDE Plasma)" -msgstr "" - -msgid "Select a LVM option" -msgstr "" - -msgid "Partitioning" -msgstr "" - -msgid "Logical Volume Management (LVM)" -msgstr "" - -msgid "Physical volumes" -msgstr "" - -msgid "Volumes" -msgstr "" - -msgid "LVM volumes" -msgstr "" - -msgid "LVM volumes to be encrypted" -msgstr "" - -msgid "Select which LVM volumes to encrypt" -msgstr "" - -msgid "Default layout" -msgstr "" - -msgid "No Encryption" -msgstr "" - -msgid "LUKS" -msgstr "" - -msgid "LVM on LUKS" -msgstr "" - -msgid "LUKS on LVM" -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "No" -msgstr "" - -msgid "Archinstall help" -msgstr "" - -msgid " (default)" -msgstr "" - -msgid "Press Ctrl+h for help" -msgstr "" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "" - -msgid "Seat access" -msgstr "" - -msgid "Mountpoint" -msgstr "" - -msgid "HSM" -msgstr "" - -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "" - -msgid "Disk encryption password" -msgstr "" - -msgid "Partition - New" -msgstr "" - -msgid "Filesystem" -msgstr "" - -msgid "Invalid size" -msgstr "" - -msgid "Start (default: sector {}): " -msgstr "" - -msgid "End (default: {}): " -msgstr "" - -msgid "Subvolume name" -msgstr "" - -msgid "Disk configuration type" -msgstr "" - -msgid "Root mount directory" -msgstr "" - -msgid "Select language" -msgstr "" - -msgid "" -"Write additional packages to install (space separated, leave blank to skip)" -msgstr "" - -msgid "Invalid download number" -msgstr "" - -msgid "Number downloads" -msgstr "" - -msgid "The username you entered is invalid" -msgstr "" - -msgid "Username" -msgstr "" - -#, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "" - -msgid "Modes" -msgstr "" - -msgid "IP address" -msgstr "" - -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "" - -msgid "Gateway address" -msgstr "" - -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "" - -msgid "DNS servers" -msgstr "" - -msgid "Configure interfaces" -msgstr "" - -msgid "Kernel" -msgstr "" - -msgid "UEFI is not detected and some options are disabled" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "" - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "" - -msgid "Main profile" -msgstr "" - -msgid "Confirm password" -msgstr "" - -msgid "The confirmation password did not match, please try again" -msgstr "" - -msgid "Not a valid directory" -msgstr "" - -msgid "Would you like to continue?" -msgstr "" - -msgid "Directory" -msgstr "" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion " -"enabled)" -msgstr "" - -#, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "" -"Please submit this issue (and file) to https://github.com/archlinux/" -"archinstall/issues" -msgstr "" - -msgid "Mirror name" -msgstr "" - -msgid "Url" -msgstr "" - -msgid "Select signature check" -msgstr "" - -msgid "Select execution mode" -msgstr "" - -msgid "Press ? for help" -msgstr "" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "" - -msgid "Additional repositories" -msgstr "" - -msgid "NTP" -msgstr "" - -msgid "Swap on zram" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Signature check" -msgstr "" - -#, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "" - -#, python-brace-format -msgid "Size: {} / {}" -msgstr "" - -#, python-brace-format -msgid "Size (default: {}): " -msgstr "" - -msgid "HSM device" -msgstr "" - -msgid "Some packages could not be found in the repository" -msgstr "" - -msgid "User" -msgstr "" - -msgid "The specified configuration will be applied" -msgstr "" - -msgid "Wipe" -msgstr "" - -msgid "Mark/Unmark as XBOOTLDR" -msgstr "" - -msgid "Loading packages..." -msgstr "" - -msgid "" -"Select any packages from the below list that should be installed additionally" -msgstr "" - -msgid "Add a custom repository" -msgstr "" - -msgid "Change custom repository" -msgstr "" - -msgid "Delete custom repository" -msgstr "" - -msgid "Repository name" -msgstr "" - -msgid "Add a custom server" -msgstr "" - -msgid "Change custom server" -msgstr "" - -msgid "Delete custom server" -msgstr "" - -msgid "Server url" -msgstr "" - -msgid "Select regions" -msgstr "" - -msgid "Add custom servers" -msgstr "" - -msgid "Add custom repository" -msgstr "" - -msgid "Loading mirror regions..." -msgstr "" - -msgid "Mirrors and repositories" -msgstr "" - -msgid "Selected mirror regions" -msgstr "" - -msgid "Custom servers" -msgstr "" - -msgid "Custom repositories" -msgstr "" - -msgid "Only ASCII characters are supported" -msgstr "" - -msgid "Show help" -msgstr "" - -msgid "Exit help" -msgstr "" - -msgid "Preview scroll up" -msgstr "" - -msgid "Preview scroll down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move right" -msgstr "" - -msgid "Move left" -msgstr "" - -msgid "Jump to entry" -msgstr "" - -msgid "Skip selection (if available)" -msgstr "" - -msgid "Reset selection (if available)" -msgstr "" - -msgid "Select on single select" -msgstr "" - -msgid "Select on multi select" -msgstr "" - -msgid "Reset" -msgstr "" - -msgid "Skip selection menu" -msgstr "" - -msgid "Start search mode" -msgstr "" - -msgid "Exit search mode" -msgstr "" - -msgid "" -"labwc needs access to your seat (collection of hardware devices i.e. " -"keyboard, mouse, etc)" -msgstr "" - -msgid "Choose an option to give labwc access to your hardware" -msgstr "" - -msgid "" -"niri needs access to your seat (collection of hardware devices i.e. " -"keyboard, mouse, etc)" -msgstr "" - -msgid "Choose an option to give niri access to your hardware" -msgstr "" - -msgid "Mark/Unmark as ESP" -msgstr "" - -msgid "Package group:" -msgstr "" - -msgid "Exit archinstall" -msgstr "" - -msgid "Reboot system" -msgstr "" - -msgid "chroot into installation for post-installation configurations" -msgstr "" - -msgid "Installation completed" -msgstr "" - -msgid "What would you like to do next?" -msgstr "" - -#, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "" - -msgid "Incorrect credentials file decryption password" -msgstr "" - -msgid "Incorrect password" -msgstr "" - -msgid "Credentials file decryption password" -msgstr "" - -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "" - -msgid "Credentials file encryption password" -msgstr "" - -#, python-brace-format -msgid "Repositories: {}" -msgstr "" - -msgid "New version available" -msgstr "" - -msgid "Passwordless login" -msgstr "" - -msgid "Second factor login" -msgstr "" - -msgid "Bluetooth" -msgstr "" - -msgid "Would you like to configure Bluetooth?" -msgstr "" - -msgid "Authentication" -msgstr "" - -msgid "Applications" -msgstr "" - -msgid "U2F login method: " -msgstr "" - -msgid "Passwordless sudo: " -msgstr "" - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "" - -msgid "Syncing the system..." -msgstr "" - -msgid "Value cannot be empty" -msgstr "" - -msgid "Snapshot type" -msgstr "" - -#, python-brace-format -msgid "Snapshot type: {}" -msgstr "" - -msgid "U2F login setup" -msgstr "" - -msgid "No U2F devices found" -msgstr "" - -msgid "U2F Login Method" -msgstr "" - -msgid "Enable passwordless sudo?" -msgstr "" - -#, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "" - -msgid "" -"You may need to enter the PIN and then touch your U2F device to register it" -msgstr "" - -msgid "Starting device modifications in " -msgstr "" - -msgid "No network connection found" -msgstr "" - -msgid "Would you like to connect to a Wifi?" -msgstr "" - -msgid "No wifi interface found" -msgstr "" - -msgid "Select wifi network to connect to" -msgstr "" - -msgid "Scanning wifi networks..." -msgstr "" - -msgid "No wifi networks found" -msgstr "" - -msgid "Failed setting up wifi" -msgstr "" - -msgid "Enter wifi password" -msgstr "" - -msgid "Ok" -msgstr "" diff --git a/examples/archinstall/archinstall/locales/ca/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/ca/LC_MESSAGES/base.mo deleted file mode 100644 index cfe310c..0000000 Binary files a/examples/archinstall/archinstall/locales/ca/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/ca/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/ca/LC_MESSAGES/base.po deleted file mode 100644 index 8ff67c5..0000000 --- a/examples/archinstall/archinstall/locales/ca/LC_MESSAGES/base.po +++ /dev/null @@ -1,1821 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" -"Language: ca\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.6\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] S'ha creat un fitxer de registre aquí: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Si us plau envieu aquest problema (i fitxer) a https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "Segur que voleu avortar?" - -msgid "And one more time for verification: " -msgstr "Una vegada més per a verificar: " - -msgid "Would you like to use swap on zram?" -msgstr "Us agradaria utilitzar swap a zram?" - -msgid "Desired hostname for the installation: " -msgstr "Nom de host desitjat per a la instal·lació: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "Nom d'usuari pel superusuari amb privilegis sudo: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "Algun usuari addicional a instal·lar (deixeu-ho en blanc per no afegir-ne cap): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "Cal que aquest usuari sigui un superusuari (sudoer)?" - -msgid "Select a timezone" -msgstr "Seleccioneu una franja horària" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "Voleu utilitzar GRUB com a gestor d'arranc en comptes de systemd-boot?" - -msgid "Choose a bootloader" -msgstr "Trieu un gestor d'arranc" - -msgid "Choose an audio server" -msgstr "Trieu un servidor d'àudio" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Només s'instal·laran paquets com base, base-devel, linux, linux-firmware, efibootmgr i altres paquets de perfil opcionals." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "Si desitgeu un navegador web, com ara firefox o chromium, ho podeu especificar al proper missatge." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "Escriviu paquets addicionals a instal·lar (separats per espais, deixeu-ho en blanc per saltar aquest pas): " - -msgid "Copy ISO network configuration to installation" -msgstr "Copiar la configuració de xarxa ISO a la instal·lació" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "Utilitzar NetworkManager (necessari per a configurar internet gràficament a GNOME i KDE)" - -msgid "Select one network interface to configure" -msgstr "Seleccioneu una interfície de xarxa a configurar" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "Seleccioneu quin mode configurar per a \"{}\" o ometeu per a usar el mode predeterminat \"{}\"" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "Introduïu la IP i la subxarxa per a {} (exemple: 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "Introduïu la IP de la porta d'enllaç (router) o deixeu-ho en blanc per a no utilitzar-ne cap: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "Introduïu els vostres servidors DNS (separats per espais o deixeu-ho en blanc per a cap): " - -msgid "Select which filesystem your main partition should use" -msgstr "Seleccioneu quin sistema de fitxers cal utilitzar a la vostra partició principal" - -msgid "Current partition layout" -msgstr "Distribució actual de les particions" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"Seleccioneu què fer amb\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "Introduïu el tipus de sistema de fitxers desitjat per a la partició" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "Introduïu la ubicació d'inici (en unitats dividides: s, GB, %, etc. ; per defecte: {}): " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "Introduïu la ubicació final (en unitats dividides: s, GB, %, etc. ; ex.: {}): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} conté particions en cua. Això eliminarà aquestes particions. N'esteu segurs?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"Seleccioneu per índex la ubicació de les particions a eliminar" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"Seleccioneu per índex la ubicació de la partició a muntar" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * Els punts de muntatge de la partició són relatius a l'interior de la instal·lació. Per exemple, /boot seria l'arranc." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "Seleccioneu a on muntar la partició (deixeu-ho en blanc per a eliminar el punt de muntatge): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"Seleccioneu quina partició emmascarar per a formatejar" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"Seleccioneu quina partició marcar com a encriptada" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"Seleccioneu quina partició marcar com a arranc" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"Seleccioneu en quina partició establir un sistema de fitxers" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "Introduïu un sistema de fitxers desitjat per a la partició: " - -msgid "Archinstall language" -msgstr "Idioma d'Archinstall" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Esborrar totes les unitats seleccionades i utilitzar una taula de particions òptima predeterminada" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Seleccioneu què fer amb cada volum individual (seguit de l'ús de la partició)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "Seleccioneu que desitgeu fer amb els dispositius de blocs seleccionats" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "Aquesta és una llista de perfils preprogramats que podrien facilitar la instal·lació de coses com entorns d'escriptori" - -msgid "Select keyboard layout" -msgstr "Seleccioneu la distribució del teclat" - -msgid "Select one of the regions to download packages from" -msgstr "Seleccioneu una de les regions des de la qual descarregar paquets" - -msgid "Select one or more hard drives to use and configure" -msgstr "Seleccioneu un o més discos durs per a utilitzar i 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 "Per a obtenir la millor compatibilitat amb el vostre hardware AMD, és possible que us interessi utilitzar les opcions de codi obert o d'AMD / ATI." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "Per a obtenir la millor compatibilitat amb el vostre hardware Intel, és possible que us interessi utilitzar les opcions de codi obert o d'Intel.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Per a obtenir la millor compatibilitat amb el vostre hardware Nvidia, és possible que us interessi utilitzar les opcions de controlador propietari d'Nvidia.\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Seleccioneu un controlador gràfic o deixeu-ho en blanc per a instal·lar tots els controladors de codi obert" - -msgid "All open-source (default)" -msgstr "Tots els de codi obert (per defecte)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "Escolliu quin kernel utilitzar o deixeu-ho en blanc per utilitzar el kernel per defecte \"{}\"" - -msgid "Choose which locale language to use" -msgstr "Escolliu quin idioma de localització utilitzar" - -msgid "Choose which locale encoding to use" -msgstr "Escolliu quin idioma de codificació utilitzar" - -msgid "Select one of the values shown below: " -msgstr "Seleccioneu un dels valors mostrats a sota: " - -msgid "Select one or more of the options below: " -msgstr "Seleccioneu una o més de les opcions de sota: " - -msgid "Adding partition...." -msgstr "Afegint partició...." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "Necessiteu introduir un fs-type vàlid per a continuar. Veieu `man parted` per a tipus de sistemes de fitxers vàlids." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Error: L'enllistament de perfils de la URL \"{}\" ha resultat en:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "Error: No s'ha pogut de-codificar el resultat \"{}\" com a JSON:" - -msgid "Keyboard layout" -msgstr "Distribució del teclat" - -msgid "Mirror region" -msgstr "Regió del servidor" - -msgid "Locale language" -msgstr "Idioma local" - -msgid "Locale encoding" -msgstr "Codificació local" - -msgid "Drive(s)" -msgstr "Disc(s)" - -msgid "Disk layout" -msgstr "Disseny del disc" - -msgid "Encryption password" -msgstr "Contrasenya de xifrat" - -msgid "Swap" -msgstr "Swap" - -msgid "Bootloader" -msgstr "Gestor d'arranc" - -msgid "Root password" -msgstr "Contrasenya de root" - -msgid "Superuser account" -msgstr "Compte de superusuari" - -msgid "User account" -msgstr "Compte d'usuari" - -msgid "Profile" -msgstr "Perfil" - -msgid "Audio" -msgstr "Àudio" - -msgid "Kernels" -msgstr "Kernels" - -msgid "Additional packages" -msgstr "Paquets addicionals" - -msgid "Network configuration" -msgstr "Configuració de la xarxa" - -msgid "Automatic time sync (NTP)" -msgstr "Sincronització automàtica de l'hora (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "Instal·lar ({} ajust(s) faltant(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 "" -"Heu decidit saltar-vos la selecció de disc dur\n" -"i utilitzar la configuració muntada a {} (experimental)\n" -"AVÍS: Archinstall no verificarà la idoneïtat d'aquesta configuració\n" -"Voleu continuar?" - -msgid "Re-using partition instance: {}" -msgstr "Re-utilitzant instància de partició: {}" - -msgid "Create a new partition" -msgstr "Crear una nova partició" - -msgid "Delete a partition" -msgstr "Eliminar una partició" - -msgid "Clear/Delete all partitions" -msgstr "Netejar/Eliminar totes les particions" - -msgid "Assign mount-point for a partition" -msgstr "Assignar punt de muntatge per a una partició" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "Marcar/Desmarcar una partició per a ser formatada (esborra les dades)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "Marcar/Desmarcar una partició com a encriptada" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "Marcar/Desmarcar una partició com a arranc (automàtic per a /boot)" - -msgid "Set desired filesystem for a partition" -msgstr "Establir el sistema de fitxers desitjat per a una partició" - -msgid "Abort" -msgstr "Avortar" - -msgid "Hostname" -msgstr "Nom del host" - -msgid "Not configured, unavailable unless setup manually" -msgstr "No configurat. No disponible a no ser que es configuri manualment" - -msgid "Timezone" -msgstr "Franja horària" - -msgid "Set/Modify the below options" -msgstr "Establir/Modificar les opcions següents" - -msgid "Install" -msgstr "Instal·lar" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"Utilitzar ESC per a saltar\n" -"\n" - -msgid "Suggest partition layout" -msgstr "Recomanar el disseny de partició" - -msgid "Enter a password: " -msgstr "Introduïu una contrasenya: " - -msgid "Enter a encryption password for {}" -msgstr "Introduïu una contrasenya de xifrat per {}" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "Introduïu la contrasenya de xifrat de disc (deixeu-ho en blanc per a no xifrar): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "Crear un superusuari requerit amb privilegis sudo: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "Introduïu la contrasenya de root (deixeu-ho en blanc per a deshabilitar root): " - -msgid "Password for user \"{}\": " -msgstr "Contrasenya per a l'usuari \"{}\": " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "Verificant que els paquets addicionals existeixen (això pot tardar uns segons)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "Voleu utilitzar la sincronització automàtica d'hora (NTP) amb els servidors d'hora predeterminats?\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 "" -"L'hora del hardware i altres passos post-configuració poden ser necessaris per tal que NTP funcioni.\n" -"Per a més informació, consulteu la wiki d'Arch" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "Introduïu un nom d'usuari per a crear un usuari addicional (deixeu-ho en blanc per a saltar): " - -msgid "Use ESC to skip\n" -msgstr "Utilitzeu ESC per a ometre\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -" Trieu un objecte de la llista i seleccioneu una de les accions disponibles per a executar" - -msgid "Cancel" -msgstr "Cancel·lar" - -msgid "Confirm and exit" -msgstr "Confirmar i sortir" - -msgid "Add" -msgstr "Afegir" - -msgid "Copy" -msgstr "Copiar" - -msgid "Edit" -msgstr "Editar" - -msgid "Delete" -msgstr "Eliminar" - -msgid "Select an action for '{}'" -msgstr "Seleccioneu una acció per a '{}'" - -msgid "Copy to new key:" -msgstr "Copiar a clau nova:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "Tipus de nic desconegut: {}. Els valors possibles són {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"Aquesta és la vostra configuració escollida:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Pacman ja està en execució; s'esperarà un màxim de 10 minuts perquè acabi." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "El bloqueig pre-existent de pacman mai s'ha tancat. Si us plau, netegeu qualsevol sessió de pacman existent abans d'utilitzar archinstall." - -msgid "Choose which optional additional repositories to enable" -msgstr "Trieu quins repositoris addicionals opcionals cal activar" - -msgid "Add a user" -msgstr "Afegir un usuari" - -msgid "Change password" -msgstr "Canviar contrasenya" - -msgid "Promote/Demote user" -msgstr "Promocionar/Degradar usuari" - -msgid "Delete User" -msgstr "Eliminar usuari" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"Definir un usuari nou\n" - -msgid "User Name : " -msgstr "Nom d'usuari: " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "Cal que {} sigui un superusuari (sudoer)?" - -msgid "Define users with sudo privilege: " -msgstr "Definiu usuaris amb privilegis sudo: " - -msgid "No network configuration" -msgstr "Sense configuració de xarxa" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "Establir els subvolums desitjats a una partició btrfs" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"Seleccioneu en quina partició configurar els subvolums" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "Administrar subvolums btrfs per a la partició actual" - -msgid "No configuration" -msgstr "Sense configuració" - -msgid "Save user configuration" -msgstr "Guardar configuració d'usuari" - -msgid "Save user credentials" -msgstr "Guardar credencials d'usuari" - -msgid "Save disk layout" -msgstr "Guardar disseny del disc" - -msgid "Save all" -msgstr "Guardar tot" - -msgid "Choose which configuration to save" -msgstr "Escolliu quina configuració guardar" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "Introduïu un directori on guardar les configuracions: " - -msgid "Not a valid directory: {}" -msgstr "Directori invàlid: {}" - -msgid "The password you are using seems to be weak," -msgstr "La contrasenya que esteu utilitzant sembla dèbil," - -msgid "are you sure you want to use it?" -msgstr "segur que voleu utilitzar-la?" - -msgid "Optional repositories" -msgstr "Repositoris opcionals" - -msgid "Save configuration" -msgstr "Guardar configuració" - -msgid "Missing configurations:\n" -msgstr "Configuracions que falten:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "Cal especificar una contrasenya de root o un mínim d'un superusuari" - -msgid "Manage superuser accounts: " -msgstr "Gestionar comptes de superusuari: " - -msgid "Manage ordinary user accounts: " -msgstr "Gestionar comptes d'usuaris ordinaris: " - -msgid " Subvolume :{:16}" -msgstr " Subvolum :{:16}" - -msgid " mounted at {:16}" -msgstr " muntat a {:16}" - -msgid " with option {}" -msgstr " amb opció {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -" Completeu els valors desitjats per a un nou subvolum\n" - -msgid "Subvolume name " -msgstr "Nom del subvolum " - -msgid "Subvolume mountpoint" -msgstr "Punt de muntatge del subvolum" - -msgid "Subvolume options" -msgstr "Opcions del subvolum" - -msgid "Save" -msgstr "Guardar" - -msgid "Subvolume name :" -msgstr "Nom del subvolum :" - -msgid "Select a mount point :" -msgstr "Seleccioneu un punt de muntatge :" - -msgid "Select the desired subvolume options " -msgstr "Seleccioneu les opcions de subvolum desitjades " - -msgid "Define users with sudo privilege, by username: " -msgstr "Definiu usuaris amb privilegi sudo, per nom d'usuari: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] S'ha creat un fitxer de registre aquí: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "Us agradaria utilitzar subvolums BTRFS amb una estructura predeterminada?" - -msgid "Would you like to use BTRFS compression?" -msgstr "Us agradaria utilitzar la compressió BTRFS?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "Us agradaria crear una partició separada per a /home?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "Les unitats seleccionades no tenen la capacitat mínima requerida per una recomanació automàtica\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "Capacitat mínima per la partició /home: {}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Capacitat mínima per la partició Arch Linux: {}GB" - -msgid "Continue" -msgstr "Continuar" - -msgid "yes" -msgstr "sí" - -msgid "no" -msgstr "no" - -msgid "set: {}" -msgstr "establir: {}" - -msgid "Manual configuration setting must be a list" -msgstr "La configuració manual ha de ser una llista" - -msgid "No iface specified for manual configuration" -msgstr "No s'ha especificat iface per a la configuració manual" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "La configuració manual de la NIC sense DHCP automàtic necessita una direcció IP" - -msgid "Add interface" -msgstr "Afegir interfície" - -msgid "Edit interface" -msgstr "Editar interfície" - -msgid "Delete interface" -msgstr "Eliminar interfície" - -msgid "Select interface to add" -msgstr "Seleccioneu la interfície a afegir" - -msgid "Manual configuration" -msgstr "Configuració manual" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "Marcar/Desmarcar una partició com a comprimida (només btrfs)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "La contrasenya que esteu utilitzant sembla dèbil, segur que voleu utilitzar-la?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "Proporciona una selecció d'entorns d'escriptori i gestors de finestres en mosaic, com ara gnome, kde, sway" - -msgid "Select your desired desktop environment" -msgstr "Seleccioneu el vostre entorn d'escriptori desitjat" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "Una instal·lació molt bàsica que us permet personalitzar Arch Linux com us sembli millor." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "Proporciona una selecció de varis paquets de servidor per a instal·lar i habilitar, com ara httpd, nginx, mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "Escolliu quins servidors instal·lar. Si no n'hi ha cap, es farà una instal·lació mínima" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "Instal·la un sistema mínim, així com controladors xorg i gràfics." - -msgid "Press Enter to continue." -msgstr "Polseu Enter per a continuar." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "Us agradaria accedir a la instal·lació acabada de crear i realitzar la configuració posterior a la instal·lació?" - -msgid "Are you sure you want to reset this setting?" -msgstr "Segur que voleu re-establir aquesta configuració?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "Seleccioneu un o més discos durs per a utilitzar i configurar\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "Qualsevol modificació a la configuració existent re-establirà el disseny del disc!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "Si re-establiu la selecció del disc dur, això també reiniciarà el disseny actual del disc. N'esteu segurs?" - -msgid "Save and exit" -msgstr "Guardar i sortir" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"conté particions a la cua, això les eliminarà, n'esteu segurs?" - -msgid "No audio server" -msgstr "Sense servidor d'àudio" - -msgid "(default)" -msgstr "(per defecte)" - -msgid "Use ESC to skip" -msgstr "Utilitzeu ESC per a ometre" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"Utilitzeu CTRL+C per reiniciar la selecció actual\n" -"\n" - -msgid "Copy to: " -msgstr "Copiar a: " - -msgid "Edit: " -msgstr "Editar: " - -msgid "Key: " -msgstr "Clau: " - -msgid "Edit {}: " -msgstr "Editar {}: " - -msgid "Add: " -msgstr "Afegir: " - -msgid "Value: " -msgstr "Valor: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "Podeu ometre la selecció d'una unitat i la partició i utilitzar qualsevol configuració d'unitat que estigui muntada a /mnt (experimental)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "Seleccioneu un dels discs o ometeu i utilitzeu /mnt com a predeterminat" - -msgid "Select which partitions to mark for formatting:" -msgstr "Seleccioneu quines particions marcar per a formatar:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "Utilitzar HSM per desbloquejar la unitat xifrada" - -msgid "Device" -msgstr "Dispositiu" - -msgid "Size" -msgstr "Mida" - -msgid "Free space" -msgstr "Espai lliure" - -msgid "Bus-type" -msgstr "Tipus de bus" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "S'ha d'especificar una contrasenya de root o un mínim d'un usuari amb privilegis sudo" - -msgid "Enter username (leave blank to skip): " -msgstr "Introduïu el nom d'usuari (deixeu-ho en blanc per a ometre): " - -msgid "The username you entered is invalid. Try again" -msgstr "El nom d'usuari introduït no és vàlid. Intenteu-ho de nou" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "Cal que \"{}\" sigui un superusuari (sudo)?" - -msgid "Select which partitions to encrypt" -msgstr "Seleccioneu quines particions xifrar" - -msgid "very weak" -msgstr "molt dèbil" - -msgid "weak" -msgstr "dèbil" - -msgid "moderate" -msgstr "moderada" - -msgid "strong" -msgstr "forta" - -msgid "Add subvolume" -msgstr "Afegir subvolum" - -msgid "Edit subvolume" -msgstr "Editar subvolum" - -msgid "Delete subvolume" -msgstr "Eliminar subvolum" - -msgid "Configured {} interfaces" -msgstr "{} interfícies configurades" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "Aquesta opció habilita el número de descàrregues paral·leles que poden haver-hi durant la instal·lació" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"Introduïu el número de descàrregues paral·leles a activar.\n" -" (Introduïu un valor entre 1 i {})\n" -"Nota:" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - Valor màxim : {} ( Permet {} descàrregues paral·leles, permet {} descàrregues simultànies )" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - Valor mínim : 1 ( Permet 1 descàrrega paral·lela, permet 2 descàrregues simultànies )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - Deshabilitar/Per defecte : 0 ( Desactiva les descàrregues paral·leles, només permet 1 descàrrega simultània )" - -#, 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! Intenteu-ho novament amb una entrada vàlida [1 a {max_downloads}, o 0 per desactivar]" - -msgid "Parallel Downloads" -msgstr "Descàrregues paral·leles" - -msgid "ESC to skip" -msgstr "ESC per a ometre" - -msgid "CTRL+C to reset" -msgstr "CTRL+C per a re-establir" - -msgid "TAB to select" -msgstr "TAB per a seleccionar" - -msgid "[Default value: 0] > " -msgstr "[Valor per defecte: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "Per a poder utilitzar aquesta traducció, instal·leu manualment una font que suporti l'idioma." - -msgid "The font should be stored as {}" -msgstr "La font s'ha de guardar com a {}" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "Archinstall necessita permisos de root per a executar-se. Vegeu --help per a més detalls." - -msgid "Select an execution mode" -msgstr "Seleccioneu un mode d'execució" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "No es pot recuperar el perfil de la URL especificada: {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "Els perfils han de tenir un nom únic, però s'han trobat definicions de perfil amb noms duplicats: {}" - -msgid "Select one or more devices to use and configure" -msgstr "Seleccioneu un o més dispositius per a utilitzar i configurar" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "Si re-establiu la selecció del dispositiu, això també en re-establirà el seu disseny actual. N'esteu segurs?" - -msgid "Existing Partitions" -msgstr "Particions existents" - -msgid "Select a partitioning option" -msgstr "Seleccioneu una opció de partició" - -msgid "Enter the root directory of the mounted devices: " -msgstr "Introduïu el directori arrel dels dispositius muntats: " - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "Capacitat mínima per a la partició /home: {}GiB\n" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "Capacitat mínima per a la partició 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 "Aquesta és una llista de profiles_bck preprogramada que podria facilitar la instal·lació de coses com ara entorns d'escriptori" - -msgid "Current profile selection" -msgstr "Selecció de perfil actual" - -msgid "Remove all newly added partitions" -msgstr "Eliminar totes les particions afegides recentment" - -msgid "Assign mountpoint" -msgstr "Assignar punt de muntatge" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "Marcar/Desmarcar per a formatar (esborra les dades)" - -msgid "Mark/Unmark as bootable" -msgstr "Marcar/Desmarcar com a arranc" - -msgid "Change filesystem" -msgstr "Canviar el sistema de fitxers" - -msgid "Mark/Unmark as compressed" -msgstr "Marcar/Desmarcar com a comprimit" - -msgid "Set subvolumes" -msgstr "Establir subvolums" - -msgid "Delete partition" -msgstr "Eliminar partició" - -msgid "Partition" -msgstr "Partició" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "Aquesta partició està actualment xifrada, cal especificar un sistema de fitxers per a formatar-la" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "Els punts de muntatge de la partició són relatius a l'interior de la instal·lació; per exemple, /boot seria l'arranc." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "Si s'estableix el punt de muntatge /boot, la partició també es marcarà com a partició d'arranc." - -msgid "Mountpoint: " -msgstr "Punt de muntatge: " - -msgid "Current free sectors on device {}:" -msgstr "Sectors lliures actuals al dispositiu {}:" - -msgid "Total sectors: {}" -msgstr "Sectors totals: {}" - -msgid "Enter the start sector (default: {}): " -msgstr "Introduïu el sector d'inici (per defecte: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "Introduïu el sector final de la partició (percentatge o número de bloc, per defecte: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "Això eliminarà totes les particions recentment afegides, continuar?" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "Gestió de particions: {}" - -#, python-brace-format -msgid "Total length: {}" -msgstr "Llargada total: {}" - -msgid "Encryption type" -msgstr "Tipus de xifrat" - -msgid "Iteration time" -msgstr "Temps d'iteració" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "Introduïu el temps d'iteració per al xifrat LUKS (en mil·lisegons)" - -msgid "Higher values increase security but slow down boot time" -msgstr "Un valor més alt incrementarà la seguretat però endarrerirà el temps d'arrancada" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "Per defecte: 10000ms, Rang recomanat: 1000-60000" - -msgid "Iteration time cannot be empty" -msgstr "El temps d'iteració no pot ser buit" - -msgid "Iteration time must be at least 100ms" -msgstr "El temps d'iteració ha de ser d'un mínim de 100ms" - -msgid "Iteration time must be at most 120000ms" -msgstr "El temps d'iteració ha de ser d'un màxim de 120000ms" - -msgid "Please enter a valid number" -msgstr "Si us plau, introduïu un número vàlid" - -msgid "Partitions" -msgstr "Particions" - -msgid "No HSM devices available" -msgstr "No hi ha dispositius HSM disponibles" - -msgid "Partitions to be encrypted" -msgstr "Particions a xifrar" - -msgid "Select disk encryption option" -msgstr "Seleccioneu la opció de xifrat de disc" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "Seleccioneu un dispositiu FIDO2 per a utilitzar amb HSM" - -msgid "Use a best-effort default partition layout" -msgstr "Utilitzar un disseny de partició òptim perdeterminat" - -msgid "Manual Partitioning" -msgstr "Partició manual" - -msgid "Pre-mounted configuration" -msgstr "Configuració premuntada" - -msgid "Unknown" -msgstr "Desconegut" - -msgid "Partition encryption" -msgstr "Xifrat de partició" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr " ! Formatant {} en " - -msgid "← Back" -msgstr "← Tornar" - -msgid "Disk encryption" -msgstr "Xifrat de disc" - -msgid "Configuration" -msgstr "Configuració" - -msgid "Password" -msgstr "Contrasenya" - -msgid "All settings will be reset, are you sure?" -msgstr "Tots els ajusts es reiniciaran, n'esteu segurs?" - -msgid "Back" -msgstr "Tornar" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "Si us plau, seleccioneu quin gestor d'inici de sessió instal·lar pels perfils escollits: {}" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "Tipus d'entorn: {}" - -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 "El controlador propietari d'Nvidia no és compatible amb sway. És possible que experimenteu problemes. Voleu continuar?" - -msgid "Installed packages" -msgstr "Paquets instal·lats" - -msgid "Add profile" -msgstr "Afegir perfil" - -msgid "Edit profile" -msgstr "Editar perfil" - -msgid "Delete profile" -msgstr "Eliminar perfil" - -msgid "Profile name: " -msgstr "Nom del perfil: " - -msgid "The profile name you entered is already in use. Try again" -msgstr "El nom de perfil que heu introduït ja està en ús. Intenteu-ho de nou" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "Paquets que s'instal·laran amb aquest perfil (separats per espais, deixeu-ho en blanc per a ometre): " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "Serveis que s'habilitaran amb aquest perfil (separats per espais, deixeu-ho en blanc per a ometre): " - -msgid "Should this profile be enabled for installation?" -msgstr "Cal habilitar aquest perfil per la instal·lació?" - -msgid "Create your own" -msgstr "Creeu el vostre propi" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"Seleccioneu un controlador gràfic o deixeu-ho en blanc per instal·lar tots els controladors de codi obert" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway necessita accés als vostres dispositius de hardware (teclat, ratolí, etc)" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Escolliu una opció per permetre que Sway accedeixi al vostre hardware" - -msgid "Graphics driver" -msgstr "Controlador de gràfics" - -msgid "Greeter" -msgstr "Gestor d'inici de sessió" - -msgid "Please chose which greeter to install" -msgstr "Si us plau, escolliu quin gestor d'inici de sessió instal·lar" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "Això és una llista de default_profiles preprogramada" - -msgid "Disk configuration" -msgstr "Configuració del disc" - -msgid "Profiles" -msgstr "Perfils" - -msgid "Finding possible directories to save configuration files ..." -msgstr "Buscant possibles directoris on guardar els fitxers de configuració ..." - -msgid "Select directory (or directories) for saving configuration files" -msgstr "Seleccioneu un directori (o directoris) on guardar els fitxers de configuració" - -msgid "Add a custom mirror" -msgstr "Afegir un mirall personalitzat" - -msgid "Change custom mirror" -msgstr "Canviar mirall personalitzat" - -msgid "Delete custom mirror" -msgstr "Eliminar mirall personalitzat" - -msgid "Enter name (leave blank to skip): " -msgstr "Introduïu el nom: (deixeu-ho en blanc per a ometre): " - -msgid "Enter url (leave blank to skip): " -msgstr "Introduïu la URL (deixeu-ho en blanc per a ometre): " - -msgid "Select signature check option" -msgstr "Seleccioneu la opció de verificació de firma" - -msgid "Select signature option" -msgstr "Seleccioneu la opció de firma" - -msgid "Custom mirrors" -msgstr "Miralls personalitzats" - -msgid "Defined" -msgstr "Definit" - -msgid "Save user configuration (including disk layout)" -msgstr "Guardar la configuració de l'usuari (incloent el disseny del disc)" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"Introduïu un directori on guardar les configuracions (compleció amb TAB activada)\n" -"Directori d'emmagatzematge: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"Voleu guardar {} fitxer(s) de configuració a la següent ubicació?\n" -"\n" -"{}" - -msgid "Saving {} configuration files to {}" -msgstr "Guardant {} fitxer(s) de configuració a {}" - -msgid "Mirrors" -msgstr "Miralls" - -msgid "Mirror regions" -msgstr "Regions dels miralls" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - Valor màxim : {} ( Permet {} descàrregues paral·leles, permets {max_downloads+1} descàrregues simultànies )" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "Entrada no vàlida! Intenteu-ho de nou amb una entrada vàlida [1 a {}, o 0 per desactivar]" - -msgid "Locales" -msgstr "Llocs" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "Utilitzar NetworkManager (necessari per a configurar internet gràficament a GNOME i KDE)" - -msgid "Total: {} / {}" -msgstr "Total: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "Tots els valors introduïts poden tenir una unitat com a sufix: B, KB, KiB, MB, MiB..." - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "Si no es proporciona cap unitat, el valor s'interpreta com sectors" - -msgid "Enter start (default: sector {}): " -msgstr "Introduïu l'inici (per defecte: sector {}): " - -msgid "Enter end (default: {}): " -msgstr "Introduïu el final (per defecte: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "No es poden determinar els dispositius fido2. Està instal·lat libfido2?" - -msgid "Path" -msgstr "Ruta" - -msgid "Manufacturer" -msgstr "Fabricant" - -msgid "Product" -msgstr "Producte" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "Configuració no vàlida: {error}" - -msgid "Type" -msgstr "Tipus" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "Aquesta opció habilita el número de descàrregues paral·leles que poden haver-hi mentre es descarreguen paquets" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"Introduïu el número de descàrregues paral·leles a activar.\n" -"\n" -"Nota:\n" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - Valor màxim recomanat : {} ( Permets {} descàrregues paral·leles simultànies )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - Desactivar/Per defecte : 0 ( Desactiva les descàrregues paral·leles, només permet 1 descàrrega simultània )\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "Entrada no vàlida! Intenteu-ho de nou amb una entrada vàlida [o 0 per a desactivar]" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Hyprland necessita accés al vostre seient (col·lecció de dispositius de hardware, és a dir, teclat, ratolí, etc)" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Escolliu una opció per permetre a Hyprland l'accés al vostre hardware" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "Tots els valors introduïts poden tenir un sufix d'unitat: %, B, KB, KiB, MB, MiB..." - -msgid "Would you like to use unified kernel images?" -msgstr "Us agradaria utilitzar imatges del kernel unificades?" - -msgid "Unified kernel images" -msgstr "Imatges del kernel unificades" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "Esperant a què es completi la sincronització de l'hora (timedatectl show)." - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "La sincronització d'hora no es completa. Mentre espereu - consulteu la documentació per a trobar solucions: https://archinstall.readthedocs.io/" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "Ometent l'espera de la sincronització automàtica de l'hora (això pot causar problemes si l'hora no està sincronitzada durant la instal·lació)" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "Esperant a què es completi la sincronització del clauer d'Arch Linux (archlinux-keyring-wkd-sync)." - -msgid "Selected profiles: " -msgstr "Perfils seleccionats: " - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "La sincronització d'hora no es completa. Mentre espereu - consulteu la documentació per a trobar solucions: https://archinstall.readthedocs.io/" - -msgid "Mark/Unmark as nodatacow" -msgstr "Marcar/Desmarcar com nodatacow" - -msgid "Would you like to use compression or disable CoW?" -msgstr "Us agradaria utilitzar compressió o desactivar CoW?" - -msgid "Use compression" -msgstr "Utilitzar compressió" - -msgid "Disable Copy-on-Write" -msgstr "Desactivar Copy-on-Write" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "Proporciona una selecció d'entorns d'escriptori i gestors de finestres en mosaic, com ara GNOME, KDE Plasma, Sway" - -#, python-brace-format -msgid "Configuration type: {}" -msgstr "Tipus de configuració: {}" - -msgid "LVM configuration type" -msgstr "Tipus de configuració LVM" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "Actualment no s'admet el xifrat de disc LVM amb més de 2 particions" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "Utilitzar NetworkManager (necessari per a configurar internet gràficament a GNOME i KDE Plasma)" - -msgid "Select a LVM option" -msgstr "Seleccionar una opció LVM" - -msgid "Partitioning" -msgstr "Particionament" - -msgid "Logical Volume Management (LVM)" -msgstr "Gestió de volums lògics (LVM)" - -msgid "Physical volumes" -msgstr "Volums físics" - -msgid "Volumes" -msgstr "Volums" - -msgid "LVM volumes" -msgstr "Volums LVM" - -msgid "LVM volumes to be encrypted" -msgstr "Volums LVM a xifrar" - -msgid "Select which LVM volumes to encrypt" -msgstr "Seleccioneu quins volums LVM cal xifrar" - -msgid "Default layout" -msgstr "Disseny predeterminat" - -msgid "No Encryption" -msgstr "Sense xifrat" - -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 "Ajuda d'Archinstall" - -msgid " (default)" -msgstr " (predeterminat)" - -msgid "Press Ctrl+h for help" -msgstr "Polseu Ctrl+h per ajuda" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "Escolliu una opció per permetre que Sway accedeixi al vostre hardware" - -msgid "Seat access" -msgstr "Accés al seient" - -msgid "Mountpoint" -msgstr "Punt de muntatge" - -msgid "HSM" -msgstr "HSM" - -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "Introduïu la contrasenya del xifrat de disc (deixeu-ho en blanc per a no xifrar)" - -msgid "Disk encryption password" -msgstr "Contrasenya del xifrat del disc" - -msgid "Partition - New" -msgstr "Partició - Nova" - -msgid "Filesystem" -msgstr "Sistema de fitxers" - -msgid "Invalid size" -msgstr "Mida invàlida" - -msgid "Start (default: sector {}): " -msgstr "Inici (per defecte: sector {}): " - -msgid "End (default: {}): " -msgstr "Final (per defecte: {}): " - -msgid "Subvolume name" -msgstr "Nom del subvolum" - -msgid "Disk configuration type" -msgstr "Tipus de configuració del disc" - -msgid "Root mount directory" -msgstr "Directori de muntatge arrel" - -msgid "Select language" -msgstr "Seleccioneu l'idioma" - -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "Escriviu paquets addicionals per instal·lar (separats per espais; deixeu-ho en blanc per saltar aquest pas):" - -msgid "Invalid download number" -msgstr "Número de descàrrega invàlid" - -msgid "Number downloads" -msgstr "Número de descàrregues" - -msgid "The username you entered is invalid" -msgstr "El nom d'usuari introduït no és vàlid" - -msgid "Username" -msgstr "Nom d'usuari" - -#, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "Cal que \"{}\" sigui superusuari (sudo)?\n" - -msgid "Interfaces" -msgstr "Interfícies" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "Necessiteu introduir una IP vàlida al mode de configuració d'IP" - -msgid "Modes" -msgstr "Modes" - -msgid "IP address" -msgstr "Adreça IP" - -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "Introduïu la IP de la porta d'enllaç (router). Deixeu-ho en blanc per a no utilitzar-ne cap." - -msgid "Gateway address" -msgstr "Adreça de la porta d'enllaç" - -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "Introduïu els vostres servidors DNS (separats per espais; deixeu-ho en blanc per a cap)" - -msgid "DNS servers" -msgstr "Servidors DNS" - -msgid "Configure interfaces" -msgstr "Configurar interfícies" - -msgid "Kernel" -msgstr "Nuclis" - -msgid "UEFI is not detected and some options are disabled" -msgstr "S'han desactivat algunes opcions perquè no s'ha detectat UEFI" - -msgid "Info" -msgstr "Info" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "El controlador propietari Nvidia no és compatible amb Sway." - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "És possible que experimenteu problemes. Voleu continuar?" - -msgid "Main profile" -msgstr "Perfil principal" - -msgid "Confirm password" -msgstr "Confirmar contrasenya" - -msgid "The confirmation password did not match, please try again" -msgstr "La confirmació de la contrasenya no coincideix, si us plau torneu-ho a intentar" - -msgid "Not a valid directory" -msgstr "Directori invàlid" - -msgid "Would you like to continue?" -msgstr "Voleu continuar?" - -msgid "Directory" -msgstr "Directori" - -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "Introduïu un directori on guardar les configuracions (compleció amb TAB activada)" - -#, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "Voleu guardar el(s) fitxer(s) de configuració a {}?" - -msgid "Enabled" -msgstr "Activat" - -msgid "Disabled" -msgstr "Desactivat" - -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "Si us plau, envieu aquest problema (i fitxer) a https://github.com/archlinux/archinstall/issues" - -msgid "Mirror name" -msgstr "Nom del mirall" - -msgid "Url" -msgstr "Url" - -msgid "Select signature check" -msgstr "Seleccionar verificació de signatura" - -msgid "Select execution mode" -msgstr "Seleccionar mode d'execució" - -msgid "Press ? for help" -msgstr "Polseu ? per accedir a l'ajuda" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "Escolliu una opció per permetre a Hyprland l'accés al vostre maquinari" - -msgid "Additional repositories" -msgstr "Repositoris addicionals" - -msgid "NTP" -msgstr "NTP" - -msgid "Swap on zram" -msgstr "Swap a zram" - -msgid "Name" -msgstr "Nom" - -msgid "Signature check" -msgstr "Verificació de signatura" - -#, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "Segment d'espai lliure seleccionat al dispositiu {}:" - -#, python-brace-format -msgid "Size: {} / {}" -msgstr "Mida: {} / {}" - -#, python-brace-format -msgid "Size (default: {}): " -msgstr "Mida (per defecte: {}): " - -msgid "HSM device" -msgstr "Dispositiu HSM" - -msgid "Some packages could not be found in the repository" -msgstr "Alguns paquets no s'han trobat al repositori" - -msgid "User" -msgstr "Usuari" - -msgid "The specified configuration will be applied" -msgstr "S'aplicarà la configuració especificada" - -msgid "Wipe" -msgstr "Esborrat complet" - -msgid "Mark/Unmark as XBOOTLDR" -msgstr "Marcar/Desmarcar com XBOOTLDR" - -msgid "Loading packages..." -msgstr "Carregant paquets..." - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "Seleccioneu qualsevol paquet de la llista de sota a incloure a la instal·lació" - -msgid "Add a custom repository" -msgstr "Afegir un repositori personalitzat" - -msgid "Change custom repository" -msgstr "Canviar repositori personalitzat" - -msgid "Delete custom repository" -msgstr "Eliminar repositori personalitzat" - -msgid "Repository name" -msgstr "Nom del repositori" - -msgid "Add a custom server" -msgstr "Afegir un servidor personalitzat" - -msgid "Change custom server" -msgstr "Canviar servidor personalitzat" - -msgid "Delete custom server" -msgstr "Eliminar servidor personalitzat" - -msgid "Server url" -msgstr "URL del servidor" - -msgid "Select regions" -msgstr "Seleccioneu regions" - -msgid "Add custom servers" -msgstr "Afegir servidors personalitzats" - -msgid "Add custom repository" -msgstr "Afegir un repositori personalitzat" - -msgid "Loading mirror regions..." -msgstr "Carregant regions dels miralls..." - -msgid "Mirrors and repositories" -msgstr "Miralls i repositoris" - -msgid "Selected mirror regions" -msgstr "Regions de miralls seleccionades" - -msgid "Custom servers" -msgstr "Servidors personalitzats" - -msgid "Custom repositories" -msgstr "Repositoris personalitzats" - -msgid "Only ASCII characters are supported" -msgstr "Només es suporten caràcters ASCII" - -msgid "Show help" -msgstr "Mostrar l'ajuda" - -msgid "Exit help" -msgstr "Sortir de l'ajuda" - -msgid "Preview scroll up" -msgstr "Previsualització amunt" - -msgid "Preview scroll down" -msgstr "Previsualització avall" - -msgid "Move up" -msgstr "Mou amunt" - -msgid "Move down" -msgstr "Mou avall" - -msgid "Move right" -msgstr "Mou a la dreta" - -msgid "Move left" -msgstr "Mou a l'esquerra" - -msgid "Jump to entry" -msgstr "Saltar cap a un registre" - -msgid "Skip selection (if available)" -msgstr "Saltar la selecció (si està disponible)" - -msgid "Reset selection (if available)" -msgstr "Reiniciar la selecció (si està disponible)" - -msgid "Select on single select" -msgstr "Selecció única" - -msgid "Select on multi select" -msgstr "Selecció múltiple" - -msgid "Reset" -msgstr "Reiniciar" - -msgid "Skip selection menu" -msgstr "Saltar el menú de selecció" - -msgid "Start search mode" -msgstr "Iniciar el mode de cerca" - -msgid "Exit search mode" -msgstr "Sortir del mode de cerca" - -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "labwc necessita accés al vostre seient (gestor de dispositius de maquinari, com ara teclat, ratolí, etc)" - -msgid "Choose an option to give labwc access to your hardware" -msgstr "Escolliu una opció per permetre que labwc accedeixi al vostre hardware" - -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "niri necessita accés al vostre seient (gestor de dispositius de maquinari, com ara teclat, ratolí, etc)" - -msgid "Choose an option to give niri access to your hardware" -msgstr "Escolliu una opció per permetre que niri accedeixi al vostre hardware" - -msgid "Mark/Unmark as ESP" -msgstr "Marcar/Desmarcar com a ESP" - -msgid "Package group:" -msgstr "Group de paquets:" - -msgid "Exit archinstall" -msgstr "Sortir d'Archinstall" - -msgid "Reboot system" -msgstr "Reiniciar el sistema" - -msgid "chroot into installation for post-installation configurations" -msgstr "feu chroot a la instal·lació per a configuracions posteriors" - -msgid "Installation completed" -msgstr "Instal·lació completa" - -msgid "What would you like to do next?" -msgstr "Què voleu fer a continuació?" - -#, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "Seleccioneu quin mode cal configurar per a \"{}\"" - -msgid "Incorrect credentials file decryption password" -msgstr "Contrasenya de desencriptació incorrecta pel fitxer de credencials" - -msgid "Incorrect password" -msgstr "Contrasenya incorrecta" - -msgid "Credentials file decryption password" -msgstr "Contrasenya de desencriptació del fitxer de credencials" - -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "Voleu encriptar el fitxer user_credentials.json?" - -msgid "Credentials file encryption password" -msgstr "Contrasenya d'encriptació del fitxer de credencials" - -#, python-brace-format -msgid "Repositories: {}" -msgstr "Repositoris: {}" - -#, fuzzy -msgid "New version available" -msgstr "No hi ha dispositius HSM disponibles" - -#, fuzzy -msgid "Passwordless login" -msgstr "Contrasenya" - -msgid "Second factor login" -msgstr "" - -msgid "Bluetooth" -msgstr "" - -#, fuzzy -msgid "Would you like to configure Bluetooth?" -msgstr "Voleu continuar?" - -msgid "Authentication" -msgstr "" - -msgid "Applications" -msgstr "" - -msgid "U2F login method: " -msgstr "" - -msgid "Passwordless sudo: " -msgstr "" - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "" - -msgid "Syncing the system..." -msgstr "" - -#, fuzzy -msgid "Value cannot be empty" -msgstr "El temps d'iteració no pot ser buit" - -msgid "Snapshot type" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Snapshot type: {}" -msgstr "Tipus d'entorn: {}" - -msgid "U2F login setup" -msgstr "" - -msgid "No U2F devices found" -msgstr "" - -msgid "U2F Login Method" -msgstr "" - -#, fuzzy -msgid "Enable passwordless sudo?" -msgstr "Introduïu una contrasenya: " - -#, fuzzy, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "Seleccioneu un dispositiu FIDO2 per a utilitzar amb HSM" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "" - -msgid "Starting device modifications in " -msgstr "" - -#, fuzzy -msgid "No network connection found" -msgstr "Sense configuració de xarxa" - -#, fuzzy -msgid "Would you like to connect to a Wifi?" -msgstr "Voleu continuar?" - -#, fuzzy -msgid "No wifi interface found" -msgstr "Configurar interfícies" - -#, fuzzy -msgid "Select wifi network to connect to" -msgstr "Seleccioneu una interfície de xarxa a configurar" - -msgid "Scanning wifi networks..." -msgstr "" - -#, fuzzy -msgid "No wifi networks found" -msgstr "Sense configuració de xarxa" - -msgid "Failed setting up wifi" -msgstr "" - -#, fuzzy -msgid "Enter wifi password" -msgstr "Introduïu una contrasenya: " - -msgid "Ok" -msgstr "" diff --git a/examples/archinstall/archinstall/locales/cs/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/cs/LC_MESSAGES/base.mo deleted file mode 100644 index 259b030..0000000 Binary files a/examples/archinstall/archinstall/locales/cs/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/cs/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/cs/LC_MESSAGES/base.po deleted file mode 100644 index 0f821b9..0000000 --- a/examples/archinstall/archinstall/locales/cs/LC_MESSAGES/base.po +++ /dev/null @@ -1,1812 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Martin Kozák \n" -"Language-Team: \n" -"Language: cs\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.6\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] Soubor protokolu byl vytvořen zde: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Prosím, informujte nás o této chybě (spolu se souborem) na https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "Skutečně chcete proces přerušit?" - -msgid "And one more time for verification: " -msgstr "Ještě jednou pro ověření: " - -msgid "Would you like to use swap on zram?" -msgstr "Přejete si použít swap na zram?" - -msgid "Desired hostname for the installation: " -msgstr "Název počítače k instalaci: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "Uživatelské jméno pro superuživatele s oprávněními sudo: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "Další uživatelé, kteří mají být nainstalováni (ponechte prázdné pro žádné uživatele): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "Má být tento uživatel superuživatelem (sudoer)?" - -msgid "Select a timezone" -msgstr "Zvolte časovou zónu" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "Přejete si použít GRUB jako hlavní zavaděč namísto systemd-boot?" - -msgid "Choose a bootloader" -msgstr "Zvolte zavaděč" - -msgid "Choose an audio server" -msgstr "Zvolte audio server" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Budou nainstalovány pouze balíčky jako base, base-devel, linux, linux-firmware, efibootmgr a volitelné balíčky profilu." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "Pokud si přejete nainstalovat webový prohlížeč, jako je například Firefox nebo Chromium, můžete jej zadat do následujícího pole." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "Zadejte další balíčky k instalaci (oddělené mezerou, ponechte prázdné k přeskočení): " - -msgid "Copy ISO network configuration to installation" -msgstr "Zkopírovat do instalace konfiguraci sítě z ISO" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "Použít NetworkManager (potřebné pro grafickou konfiguraci v GNOME a KDE)" - -msgid "Select one network interface to configure" -msgstr "Zvolte síťové rozhraní ke konfiguraci" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "Zvolte který režim má být nastaven pro \"{}\" nebo přeskočte pro použití výchozího režimu \"{}\"" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "Zadejte IP a podsíť pro {} (např. 192.168.0.5/24) " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "Zadejte IP vaší brány (routeru) nebo ponechte prázdné pro žádnou: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "Zadejte vaše DNS servery (oddělené mezerou, ponechte prázdné pro žádné): " - -msgid "Select which filesystem your main partition should use" -msgstr "Zvolte souborový systém, který se má použít pro váš hlavní oddíl" - -msgid "Current partition layout" -msgstr "Aktuální rozdělení disku" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "Zvolte co dělat s {}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "Zadejte požadovaný souborový systém pro oddíl" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "Zadejte počáteční pozici (jednotky: s, GB, %, atd. ; výchozí: {}): " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "Zadejte koncovou pozici (jednotky: s, GB, %, atd. ; např.: {}): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} obsahuje oddíly ve frontě, toto je odstraní, jste si jisti?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"Vyberte podle indexu, které oddíly chcete odstranit" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"Vyberte podle indexu, který oddíl se má připojit kam" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * Přípojné body diskových oddílů jsou relativní uvnitř instalace, například spouštěcí bod by byl /boot." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "Zvolte kam připojit oddíl (ponechte prázdné pro odstranění přípojného bodu): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"Zvolte oddíl, který bude označen ke zformátování" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"Zvolte oddíl, který bude označen jako šifrovaný" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"Zvolte oddíl, který bude označen jako spouštěcí" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"Zvolte oddíl, na kterém bude souborový systém" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "Zadejte požadovaný typ souborového systému pro oddíl: " - -msgid "Archinstall language" -msgstr "Jazyk pro Archinstall" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Vymazat všechny vybrané disky a použít chytré výchozí rozdělení oddílů" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Zvolte, co se má udělat s jednotlivými disky (následováno použitím oddílu)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "Zvolte, co si přejete udělat s vybranými blokovými zařízeními" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "Toto je seznam před-programovaných profilů, které by mohly usnadnit instalaci věcí jako jsou desktopová prostředí" - -msgid "Select keyboard layout" -msgstr "Zvolte rozložení klávesnice" - -msgid "Select one of the regions to download packages from" -msgstr "Zvolte region ze kterého se budou stahovat balíčky" - -msgid "Select one or more hard drives to use and configure" -msgstr "Zvolte jeden nebo více pevných disků k použití a konfiguraci" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "Pro nejlepší kompatibilitu s vaším hardwarem AMD můžete použít buď možnost vše open-source nebo AMD / ATI." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "Pro nejlepší kompatibilitu s vaším hardwarem Intel můžete použít buď možnost vše open-source nebo Intel.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Pro nejlepší kompatibilitu s vaším hardwarem Nvidia můžete použít buď možnost vše open-source nebo proprietární ovladač Nvidia.\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"Zvolte ovladač grafické karty nebo ponechte prázdné k instalaci všech open-source ovladačů" - -msgid "All open-source (default)" -msgstr "Vše open-source (výchozí)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "Zvolte jádra, která mají být použita, nebo ponechte prázdné pro výchozí \"{}\"" - -msgid "Choose which locale language to use" -msgstr "Zvolte jazyk lokalizace, který chcete používat" - -msgid "Choose which locale encoding to use" -msgstr "Zvolte kódování lokalizace, které chcete používat" - -msgid "Select one of the values shown below: " -msgstr "Zvolte jednu z hodnot zobrazenou níže: " - -msgid "Select one or more of the options below: " -msgstr "Zvolte jednu nebo více možností níže: " - -msgid "Adding partition...." -msgstr "Přidávání nového oddílu..." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "Chcete-li pokračovat, musíte zvolit platný typ souborového systému. Seznam validních typů najdete například ve výstupu `man parted`." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Chyba: Výpis profilů z URL \"{}\" skončilo výstupem:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "Chyba: Nepodařilo se dekódovat výsledek \"{}\" jako JSON:" - -msgid "Keyboard layout" -msgstr "Rozložení klávesnice" - -msgid "Mirror region" -msgstr "Oblast zrcadla" - -msgid "Locale language" -msgstr "Místní jazyk" - -msgid "Locale encoding" -msgstr "Kódování místního jazyka" - -msgid "Drive(s)" -msgstr "Disk(y)" - -msgid "Disk layout" -msgstr "Rozdělení disku" - -msgid "Encryption password" -msgstr "Šifrovací heslo" - -msgid "Swap" -msgstr "Swap" - -msgid "Bootloader" -msgstr "Zavaděč" - -msgid "Root password" -msgstr "Heslo správce (root)" - -msgid "Superuser account" -msgstr "Účet superuživatele" - -msgid "User account" -msgstr "Uživatelský účet" - -msgid "Profile" -msgstr "Profil" - -msgid "Audio" -msgstr "Audio" - -msgid "Kernels" -msgstr "Jádra" - -msgid "Additional packages" -msgstr "Dodatečné balíčky" - -msgid "Network configuration" -msgstr "Konfigurace sítě" - -msgid "Automatic time sync (NTP)" -msgstr "Automatická synchronizace času (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "Instalovat ({} konfigurace chybí)" - -msgid "" -"You decided to skip harddrive selection\n" -"and will use whatever drive-setup is mounted at {} (experimental)\n" -"WARNING: Archinstall won't check the suitability of this setup\n" -"Do you wish to continue?" -msgstr "" -"Rozhodli jste se přeskočit výběr pevného disku\n" -"a použijete jakýkoli disk, který je připojen na {} (experimentální)\n" -"VAROVÁNÍ: Archinstall nezkontroluje korektnost takové instalace\n" -"Přejete si pokračovat?" - -msgid "Re-using partition instance: {}" -msgstr "Použití existující instance oddílu: {}" - -msgid "Create a new partition" -msgstr "Vytvořit nový oddíl" - -msgid "Delete a partition" -msgstr "Smazat oddíl" - -msgid "Clear/Delete all partitions" -msgstr "Vyčistit/Smazat všechny oddíly" - -msgid "Assign mount-point for a partition" -msgstr "Přiřaďte přípojný bod k oddílu" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "Označení/Odznačení oddílu ke zformátování (vymaže data)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "Označení/Odznačení oddílu jako šifrovaného" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "Označení/Odznačení oddílu jako spouštěcího (automatické pro /boot)" - -msgid "Set desired filesystem for a partition" -msgstr "Zvolte požadovaný souborový systém pro oddíl" - -msgid "Abort" -msgstr "Přerušit" - -msgid "Hostname" -msgstr "Název počítače" - -msgid "Not configured, unavailable unless setup manually" -msgstr "Nenakonfigurováno, nedostupné mimo ruční instalaci" - -msgid "Timezone" -msgstr "Časová zóna" - -msgid "Set/Modify the below options" -msgstr "Nastavte/Upravte možnosti níže" - -msgid "Install" -msgstr "Instalovat" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"Pomocí ESC přeskočíte\n" -"\n" - -msgid "Suggest partition layout" -msgstr "Navrhnout rozdělení oddílů" - -msgid "Enter a password: " -msgstr "Zadejte heslo: " - -msgid "Enter a encryption password for {}" -msgstr "Zadejte šifrovací heslo pro {}" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "Zadejte šifrovací heslo celého disku (ponechte prázdné pro nepoužití šifrování): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "Vytvořte povinný účet superuživatele s oprávněními sudo: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "Zadejte heslo uživatele root (ponechte prázdné k zakázání uživatele root): " - -msgid "Password for user \"{}\": " -msgstr "Heslo pro uživatele \"{}\": " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "Kontrola existence dodatečných balíčků (to může trvat několik sekund)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "Přejete si použít automatickou synchronizaci času (NTP) pomocí výchozích serverů?\n" - -msgid "" -"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" -"For more information, please check the Arch wiki" -msgstr "" -"Pro fungování NTP může být vyžadován hardwarový čas a další kroky po konfiguraci.\n" -"Pro další informace navštivte Arch Wiki" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "Zadejte uživatelské jméno k přidání dalšího uživatele (ponechte prázdné k přeskočení): " - -msgid "Use ESC to skip\n" -msgstr "Pomocí ESC přeskočíte\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -"Vyberte objekt ze seznamu a zvolte k němu jednu z možných akcí" - -msgid "Cancel" -msgstr "Zrušit" - -msgid "Confirm and exit" -msgstr "Potvrdit a ukončit" - -msgid "Add" -msgstr "Přidat" - -msgid "Copy" -msgstr "Kopírovat" - -msgid "Edit" -msgstr "Upravit" - -msgid "Delete" -msgstr "Smazat" - -msgid "Select an action for '{}'" -msgstr "Zvolte akci pro '{}'" - -msgid "Copy to new key:" -msgstr "Zkopírovat k novému klíči:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "Neznámý typ nic: {}. Možné hodnoty jsou {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"Toto je vaše konfigurace:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Pacman je již spuštěn, po 10 minutách bude vynuceno jeho ukončení." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "Nalezen zámek předchozí instance pacman. Před používáním archinstall, prosím, vyčistěte všechna existující sezení pacman." - -msgid "Choose which optional additional repositories to enable" -msgstr "Vyberte, které dodatečné balíčky mají být povoleny" - -msgid "Add a user" -msgstr "Přidat uživatele" - -msgid "Change password" -msgstr "Změnit heslo" - -msgid "Promote/Demote user" -msgstr "Udělení/Odebrání práv uživatele" - -msgid "Delete User" -msgstr "Smazat uživatele" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"Vytvořit nového uživatele\n" - -msgid "User Name : " -msgstr "Uživatelské jméno: " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "Má být {} superuživatelem (sudoer)?" - -msgid "Define users with sudo privilege: " -msgstr "Specifikovat uživatele s oprávněními sudo: " - -msgid "No network configuration" -msgstr "Žádná konfigurace sítě" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "Nastavení požadované podsvazky na oddílu btrfs" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "{} Zvolte oddíl, na kterém budou podsvazky nastaveny" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "Spravovat podsvazky pro aktuální oddíl" - -msgid "No configuration" -msgstr "Žádná konfigurace" - -msgid "Save user configuration" -msgstr "Uložit uživatelskou konfiguraci" - -msgid "Save user credentials" -msgstr "Uložit přihlašovací údaje" - -msgid "Save disk layout" -msgstr "Uložit rozdělení disku" - -msgid "Save all" -msgstr "Uložit vše" - -msgid "Choose which configuration to save" -msgstr "Vyberte, které konfigurace mají být uloženy" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "Zadejte adresář pro uložení konfigurace (konfigurací): " - -msgid "Not a valid directory: {}" -msgstr "Adresář není validní: {}" - -msgid "The password you are using seems to be weak," -msgstr "Vaše heslo se zdá být slabé," - -msgid "are you sure you want to use it?" -msgstr "přejete si ho skutečně použít?" - -msgid "Optional repositories" -msgstr "Volitelné repozitáře" - -msgid "Save configuration" -msgstr "Uložit konfiguraci" - -msgid "Missing configurations:\n" -msgstr "Chybějící konfigurace:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "Musí být zadáno heslo správce (root) nebo musí existovat alespoň jeden superuživatel" - -msgid "Manage superuser accounts: " -msgstr "Spravovat účty superuživatele: " - -msgid "Manage ordinary user accounts: " -msgstr "Spravovat běžné účty: " - -msgid " Subvolume :{:16}" -msgstr " Podsvazek :{:16}" - -msgid " mounted at {:16}" -msgstr " připojen na :{:16}" - -msgid " with option {}" -msgstr " s přepínačem {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -"Zadejte požadované hodnoty pro nový podsvazek \n" - -msgid "Subvolume name " -msgstr "Název podsvazku " - -msgid "Subvolume mountpoint" -msgstr "Přípojný bod podsvazku" - -msgid "Subvolume options" -msgstr "Přepínače podsvazku" - -msgid "Save" -msgstr "Uložit" - -msgid "Subvolume name :" -msgstr "Název podsvazku:" - -msgid "Select a mount point :" -msgstr "Zvolte přípojný bod:" - -msgid "Select the desired subvolume options " -msgstr "Zvolte požadované přepínače podsvazku " - -msgid "Define users with sudo privilege, by username: " -msgstr "Specifikace uživatelů s oprávněními sudo, pomocí uživatelského jména: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] Soubor s protokoly byl uložen zde: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "Přejete si použít výchozí strukturu BTRFS podsvazků?" - -msgid "Would you like to use BTRFS compression?" -msgstr "Přejete si použít BTRFS kompresi?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "Přejete si vytvořit oddělený oddíl pro /home?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "Vybrané disky nemají dostatečnou kapacitu potřebnou k automatickému návrhu\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "Minimální kapacita pro oddíl /home: {}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Minimální kapacita pro oddíl s Arch Linux: {}GB" - -msgid "Continue" -msgstr "Pokračovat" - -msgid "yes" -msgstr "ano" - -msgid "no" -msgstr "ne" - -msgid "set: {}" -msgstr "nastavit: {}" - -msgid "Manual configuration setting must be a list" -msgstr "Ruční konfigurace musí být seznam" - -msgid "No iface specified for manual configuration" -msgstr "Pro ruční konfiguraci nebyl vybrán žádný iface" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "Ruční konfigurace nic bez automatického DHCP vyžaduje IP adresu" - -msgid "Add interface" -msgstr "Přidat rozhraní" - -msgid "Edit interface" -msgstr "Upravit rozhraní" - -msgid "Delete interface" -msgstr "Smazat rozhraní" - -msgid "Select interface to add" -msgstr "Zvolit rozhraní k přidání" - -msgid "Manual configuration" -msgstr "Ruční konfigurace" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "Označit/Odznačit oddíl s kompresí (jen pro btrfs)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "Vaše heslo se zdá být slabé, chcete ho skutečně použít?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "Nabízí výběr desktopových prostředí a tiling správců oken, např. gnome, kde, sway" - -msgid "Select your desired desktop environment" -msgstr "Zvolte si požadované desktopové prostředí" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "Základní instalace, která vám umožní si nastavit Arch Linux jakkoliv si budete přát." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "Nabízí výběr různých serverových balíčků k instalaci a aktivaci, např. httpd, nginx, mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "Vyberte, které servery mají být nainstalovány, pokud nezvolíte žádné, bude provedena jen základní instalace" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "Nainstaluje minimalistický systém spolu s xorg a ovladači grafiky." - -msgid "Press Enter to continue." -msgstr "Stiskněte ENTER pro pokračování." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "Přejete si vstoupit skrze chroot do své nově vytvořené instalace a provést závěrečnou konfiguraci?" - -msgid "Are you sure you want to reset this setting?" -msgstr "Skutečně si přejete resetovat toto nastavení?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "Zvolte jeden nebo více pevných disků k použití a konfiguraci\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "Jakékoliv úpravy stávajícího nastavení resetuje rozdělení disku!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "Pokud resetujete výběr disku, také tím resetujete stávající rozdělení. Přejete si pokračovat?" - -msgid "Save and exit" -msgstr "Uložit a ukončit" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"obsahuje oddíly ve frontě, toto je odstraní, jste si jisti?" - -msgid "No audio server" -msgstr "Žádný audio server" - -msgid "(default)" -msgstr "(výchozí)" - -msgid "Use ESC to skip" -msgstr "Pomocí ESC přeskočíte" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "Pomocí CTRL+C zrušíte stávající výběr\n" - -msgid "Copy to: " -msgstr "Zkopírovat do: " - -msgid "Edit: " -msgstr "Upravit: " - -msgid "Key: " -msgstr "Klíč: " - -msgid "Edit {}: " -msgstr "Upravit {}: " - -msgid "Add: " -msgstr "Přidat: " - -msgid "Value: " -msgstr "Hodnota: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "Výběr disku a tvorbu oddílů můžete přeskočit a použít jakýkoliv setup, který je připojen na /mnt (experimentální)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "Zvolte jeden z disků nebo přeskočte a použijte /mnt jako výchozí" - -msgid "Select which partitions to mark for formatting:" -msgstr "Zvolte oddíly, které mají být označeny ke zformátování:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "Použít HSM k odemykání zašifrovaného disku" - -msgid "Device" -msgstr "Zařízení" - -msgid "Size" -msgstr "Velikost" - -msgid "Free space" -msgstr "Volné místo" - -msgid "Bus-type" -msgstr "Typ sběrnice" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "Musí být zadáno heslo správce (root) nebo musí být specifikován alespoň jeden uživatel s sudo oprávněními" - -msgid "Enter username (leave blank to skip): " -msgstr "Zadejte uživatelské jméno (ponechte prázdné k přeskočení): " - -msgid "The username you entered is invalid. Try again" -msgstr "Zadané uživatelské jméno není platné. Zkuste to znovu" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "Má být \"{}\" superuživatelem (sudoer)?" - -msgid "Select which partitions to encrypt" -msgstr "Zvolte oddíl, který bude označen jako šifrovaný" - -msgid "very weak" -msgstr "velmi slabé" - -msgid "weak" -msgstr "slabé" - -msgid "moderate" -msgstr "středně silné" - -msgid "strong" -msgstr "silné" - -msgid "Add subvolume" -msgstr "Přidat podsvazek" - -msgid "Edit subvolume" -msgstr "Upravit podsvazek" - -msgid "Delete subvolume" -msgstr "Smazat podsvazek" - -msgid "Configured {} interfaces" -msgstr "Nakonfigurováno {} rozhraní" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "Tato možnost povolí specifikovaný počet paralelních stahování, která mohou nastat při instalaci" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"Zadejte povolený počet paralelních stahování.\n" -" (Zadejte hodnotu mezi 1 a {})\n" -"Poznámka:" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - Maximální hodnota : {} (Povolí {} paralelních stahování, povolí {} stahování naráz )" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - Minimální hodnota : 1 (Povolí 1 paralelní stahování, povolí 2 stahování naráz)" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - Zakázáno/Výchozí : 0 (Zakáže paralelní stahování, povolí pouze 1 stahování naráz)" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "Neplatný vstup! Zkuste to, prosím, znovu s platným vstupem [1 až {max_downloads}, nebo 0 pro vypnutí]" - -msgid "Parallel Downloads" -msgstr "Paralelní stahování" - -msgid "ESC to skip" -msgstr "Pomocí ESC přeskočíte" - -msgid "CTRL+C to reset" -msgstr "CTRL+C pro zrušení" - -msgid "TAB to select" -msgstr "TAB k výběru" - -msgid "[Default value: 0] > " -msgstr "[Výchozí hodnota: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "Abyste mohli používat tento překlad, nainstalujte prosím písmo, které zvolený jazyk podporuje." - -msgid "The font should be stored as {}" -msgstr "Písmo by mělo být uložené jako {}" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "Archinstall vyžaduje ke spuštění oprávnění správce (root). Použijte --help pro více informací." - -msgid "Select an execution mode" -msgstr "Zvolte způsob provedení" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "Nepodařilo se získat profil ze zadané url: {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "Profily musí mít unikátní jméno. Následující duplicity byly nalezeny: {}" - -msgid "Select one or more devices to use and configure" -msgstr "Zvolte jeden nebo více pevných disků k použití a konfiguraci" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "Pokud zrušíte výběr disku, také tím zrušíte stávající rozdělení. Přejete si pokračovat?" - -msgid "Existing Partitions" -msgstr "Existující oddíly" - -msgid "Select a partitioning option" -msgstr "Zvolte možnosti rozdělení disku" - -msgid "Enter the root directory of the mounted devices: " -msgstr "Zadejte kořenový adresář připojených zařízení: " - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "Minimální kapacita pro oddíl /home: {}GiB\n" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "Minimální kapacita pro oddíl s 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 "Toto je seznam před-programovaných profilů, které by mohly usnadnit instalaci věcí jako jsou desktopová prostředí" - -msgid "Current profile selection" -msgstr "Aktuální výběr profilu" - -msgid "Remove all newly added partitions" -msgstr "Smazat všechny nově přidané oddíly" - -msgid "Assign mountpoint" -msgstr "Přiřaďte přípojný bod" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "Označení/Odznačení oddílu ke zformátování (vymaže data)" - -msgid "Mark/Unmark as bootable" -msgstr "Označit/Odznačit jako zaváděcí" - -msgid "Change filesystem" -msgstr "Změnit souborový systém" - -msgid "Mark/Unmark as compressed" -msgstr "Označit/Odznačit oddíl s kompresí" - -msgid "Set subvolumes" -msgstr "Nastavit podsvazky" - -msgid "Delete partition" -msgstr "Smazat oddíl" - -msgid "Partition" -msgstr "Diskový oddíl" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "Tento oddíl je zašifrovaný, k naformátování zadejte souborový systém" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "Přípojné body diskových oddílů jsou relativní uvnitř instalace, například spouštěcí bod by byl /boot." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "Pokud je nastaven přípojný bod /boot, oddíl je zároveň označený jako zaváděcí." - -msgid "Mountpoint: " -msgstr "Přípojný bod: " - -msgid "Current free sectors on device {}:" -msgstr "Momentálně volné sektory na zařízení {}:" - -msgid "Total sectors: {}" -msgstr "Celkem sektorů: {}" - -msgid "Enter the start sector (default: {}): " -msgstr "Zadejte počáteční sektor (výchozí: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "Zadejte koncový sektor oddílu (procenta nebo číslo bloku, výchozí: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "Tímto smažete všechny nově vytvořené oddíly, přejete si pokračovat?" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "Správa diskových oddílů: {}" - -#, python-brace-format -msgid "Total length: {}" -msgstr "Celková délka: {}" - -msgid "Encryption type" -msgstr "Typ šifrování" - -msgid "Iteration time" -msgstr "" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "" - -msgid "Higher values increase security but slow down boot time" -msgstr "" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "" - -msgid "Iteration time cannot be empty" -msgstr "" - -msgid "Iteration time must be at least 100ms" -msgstr "" - -msgid "Iteration time must be at most 120000ms" -msgstr "" - -msgid "Please enter a valid number" -msgstr "" - -msgid "Partitions" -msgstr "Diskové oddíly" - -msgid "No HSM devices available" -msgstr "Žádné HSM zařízení není dostupné" - -msgid "Partitions to be encrypted" -msgstr "Zvolte oddíl k zašifrování" - -msgid "Select disk encryption option" -msgstr "Zvolte způsob šifrování disku" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "Vyberte FIDO2 zařízení abyste mohli používat HSM" - -msgid "Use a best-effort default partition layout" -msgstr "Použít chytré výchozí rozdělení oddílů" - -msgid "Manual Partitioning" -msgstr "Ruční rozdělení disku" - -msgid "Pre-mounted configuration" -msgstr "Pre-mounted konfigurace" - -msgid "Unknown" -msgstr "Neznámý" - -msgid "Partition encryption" -msgstr "Šifrování diskového oddílu" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr " ! Formátuji {} na " - -msgid "← Back" -msgstr "← Zpět" - -msgid "Disk encryption" -msgstr "Šifrování disku" - -msgid "Configuration" -msgstr "Konfigurace" - -msgid "Password" -msgstr "Heslo" - -msgid "All settings will be reset, are you sure?" -msgstr "Všechny volby budou zrušeny, jste si jisti?" - -msgid "Back" -msgstr "Zpět" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "Prosím vyberte přihlašovací obrazovku k instalaci pro vybraný profil: {}" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "Typ prostředí: {}" - -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 "Sway nepodporuje proprietární ovladač Nvidia. Pravděpodobně narazíte na problémy, přejete si pokračovat?" - -msgid "Installed packages" -msgstr "Instalované balíčky" - -msgid "Add profile" -msgstr "Přidat profil" - -msgid "Edit profile" -msgstr "Změnit profil" - -msgid "Delete profile" -msgstr "Smazat profil" - -msgid "Profile name: " -msgstr "Jméno profilu: " - -msgid "The profile name you entered is already in use. Try again" -msgstr "Zadané jméno profilu již existuje. Zkuste to znovu" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "Zadejte další balíčky k instalaci v tomto profilu (oddělené mezerou, ponechte prázdné k přeskočení): " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "Zadejte povolené služby v tomto profilu (oddělené mezerou, ponechte prázdné k přeskočení): " - -msgid "Should this profile be enabled for installation?" -msgstr "Má se tento profil použít pro instalaci?" - -msgid "Create your own" -msgstr "Vytvořit vlastní" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"Zvolte ovladač grafické karty nebo ponechte prázdné k instalaci všech open-source ovladačů" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway vyžaduje přístup k vašemu sezení (soubor zařízení jako např. klávesnice, myš, atd.)" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Vyberte možnost jak zpřístupnit pro Sway váš hardware" - -msgid "Graphics driver" -msgstr "Grafický ovladač" - -msgid "Greeter" -msgstr "Přihlašovací obrazovka" - -msgid "Please chose which greeter to install" -msgstr "Prosím vyberte přihlašovací obrazovku k instalaci" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "Toto je seznam před-programovaných výchozích profilů" - -msgid "Disk configuration" -msgstr "Konfigurace disku" - -msgid "Profiles" -msgstr "Profily" - -msgid "Finding possible directories to save configuration files ..." -msgstr "Hledám možné adresáře k uložení konfiguračních souborů ..." - -msgid "Select directory (or directories) for saving configuration files" -msgstr "Zvolte jeden nebo více adresářů k uložení konfiguračních souborů" - -msgid "Add a custom mirror" -msgstr "Přidat vlastní zrcadlo" - -msgid "Change custom mirror" -msgstr "Změnit vlastní zrcadla" - -msgid "Delete custom mirror" -msgstr "Smazat vlastní zrcadla" - -msgid "Enter name (leave blank to skip): " -msgstr "Zadejte jméno (ponechte prázdné k přeskočení): " - -msgid "Enter url (leave blank to skip): " -msgstr "Zadejte url (ponechte prázdné k přeskočení): " - -msgid "Select signature check option" -msgstr "Zvolit možnost kontroly podpisu" - -msgid "Select signature option" -msgstr "Zvolit možnost podpisu" - -msgid "Custom mirrors" -msgstr "Vlastní zrcadla" - -msgid "Defined" -msgstr "Definováno" - -msgid "Save user configuration (including disk layout)" -msgstr "Uložit uživatelskou konfiguraci (včetně rozdělení disků)" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"Zadejte adresář pro uložení konfigurace (konfigurací). Doplňování pomocí tab je zapnuto\n" -"Adresář pro uložení: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"Chcete uložit {} konfiguračních souborů do následujícího umístění?\n" -"\n" -"{}" - -msgid "Saving {} configuration files to {}" -msgstr "Ukládám {} konfiguračních souborů do {}" - -msgid "Mirrors" -msgstr "Zrcadla" - -msgid "Mirror regions" -msgstr "Oblasti zrcadel" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - Maximální hodnota : {} (Povolí {} paralelních stahování, povolí {max_downloads+1} stahování naráz )" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "Neplatný vstup! Zkuste to, prosím, znovu s platným vstupem [1 až {}, nebo 0 pro vypnutí]" - -msgid "Locales" -msgstr "Lokalizace" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "Použít NetworkManager (potřebné pro grafickou konfiguraci v GNOME a KDE)" - -msgid "Total: {} / {}" -msgstr "Celkem: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "Všechny zadané hodnoty mohou byt doplněny jednotkou: B, KB, KiB, MB, MiB..." - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "Pokud nejsou zadány jednotky, hodnoty jsou brány jako sektory" - -msgid "Enter start (default: sector {}): " -msgstr "Zadejte počátek (výchozí: sektor {}): " - -msgid "Enter end (default: {}): " -msgstr "Zadejte konec (výchozí: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "Nelze rozpoznat FIDO2 zařízení. Je nainstalován balíček libfido2?" - -msgid "Path" -msgstr "Cesta" - -msgid "Manufacturer" -msgstr "Výrobce" - -msgid "Product" -msgstr "Produkt" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "Chybná konfigurace: {error}" - -msgid "Type" -msgstr "Typ" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "Tato možnost povolí specifikovaný počet paralelních stahování, která mohou nastat při instalaci" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"Zadejte povolený počet paralelních stahování.\n" -"\n" -"Poznámka:\n" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - Maximální doporučená hodnota : {} (Povolí {} paralelních stahování naráz )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - Zakázáno/Výchozí : 0 (Zakáže paralelní stahování, povolí pouze 1 stahování naráz)\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "Neplatný vstup! Zkuste to, prosím, znovu s platným vstupem [nebo 0 pro vypnutí]" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Hyprland vyžaduje přístup k vašemu sezení (soubor zařízení jako např. klávesnice, myš, atd.)" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Vyberte možnost jak zpřístupnit pro Hyprland váš hardware" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "Všechny zadané hodnoty mohou byt doplněny jednotkou: %, B, KB, KiB, MB, MiB..." - -msgid "Would you like to use unified kernel images?" -msgstr "Přejete si použít Unified Kernel Images?" - -msgid "Unified kernel images" -msgstr "Unified Kernel Images" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "Čekám na dokončení synchronizace času (timedatectl show)." - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Synchronizace času není dokončena, mezitím se můžete podívat na možnosti řešení: https://archinstall.readthedocs.io/" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "Přeskakuji čekání na automatickou synchronizaci času (nesynchronizovaný čas může způsobit problémy během instalace)" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "Čekám na dokončení synchronizace Arch Linux keyring (archlinux-keyring-wkd-sync)." - -msgid "Selected profiles: " -msgstr "Vybrané profily: " - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Synchronizace času není dokončena, mezitím se můžete podívat na možnosti řešení: https://archinstall.readthedocs.io/" - -msgid "Mark/Unmark as nodatacow" -msgstr "Označit/Odznačit jako nodatacow" - -msgid "Would you like to use compression or disable CoW?" -msgstr "Přejete si použít kompresi nebo zakázat CoW?" - -msgid "Use compression" -msgstr "Použít kompresi" - -msgid "Disable Copy-on-Write" -msgstr "Zakázat Copy-on-Write" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "Nabízí výběr desktopových prostředí a dlaždicových správců oken, např. GNOME, KDE Plasma, Sway" - -#, python-brace-format -msgid "Configuration type: {}" -msgstr "Typ konfigurace: {}" - -msgid "LVM configuration type" -msgstr "Typ LVM konfigurace" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "LVM šifrování disku s více jak dvěma oddíly není v tuto chvíli podporováno" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "Použít NetworkManager (neubytné pro grafickou konfiguraci inernetu v GNOME a KDE)" - -msgid "Select a LVM option" -msgstr "Vyberte možnost LVM" - -msgid "Partitioning" -msgstr "Rozdělení diskových oddílů" - -msgid "Logical Volume Management (LVM)" -msgstr "Logical Volume Management (LVM)" - -msgid "Physical volumes" -msgstr "Fyzické svazky" - -msgid "Volumes" -msgstr "Svazky" - -msgid "LVM volumes" -msgstr "LVM svazky" - -msgid "LVM volumes to be encrypted" -msgstr "LVM svazky k zašifrování" - -msgid "Select which LVM volumes to encrypt" -msgstr "Zvolte LVM svazky k zašifrování" - -msgid "Default layout" -msgstr "Výchozí rozložení" - -msgid "No Encryption" -msgstr "Žádné šifrování" - -msgid "LUKS" -msgstr "LUKS" - -msgid "LVM on LUKS" -msgstr "LVM na LUKS" - -msgid "LUKS on LVM" -msgstr "LUKS na LVM" - -msgid "Yes" -msgstr "Ano" - -msgid "No" -msgstr "Ne" - -msgid "Archinstall help" -msgstr "Nápověda pro Archinstall" - -msgid " (default)" -msgstr " (výchozí)" - -msgid "Press Ctrl+h for help" -msgstr "Stiskněte Ctrl+h pro nápovědu" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "Vyberte možnost jak zpřístupnit pro Sway váš hardware" - -msgid "Seat access" -msgstr "Přístup k sezení" - -msgid "Mountpoint" -msgstr "Přípojný bod" - -msgid "HSM" -msgstr "HSM" - -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "Zadejte heslo pro zašifrování disku (ponechte prázdné pro nepoužití šifrování)" - -msgid "Disk encryption password" -msgstr "Heslo pro šifrování disku" - -msgid "Partition - New" -msgstr "Diskový oddíl - Nový" - -msgid "Filesystem" -msgstr "Souborový systém" - -msgid "Invalid size" -msgstr "Neplatná velikost" - -msgid "Start (default: sector {}): " -msgstr "Počátek (výchozí: sektor {}): " - -msgid "End (default: {}): " -msgstr "Konec (výchozí: {}): " - -msgid "Subvolume name" -msgstr "Název podsvazku" - -msgid "Disk configuration type" -msgstr "Typ konfigurace disku" - -msgid "Root mount directory" -msgstr "Kořenový adresář pro připojení" - -msgid "Select language" -msgstr "Vyberte jazyk" - -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "Zadejte další balíčky k instalaci (oddělené mezerou, ponechte prázdné k přeskočení)" - -msgid "Invalid download number" -msgstr "Neplatný počet stahování" - -msgid "Number downloads" -msgstr "Počet stahování" - -msgid "The username you entered is invalid" -msgstr "Zadané uživatelské jméno není platné" - -msgid "Username" -msgstr "Uživatelské jméno" - -#, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "Má být \"{}\" superuživatelem (sudoer)?\n" - -msgid "Interfaces" -msgstr "Rozhraní" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "Musíte zadat platnou IP adresu" - -msgid "Modes" -msgstr "Režimy" - -msgid "IP address" -msgstr "IP adresa" - -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "Zadejte IP vaší brány (routeru) nebo ponechte prázdné pro žádnou" - -msgid "Gateway address" -msgstr "Adresa brány" - -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "Zadejte vaše DNS servery (oddělené mezerou, ponechte prázdné pro žádné):" - -msgid "DNS servers" -msgstr "DNS servery" - -msgid "Configure interfaces" -msgstr "Nakonfigurujte rozhraní" - -msgid "Kernel" -msgstr "Jádro" - -msgid "UEFI is not detected and some options are disabled" -msgstr "UEFI nebylo nalezeno a některé možnosti jsou vypnuty" - -msgid "Info" -msgstr "Info" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "Sway nepodporuje proprietární ovladač Nvidia." - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "Pravděpodobně narazíte na problémy, přejete si pokračovat?" - -msgid "Main profile" -msgstr "Hlavní profil" - -msgid "Confirm password" -msgstr "Potvrdit heslo" - -msgid "The confirmation password did not match, please try again" -msgstr "Potvrzovací heslo se neshoduje, zkuste to prosím znovu" - -msgid "Not a valid directory" -msgstr "Adresář není validní" - -msgid "Would you like to continue?" -msgstr "Přejete si pokračovat?" - -msgid "Directory" -msgstr "Adresář" - -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "Zadejte adresář pro uložení konfigurace (doplňování pomocí tab je zapnuto)" - -#, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "Chcete uložit konfigurační soubor(y) do {}?" - -msgid "Enabled" -msgstr "Povoleno" - -msgid "Disabled" -msgstr "Zakázáno" - -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "Prosím, informujte nás o této chybě (spolu se souborem) na https://github.com/archlinux/archinstall/issues" - -msgid "Mirror name" -msgstr "Jméno zrcadla" - -msgid "Url" -msgstr "Url" - -msgid "Select signature check" -msgstr "Zvolit kontrolu podpisu" - -msgid "Select execution mode" -msgstr "Zvolte způsob provedení" - -msgid "Press ? for help" -msgstr "Stiskněte ? pro nápovědu" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "Vyberte možnost jak zpřístupnit pro Hyprland váš hardware" - -msgid "Additional repositories" -msgstr "Dodatečné repozitáře" - -msgid "NTP" -msgstr "NTP" - -msgid "Swap on zram" -msgstr "Swap na zram" - -msgid "Name" -msgstr "Jméno" - -msgid "Signature check" -msgstr "Kontrola podpisu" - -#, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "Vybrané volné sektory na zařízení {}:" - -#, python-brace-format -msgid "Size: {} / {}" -msgstr "Velikost: {} / {}" - -#, python-brace-format -msgid "Size (default: {}): " -msgstr "Velikost (výchozí: {}): " - -msgid "HSM device" -msgstr "HSM zařízení" - -msgid "Some packages could not be found in the repository" -msgstr "Některé balíčky nemohly být nalezeny v repozitáři" - -msgid "User" -msgstr "Uživatel" - -msgid "The specified configuration will be applied" -msgstr "Bude použita zvolená konfigurace" - -msgid "Wipe" -msgstr "Vymazat" - -msgid "Mark/Unmark as XBOOTLDR" -msgstr "Označit/Odznačit jako XBOOTLDR" - -msgid "Loading packages..." -msgstr "Načítání balíčků..." - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "Vyberte balíčky z níže uvedeného seznamu, které by měly být dodatečně nainstalovány" - -msgid "Add a custom repository" -msgstr "Přidat vlastní repozitář" - -msgid "Change custom repository" -msgstr "Změnit vlastní repozitář" - -msgid "Delete custom repository" -msgstr "Smazat vlastní repozitář" - -msgid "Repository name" -msgstr "Jméno repozitáře" - -msgid "Add a custom server" -msgstr "Přidat vlastní server" - -msgid "Change custom server" -msgstr "Změnit vlastní server" - -msgid "Delete custom server" -msgstr "Smazat vlastní server" - -msgid "Server url" -msgstr "URL serveru" - -msgid "Select regions" -msgstr "Vyberte regiony" - -msgid "Add custom servers" -msgstr "Přidat vlastní servery" - -msgid "Add custom repository" -msgstr "Přidat vlastní repozitář" - -msgid "Loading mirror regions..." -msgstr "Načítání oblastí zrcadel..." - -msgid "Mirrors and repositories" -msgstr "Zrcadla a repozitáře" - -msgid "Selected mirror regions" -msgstr "Vybrané oblasti zrcadel" - -msgid "Custom servers" -msgstr "Vlastní servery" - -msgid "Custom repositories" -msgstr "Vlastní repozitáře" - -msgid "Only ASCII characters are supported" -msgstr "Jsou podporovány pouze ASCII znaky" - -msgid "Show help" -msgstr "Zobrazit nápovědu" - -msgid "Exit help" -msgstr "Opustit nápovědu" - -msgid "Preview scroll up" -msgstr "Posunout náhled dolů" - -msgid "Preview scroll down" -msgstr "Posunout náhled dolů" - -msgid "Move up" -msgstr "Posunout nahoru" - -msgid "Move down" -msgstr "Posunout dolů" - -msgid "Move right" -msgstr "Posunout doprava" - -msgid "Move left" -msgstr "Posunout doleva" - -msgid "Jump to entry" -msgstr "Přejít na položku" - -msgid "Skip selection (if available)" -msgstr "Přeskočit výběr (je-li dostupné)" - -msgid "Reset selection (if available)" -msgstr "Zrušit výběr (je-li dostupné)" - -msgid "Select on single select" -msgstr "Výběr jedné možnosti" - -msgid "Select on multi select" -msgstr "Výběr více možností" - -msgid "Reset" -msgstr "Zrušit" - -msgid "Skip selection menu" -msgstr "Přeskočit výběr" - -msgid "Start search mode" -msgstr "Spustit režim vyhledávání" - -msgid "Exit search mode" -msgstr "Opustit režim vyhledávání" - -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "labwc vyžaduje přístup k vašemu sezení (soubor zařízení jako např. klávesnice, myš, atd.)" - -msgid "Choose an option to give labwc access to your hardware" -msgstr "Vyberte možnost jak zpřístupnit pro labwc váš hardware" - -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "niri vyžaduje přístup k vašemu sezení (soubor zařízení jako např. klávesnice, myš, atd.)" - -msgid "Choose an option to give niri access to your hardware" -msgstr "Vyberte možnost jak zpřístupnit pro niri váš hardware" - -msgid "Mark/Unmark as ESP" -msgstr "Označit/Odznačit jako ESP" - -msgid "Package group:" -msgstr "Skupina balíčků:" - -msgid "Exit archinstall" -msgstr "Ukončit archinstall" - -msgid "Reboot system" -msgstr "Restartovat systém" - -msgid "chroot into installation for post-installation configurations" -msgstr "Vstoupit skrze chroot do své nově vytvořené instalace a provést závěrečnou konfiguraci" - -msgid "Installation completed" -msgstr "Instalace dokončena" - -msgid "What would you like to do next?" -msgstr "Co si přejete udělat dál?" - -#, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "Zvolte který režim má být nastaven pro \"{}\"" - -msgid "Incorrect credentials file decryption password" -msgstr "Neplatné heslo pro dešifrování souboru s přihlašovacími údaji" - -msgid "Incorrect password" -msgstr "Neplatné heslo" - -msgid "Credentials file decryption password" -msgstr "Heslo pro dešifrování souboru s přihlašovacími údaji" - -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "Chcete zašifrovat soubor user_credentials.json?" - -msgid "Credentials file encryption password" -msgstr "Heslo pro zašifrování souboru s přihlašovacími údaji" - -#, python-brace-format -msgid "Repositories: {}" -msgstr "Repozitáře: {}" - -#, fuzzy -msgid "New version available" -msgstr "Žádné HSM zařízení není dostupné" - -#, fuzzy -msgid "Passwordless login" -msgstr "Heslo" - -msgid "Second factor login" -msgstr "" - -msgid "Bluetooth" -msgstr "" - -#, fuzzy -msgid "Would you like to configure Bluetooth?" -msgstr "Přejete si pokračovat?" - -msgid "Authentication" -msgstr "" - -msgid "Applications" -msgstr "" - -msgid "U2F login method: " -msgstr "" - -msgid "Passwordless sudo: " -msgstr "" - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "" - -msgid "Syncing the system..." -msgstr "" - -msgid "Value cannot be empty" -msgstr "" - -msgid "Snapshot type" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Snapshot type: {}" -msgstr "Typ prostředí: {}" - -msgid "U2F login setup" -msgstr "" - -msgid "No U2F devices found" -msgstr "" - -msgid "U2F Login Method" -msgstr "" - -#, fuzzy -msgid "Enable passwordless sudo?" -msgstr "Zadejte heslo: " - -#, fuzzy, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "Vyberte FIDO2 zařízení abyste mohli používat HSM" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "" - -msgid "Starting device modifications in " -msgstr "" - -#, fuzzy -msgid "No network connection found" -msgstr "Žádná konfigurace sítě" - -#, fuzzy -msgid "Would you like to connect to a Wifi?" -msgstr "Přejete si pokračovat?" - -#, fuzzy -msgid "No wifi interface found" -msgstr "Nakonfigurujte rozhraní" - -#, fuzzy -msgid "Select wifi network to connect to" -msgstr "Zvolte síťové rozhraní ke konfiguraci" - -msgid "Scanning wifi networks..." -msgstr "" - -#, fuzzy -msgid "No wifi networks found" -msgstr "Žádná konfigurace sítě" - -msgid "Failed setting up wifi" -msgstr "" - -#, fuzzy -msgid "Enter wifi password" -msgstr "Zadejte heslo: " - -msgid "Ok" -msgstr "" diff --git a/examples/archinstall/archinstall/locales/de/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/de/LC_MESSAGES/base.mo deleted file mode 100644 index 17e67f4..0000000 Binary files a/examples/archinstall/archinstall/locales/de/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/de/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/de/LC_MESSAGES/base.po deleted file mode 100644 index 90e084f..0000000 --- a/examples/archinstall/archinstall/locales/de/LC_MESSAGES/base.po +++ /dev/null @@ -1,1854 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" -"Language: de\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.6\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] Eine Logdatei wurde hier erstellt: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Bitte melden Sie das Problem mit der erstellten Datei auf https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "Wollen Sie wirklich abbrechen?" - -msgid "And one more time for verification: " -msgstr "Und noch einmal zur Bestätigung: " - -msgid "Would you like to use swap on zram?" -msgstr "Möchten Sie Auslagerungsspeicher (Swap) als zram verwenden?" - -msgid "Desired hostname for the installation: " -msgstr "Gewünschter Gerätename/Hostname für die Installation: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "Benutzername für den erforderlichen Superuser mit sudo Rechten: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "Geben Sie weitere Benutzernamen ein, die installiert werden sollen (leer lassen für keine weiteren Benutzer): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "Soll dieser Benutzer ein Superuser sein (sudoer)?" - -msgid "Select a timezone" -msgstr "Wählen Sie eine Zeitzone aus" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "Möchten Sie GRUB als Bootloader anstelle von systemd-boot verwenden?" - -msgid "Choose a bootloader" -msgstr "Wählen Sie einen Bootloader aus" - -msgid "Choose an audio server" -msgstr "Wählen Sie einen Audioserver aus" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Nur Pakete wie base, base-devel, linux, linux-firmware, efibootmgr und optionale Profilpakete werden installiert." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "Wenn Sie einen Webbrowser installieren möchten, wie z.B. Firefox oder Chromium, können Sie diese nun eingeben." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "Schreiben Sie zusätzliche Pakete die installiert werden sollen (mit einem Leerzeichen getrennt, zum Überspringen leer lassen): " - -msgid "Copy ISO network configuration to installation" -msgstr "ISO-Netzwerk Einstellungen in die Installation kopieren" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "NetworkManager nutzen (notwendig um Internetverbindungen grafisch in GNOME und KDE einzustellen)" - -msgid "Select one network interface to configure" -msgstr "Wählen Sie einen Netzwerkadapter zur Konfiguration aus" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "Wählen Sie einen Modus zur Konfiguration von \"{}\" aus oder überspringen, um mit dem voreingestellten Modus \"{}\" fortzufahren" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "Geben Sie die IP-Adresse mit Subnetzgröße für {} ein (z.B. 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "Geben Sie das Gateway (Router) IP-Adresse ein (leer lassen für keines): " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "Geben Sie die DNS-Server ein (mit Leerzeichen getrennt oder leer lassen für keinen Server): " - -msgid "Select which filesystem your main partition should use" -msgstr "Wählen Sie ein Dateisystem aus, welches für die Hauptpartition verwendet werden soll" - -msgid "Current partition layout" -msgstr "Momentanes Partitionslayout" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"Wählen Sie eine Aktion aus für\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "Wählen Sie den gewünschten Dateisystemtyp für die Partition aus" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "Geben Sie die Startposition ein (in parted Einheiten: s, GB, %, etc. ; default: {}): " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "Geben Sie die Endposition ein (in parted Einheiten: s, GB, %, etc. ; default: {}): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} enthält Partitionen in der Warteschlange, diese werden damit entfernt, sind Sie sicher?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"Wählen Sie anhand vom Index aus, welche Partitionen gelöscht werden sollen" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"Wählen Sie anhand vom Index aus, welche Partitionen wo eingehängt werden sollen" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * Die Einhängeorte sind relativ zur Installation, boot würde beispielsweise /boot entsprechen." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "Geben Sie an wo die Partition eingehängt werden soll (leer lassen um den Einhängeort zu entfernen): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"Wählen Sie aus, welche Partition formatiert werden soll" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"Wählen Sie aus, welche Partition verschlüsselt werden soll" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"Wählen Sie aus, welche Partition bootfähig markiert werden soll" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"Bitte wählen Sie aus, auf welcher Partition ein Dateisystem erstellt werden soll" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "Geben Sie einen gewünschten Dateisystemtyp für die Partition ein: " - -msgid "Archinstall language" -msgstr "Sprache für Archinstall" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Alle Laufwerke löschen und ein empfohlenes Partitionslayout verwenden" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Geben Sie individuell an, was mit jedem Laufwerk geschehen soll" - -msgid "Select what you wish to do with the selected block devices" -msgstr "Wählen Sie aus, was Sie mit den ausgewählten Blockgeräten tun möchten" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "Dies ist eine Auflistung vorprogrammierter Profile, die es einfacher ermöglichen, Dinge wie Desktop-Umgebungen zu installieren" - -msgid "Select keyboard layout" -msgstr "Wählen Sie ein Tastaturlayout aus" - -msgid "Select one of the regions to download packages from" -msgstr "Wählen Sie eine Region zum herunterladen von Paketen aus" - -msgid "Select one or more hard drives to use and configure" -msgstr "Wählen Sie ein oder mehrere Laufwerk(e) aus, die konfiguriert und verwendet werden sollen" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "Für die beste Kompatibilität mit Ihrer AMD Hardware, sollten Sie womöglich die quelloffenen oder andernfalls AMD/ATI-Optionen verwenden." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "Für die beste Kompatibilität mit Ihrer Intel Hardware, sollten Sie womöglich die quelloffenen oder andernfalls Intel-Optionen verwenden.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Für die beste Kompatibilität mit Ihrer Nvidia-Hardware, sollten Sie den proprietären Nvidia-Treiber verwenden.\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Wählen Sie einen Grafikkartentreiber aus oder leer lassen, um alle quelloffenen Treiber zu installieren" - -msgid "All open-source (default)" -msgstr "Alle quelloffenen (Standard)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "Wählen Sie welche Kernel benutzt werden sollen oder leer lassen für Standard \"{}\"" - -msgid "Choose which locale language to use" -msgstr "Wählen Sie aus, welche lokale Sprache verwendet werden soll" - -msgid "Choose which locale encoding to use" -msgstr "Wählen Sie aus, welche lokale Kodierung verwendet werden soll" - -msgid "Select one of the values shown below: " -msgstr "Wählen Sie einen der folgenden Werte aus: " - -msgid "Select one or more of the options below: " -msgstr "Wählen Sie eine oder mehrere Option(en) aus: " - -msgid "Adding partition...." -msgstr "Partition wird hinzugefügt..." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "Geben Sie einen gültigen Dateisystemtyp ein um fortzufahren. Verwenden Sie `man parted` um eine Liste gültiger Typen einzusehen." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Fehler: Auflistung von Profilen mit URL \"{}\" ergab:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "Fehler: \"{}\" konnte nicht zu JSON dekodiert werden:" - -msgid "Keyboard layout" -msgstr "Tastaturlayout" - -msgid "Mirror region" -msgstr "Spiegelserver-Region" - -msgid "Locale language" -msgstr "Lokale Sprache" - -msgid "Locale encoding" -msgstr "Lokale Kodierung" - -msgid "Drive(s)" -msgstr "Laufwerk(e)" - -msgid "Disk layout" -msgstr "Laufwerkslayout" - -msgid "Encryption password" -msgstr "Verschlüsselungspasswort" - -msgid "Swap" -msgstr "Swap" - -msgid "Bootloader" -msgstr "Bootloader" - -msgid "Root password" -msgstr "Root-Passwort" - -msgid "Superuser account" -msgstr "Superuser-Konto" - -msgid "User account" -msgstr "Benutzerkonto" - -msgid "Profile" -msgstr "Profil" - -msgid "Audio" -msgstr "Audio" - -msgid "Kernels" -msgstr "Kernel" - -msgid "Additional packages" -msgstr "Zusätzliche Pakete" - -msgid "Network configuration" -msgstr "Netzwerkkonfiguration" - -msgid "Automatic time sync (NTP)" -msgstr "Automatische Zeitsynchronisierung (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "Installieren ({} Konfiguration(en) ausständig)" - -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 "" -"Sie haben sich entschieden, kein Laufwerk auszuwählen\n" -"und somit werden Laufwerkseinstellungen verwendet, welche am Einhängeort {} vorgefunden werden (experimentell)\n" -"WARNUNG: Archinstall wird die Kompatibilität der Einstellung nicht überprüfen\n" -"Wollen Sie trotzdem fortfahren?" - -msgid "Re-using partition instance: {}" -msgstr "Wiederverwenden der Partitionsinstanz: {}" - -msgid "Create a new partition" -msgstr "Neue Partition erstellen" - -msgid "Delete a partition" -msgstr "Partition löschen" - -msgid "Clear/Delete all partitions" -msgstr "Alle Partitionen löschen" - -msgid "Assign mount-point for a partition" -msgstr "Einhängeort für Partition angeben" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "Markieren, ob eine Partition formatiert werden soll (alle Daten werden gelöscht)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "Markieren, ob eine Partition verschlüsselt werden soll" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "Markieren, ob eine Partition als bootfähig sein soll (automatisch für /boot)" - -msgid "Set desired filesystem for a partition" -msgstr "Wählen Sie einen Dateisystemtyp für die Partition aus" - -msgid "Abort" -msgstr "Abbrechen" - -msgid "Hostname" -msgstr "Gerätename/Hostname" - -msgid "Not configured, unavailable unless setup manually" -msgstr "Nicht konfiguriert, nicht verfügbar wenn nicht selber eingestellt" - -msgid "Timezone" -msgstr "Zeitzone" - -msgid "Set/Modify the below options" -msgstr "Setzen/Modifizieren Sie die unten stehenden Einstellungen" - -msgid "Install" -msgstr "Installieren" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"ESC um zu überspringen\n" -"\n" - -msgid "Suggest partition layout" -msgstr "Ein Partitionslayout vorschlagen" - -msgid "Enter a password: " -msgstr "Passwort eingeben: " - -msgid "Enter a encryption password for {}" -msgstr "Verschlüsselungspasswort angeben für {}" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "Geben Sie ein Verschlüsselungspasswort ein (leer lassen um Verschlüsselung zu deaktivieren): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "Geben Sie einen Superuser mit sudo Privilegien an: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "Geben Sie ein Root-Passwort ein (leer lassen um Root zu deaktivieren): " - -msgid "Password for user \"{}\": " -msgstr "Passwort für Benutzer \"{}\": " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "Angegebene Pakete werden verifiziert (dies könnte einige Sekunden dauern)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "Möchten Sie die automatische Zeitsynchronisierung (NTP) mit dem Standard Server verwenden?\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 "" -"Hardwarezeit und andere Einstellungsschritte könnten notwendig sein um NTP zu benutzen.\n" -"Für weitere Informationen wenden Sie sich bitte an das Arch wiki" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "Geben Sie einen Benutzernamen ein, um diesen zusätzlich anzulegen (leer lassen zum Überspringen): " - -msgid "Use ESC to skip\n" -msgstr "ESC um zu überspringen\n" - -#, fuzzy -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -"Wählen Sie ein Objekt aus der Liste und eine Aktion, die Sie ausführen möchten." - -msgid "Cancel" -msgstr "Abbrechen" - -msgid "Confirm and exit" -msgstr "Bestätigen und Schließen" - -msgid "Add" -msgstr "Hinzufügen" - -msgid "Copy" -msgstr "Kopieren" - -msgid "Edit" -msgstr "Bearbeiten" - -msgid "Delete" -msgstr "Löschen" - -msgid "Select an action for '{}'" -msgstr "Wählen Sie eine Aktion aus für '{}'" - -msgid "Copy to new key:" -msgstr "Kopieren zum neuen Schlüssel:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "Nicht erkannter Netzwerkinterfacecontroller: {}. Erlaubte Werte {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"Dies ist Ihre gewählte Konfiguration:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Pacman läuft bereits, warten für maximal 10 Minuten auf Beendigung." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "Existierendes Pacman lock wurde nicht beendet. Bitte beenden Sie existierende Pacman Sessions bevor archinstall benutzt wird." - -msgid "Choose which optional additional repositories to enable" -msgstr "Wählen Sie aus, welche zusätzlichen Repositories verwendet werden sollen" - -msgid "Add a user" -msgstr "Benutzerkonto hinzufügen" - -msgid "Change password" -msgstr "Passwort ändern" - -msgid "Promote/Demote user" -msgstr "Benutzerkonto berechtigen/einschränken" - -msgid "Delete User" -msgstr "Benutzerkonto löschen" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"Neues Benutzerkonto anlegen\n" - -msgid "User Name : " -msgstr "Benutzername: " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "Soll {} ein superuser sein (sudoer)?" - -msgid "Define users with sudo privilege: " -msgstr "Geben Sie Superuser mit sudo Privilegien an: " - -msgid "No network configuration" -msgstr "Keine Netzwerkkonfiguration" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "Legen Sie das gewünschte Subvolume für die Btrfs-Partition fest" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"Wählen Sie, auf welcher Partition Subvolumes eingerichtet werden sollen" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "Bearbeiten von Btrfs-Subvolumes für die aktuelle Partition" - -msgid "No configuration" -msgstr "Keine Konfiguration" - -msgid "Save user configuration" -msgstr "Benutzerkonfiguration speichern" - -msgid "Save user credentials" -msgstr "Benutzeranmeldeinformationen speichern" - -msgid "Save disk layout" -msgstr "Laufwerklayout speichern" - -msgid "Save all" -msgstr "Alles speichern" - -msgid "Choose which configuration to save" -msgstr "Wählen Sie eine Konfiguration aus, welche gespeichert werden soll" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "Geben Sie einen Ordner an, in dem Konfigurationen gespeichert werden sollen: " - -msgid "Not a valid directory: {}" -msgstr "Kein gültiger Ordner: {}" - -msgid "The password you are using seems to be weak," -msgstr "Das gewählte Passwort ist schwach," - -msgid "are you sure you want to use it?" -msgstr "wollen Sie dieses Passwort wirklich verwenden?" - -msgid "Optional repositories" -msgstr "Zusätzliche Repositorien" - -msgid "Save configuration" -msgstr "Konfiguration speichern" - -msgid "Missing configurations:\n" -msgstr "Ausständige Konfigurationen:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "Entweder root Passwort oder mindestens ein Superuser muss konfiguriert sein" - -msgid "Manage superuser accounts: " -msgstr "Superuser Konto bearbeiten: " - -msgid "Manage ordinary user accounts: " -msgstr "Benutzerkonten bearbeiten: " - -msgid " Subvolume :{:16}" -msgstr " Subvolume :{:16}" - -msgid " mounted at {:16}" -msgstr " Eingehängt bei {:16}" - -msgid " with option {}" -msgstr " mit Option {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -" Geben Sie die gewünschten Werte für ein neues Subvolume an \n" - -msgid "Subvolume name " -msgstr "Subvolume-Name " - -msgid "Subvolume mountpoint" -msgstr "Subvolume-Einhängeort" - -msgid "Subvolume options" -msgstr "Subvolume-Optionen" - -msgid "Save" -msgstr "Speichern" - -msgid "Subvolume name :" -msgstr "Subvolume-Name:" - -msgid "Select a mount point :" -msgstr "Wählen Sie einen Einhängeort aus:" - -msgid "Select the desired subvolume options " -msgstr "Wählen Sie die gewünschten Optionen für das Subvolume " - -msgid "Define users with sudo privilege, by username: " -msgstr "Geben Sie Benutzer mit sudo Privilegien an: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] Eine Logdatei wurde hier erstellt: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "Möchten Sie Btrfs-Subvolumes mit vorgegebener Struktur verwenden?" - -msgid "Would you like to use BTRFS compression?" -msgstr "Möchten Sie Btrfs-Komprimierung verwenden?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "Möchten Sie eine separate Partition für /home erstellen?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "Die ausgewählten Laufwerke haben nicht genug Speicherplatz für eine automatische Vorgabe\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "Minimaler Speicherplatz für /home Partition: {}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Minimaler Speicherplatz für Arch Linux Partition: {}GB" - -msgid "Continue" -msgstr "Weiter" - -msgid "yes" -msgstr "Ja" - -msgid "no" -msgstr "Nein" - -msgid "set: {}" -msgstr "gewählt: {}" - -msgid "Manual configuration setting must be a list" -msgstr "Manuelle Konfiguration muss eine Liste sein" - -msgid "No iface specified for manual configuration" -msgstr "Keine Verbindung angegeben für eine manuelle Konfiguration" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "Manuelle Konfiguration für Netzwerkverbindung ohne automatisches DHCP benötigt eine IP Addresse" - -msgid "Add interface" -msgstr "Verbindung hinzufügen" - -msgid "Edit interface" -msgstr "Verbindung bearbeiten" - -msgid "Delete interface" -msgstr "Verbindung löschen" - -msgid "Select interface to add" -msgstr "Wählen Sie eine Verbindung aus, welche hinzugefügt werden soll" - -msgid "Manual configuration" -msgstr "Manuelle Konfiguration" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "Partition als komprimiert markieren bzw. nicht komprimiert markieren (nur Btrfs)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "Das gewählte Passwort ist schwach, möchten Sie trotzdem fortfahren?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "Auswahl von Desktopumgebungen und kachelnden Fenstermanagern, z.B. GNOME, KDE, Sway" - -msgid "Select your desired desktop environment" -msgstr "Wählen Sie Ihre gewünschte Desktopumgebung aus" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "Eine sehr minimale Installation, welche es erlaubt Arch Linux selber nach eigenen Wünschen anzupassen." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "Auswahl von Serverpaketen welche installiert und aktiviert werden sollen, z.B. httpd, nginx, mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "Wählen Sie die gewünschten Server aus, welche installiert werden sollen. Sonst wird eine Minimalinstallation durchgeführt" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "Installiert ein minimales System inklusive Xorg und Grafiktreibern." - -msgid "Press Enter to continue." -msgstr "Drücken Sie Enter, um fortzufahren." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "Möchten Sie in das neu installierte System über chroot zugreifen um noch weitere, manuelle Konfigurationen vorzunehmen?" - -msgid "Are you sure you want to reset this setting?" -msgstr "Wollen Sie wirklich diese Konfiguration zurücksetzen?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "Wählen Sie ein oder mehrere Laufwerk(e) aus, die konfiguriert und verwendet werden sollen\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "Jede Änderung der bestehenden Einstellung führt zu einer Zurücksetzung des Datenträgerlayouts!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "Wenn Sie die Laufwerkskonfiguration ändern, dann wird das Laufwerkslayout zurückgesetzt. Sind Sie sicher?" - -msgid "Save and exit" -msgstr "Speichern und Beenden" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"enthält Partitionen in der Warteschlange, diese werden damit entfernt, sind Sie sicher?" - -msgid "No audio server" -msgstr "Kein Audioserver" - -msgid "(default)" -msgstr "(Standard)" - -msgid "Use ESC to skip" -msgstr "Drücken Sie ESC, um zu überspringen" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"Drücken Sie Strg+C, um die aktuelle Auswahl zurückzusetzen\n" -"\n" - -msgid "Copy to: " -msgstr "Kopieren nach: " - -msgid "Edit: " -msgstr "Bearbeiten: " - -msgid "Key: " -msgstr "Schlüssel: " - -msgid "Edit {}: " -msgstr "Bearbeiten {}: " - -msgid "Add: " -msgstr "Hinzufügen: " - -msgid "Value: " -msgstr "Wert: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "Sie können das Auswählen eines Laufwerks überspringen und die Laufwerkseinstellungen verwenden, welche am Einhängeort /mnt vorgefunden werden (experimentell)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "Wählen Sie ein Laufwerk aus oder überspringen, um /mnt als Standard zu verwenden" - -msgid "Select which partitions to mark for formatting:" -msgstr "Wählen Sie aus, welche Partitionen formatiert werden sollen:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "HSM verwenden, um verschlüsselte Platte zu entsperren" - -msgid "Device" -msgstr "Gerät" - -msgid "Size" -msgstr "Größe" - -msgid "Free space" -msgstr "Freier Speicherplatz" - -msgid "Bus-type" -msgstr "Bus-Typ" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "Entweder root Passwort oder mindestens ein Superuser muss konfiguriert sein" - -msgid "Enter username (leave blank to skip): " -msgstr "Benutzernamen eingeben (leer lassen zum Überspringen): " - -msgid "The username you entered is invalid. Try again" -msgstr "Der eingegebene Benutzername ist ungültig. Erneut versuchen" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "Soll {} ein Superuser sein (sudo)?" - -msgid "Select which partitions to encrypt" -msgstr "Wählen Sie aus, welche Partitionen verschlüsselt werden sollen" - -msgid "very weak" -msgstr "Sehr schwach" - -msgid "weak" -msgstr "Schwach" - -msgid "moderate" -msgstr "Moderat" - -msgid "strong" -msgstr "Stark" - -msgid "Add subvolume" -msgstr "Subvolume hinzufügen" - -msgid "Edit subvolume" -msgstr "Subvolume bearbeiten" - -msgid "Delete subvolume" -msgstr "Subvolume löschen" - -msgid "Configured {} interfaces" -msgstr "{} Schnittstellen konfiguriert" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "Diese Option setzt die Nummer an parallelen Downloads, die während der Installation durchgeführt werden" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"Geben Sie die Nummer an parallelen Downloads an.\n" -" (Wert zwischen 1 und {})\n" -"Achtung:" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - Maximalwert :{} (Erlaubt {} parallele Downloads, erlaubt {} Downloads gleichzeitig)" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - Minimalwert : 1 (Erlaubt einen parallelen Download, erlaubt zwei Downloads gleichzeitig)" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - Deaktivieren/Standard : 0 (Deaktiviert parallele Downloads, erlaubt nur einen Download gleichzeitig)" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "Ungültige Eingabe! Erneut mit gültiger Eingabe versuchen [1 bis {max_downloads}, oder 0 zum deaktivieren]" - -msgid "Parallel Downloads" -msgstr "Parallele Downloads" - -msgid "ESC to skip" -msgstr "Drücken Sie ESC, um zu überspringen" - -msgid "CTRL+C to reset" -msgstr "Strg+C zum zurücksetzen" - -msgid "TAB to select" -msgstr "TAB zum auswählen" - -msgid "[Default value: 0] > " -msgstr "[Standardwert: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "Um diese Übersetzung nutzen zu können, installieren Sie bitte manuell eine Schriftart, die diese Sprache unterstützt." - -msgid "The font should be stored as {}" -msgstr "Die Schriftart sollte als {} gespeichert werden" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "Archinstall benötigt Root-Rechte zum ausführen. Siehe --help für mehr." - -msgid "Select an execution mode" -msgstr "Wählen Sie einen Ausführmodus" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "Konnte Profil nicht von der angegebenen URL holen: {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "Profile müssen einen eindeutige Namen haben, aber Profildefinition mit gleichem Namen gefunden: {}" - -msgid "Select one or more devices to use and configure" -msgstr "Wählen Sie ein oder mehrere Gerät(e) aus, die konfiguriert und verwendet werden sollen" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "Wenn Sie die Laufwerksauswahl zurücksetzen, dann wird das auch das Laufwerkslayout zurückgesetzt. Sind Sie sicher?" - -msgid "Existing Partitions" -msgstr "Existierende Partitionen" - -msgid "Select a partitioning option" -msgstr "Wählen Sie eine Partitionierungsoption aus" - -msgid "Enter the root directory of the mounted devices: " -msgstr "Geben Sie das Stammverzeichnis der eingehängten Geräte an: " - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "Minimaler Speicherplatz für /home Partition: {}GB\n" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "Minimaler Speicherplatz für Arch Linux Partition: {}GB" - -msgid "This is a list of pre-programmed profiles_bck, they might make it easier to install things like desktop environments" -msgstr "Dies ist eine Auflistung vorprogrammierter Profile (Backup), die es einfacher ermöglichen, Dinge wie Desktop-Umgebungen zu installieren" - -msgid "Current profile selection" -msgstr "Momentane Profilauswahl" - -msgid "Remove all newly added partitions" -msgstr "Alle neu hinzugefügten Partitionen entfernen" - -msgid "Assign mountpoint" -msgstr "Einhängeort für Partition zuweisen" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "Markieren bzw. nicht markieren zum formatieren (alle Daten werden gelöscht)" - -msgid "Mark/Unmark as bootable" -msgstr "Als bootbar markieren bzw. nicht markieren" - -msgid "Change filesystem" -msgstr "Dateisystem ändern" - -msgid "Mark/Unmark as compressed" -msgstr "Als komprimiert markieren bzw. als nicht komprimiert markieren" - -msgid "Set subvolumes" -msgstr "Subvolumes setzen" - -msgid "Delete partition" -msgstr "Partition löschen" - -msgid "Partition" -msgstr "Partition" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "Diese Partition ist aktuell verschlüsselt, zum formatieren muss ein Dateisystem angegeben werden" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "Die Einhängeorte sind relativ zur Installation, boot würde beispielsweise /boot entsprechen." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "Wenn der Einhängeort auf /boot gesetzt ist, wird die Partition ebenfalls als bootbar markiert." - -msgid "Mountpoint: " -msgstr "Einhängeort: " - -msgid "Current free sectors on device {}:" -msgstr "Aktuell freie Sektoren auf dem Gerät {}:" - -msgid "Total sectors: {}" -msgstr "Sektoren insgesamt: {}" - -msgid "Enter the start sector (default: {}): " -msgstr "Geben Sie den Startsektor ein (Standard: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "Geben Sie den Endsektor der Partition ein (Prozent oder Blocknummer, Standard: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "Dies wird alle neu hinzugefügten Partitionen entfernen, fortfahren?" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "Partitionsverwaltung: {}" - -#, python-brace-format -msgid "Total length: {}" -msgstr "Gesamtlänge: {}" - -msgid "Encryption type" -msgstr "Verschlüsselungstyp" - -msgid "Iteration time" -msgstr "Entschlüsselungsdauer" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "Geben Sie die Entschlüsselungsdauer für LUKS in Millisekunden an" - -msgid "Higher values increase security but slow down boot time" -msgstr "Höhere Werte verbessern die Sicherheit, verlangsamen aber den Systemstart" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "Standard: 10000 ms, Empfohlen: 1000 ms - 60000 ms" - -msgid "Iteration time cannot be empty" -msgstr "Die angegebene Entschlüsselungsdauer darf nicht leer sein" - -msgid "Iteration time must be at least 100ms" -msgstr "Die Entschlüsselungsdauer muss mindestens 100 ms betragen" - -msgid "Iteration time must be at most 120000ms" -msgstr "Die Entschlüsselungsdauer darf maximal 120000 ms betragen" - -msgid "Please enter a valid number" -msgstr "Geben Sie eine gültige Zahl ein" - -msgid "Partitions" -msgstr "Partitionen" - -msgid "No HSM devices available" -msgstr "Kein HSM-Gerät verfügbar" - -msgid "Partitions to be encrypted" -msgstr "Partitionen die verschlüsselt werden" - -msgid "Select disk encryption option" -msgstr "Laufwerksverschlüsselungsoption auswählen" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "FIDO2-Gerät für HSM auswählen" - -msgid "Use a best-effort default partition layout" -msgstr "Empfohlenes Partitionslayout verwenden" - -msgid "Manual Partitioning" -msgstr "Manuelle Partitionierung" - -msgid "Pre-mounted configuration" -msgstr "Voreingehängte Konfiguration" - -msgid "Unknown" -msgstr "Unbekannt" - -msgid "Partition encryption" -msgstr "Partitionsverschlüsselung" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr " ! Formatiere {} in " - -msgid "← Back" -msgstr "← Zurück" - -msgid "Disk encryption" -msgstr "Festplattenverschlüsselung" - -msgid "Configuration" -msgstr "Konfiguration" - -msgid "Password" -msgstr "Passwort" - -msgid "All settings will be reset, are you sure?" -msgstr "Alle Einstellungen werden zurückgesetzt. Sind Sie sicher?" - -msgid "Back" -msgstr "Zurück" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "Bitte einen Greeter (Begrüßer/Anmeldebildschirm) für das ausgewählte Profil auswählen: {}" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "Umgebungstyp: {}" - -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 "Der proprietäre Nvidia-Treiber wird von Sway nicht unterstützt. Es ist wahrscheinlich, dass Fehler auftreten werden, trotzdem fortfahren?" - -msgid "Installed packages" -msgstr "Installiere Pakete" - -msgid "Add profile" -msgstr "Profil hinzufügen" - -msgid "Edit profile" -msgstr "Profil bearbeiten" - -msgid "Delete profile" -msgstr "Profil entfernen" - -msgid "Profile name: " -msgstr "Profilname: " - -msgid "The profile name you entered is already in use. Try again" -msgstr "Der eingegebene Profilname wird bereits verwendet. Erneut versuchen" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "Zusätzliche Pakete die mit diesem Profil installiert werden sollen (Mit Leerzeichen trennen, leer lassen zum Überspringen): " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "Dienste, die mit diesem Profil aktiviert werden sollen (Mit Leerzeichen trennen, leer lassen zum Überspringen): " - -msgid "Should this profile be enabled for installation?" -msgstr "Soll dieses Profil für die Installation aktiviert werden?" - -msgid "Create your own" -msgstr "Erstellen Sie ein Eigenes" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Wählen sie einen Grafiktreiber aus oder leer lassen um alle quelloffenen Treiber zu installieren" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway benötigt Zugriff auf ihren Seat (Sammlung von Hardwaregeräten wie Tastatur, Maus, usw.)" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Option auswählen, um Sway Zugriff auf Ihre Hardware zu geben" - -msgid "Graphics driver" -msgstr "Grafiktreiber" - -msgid "Greeter" -msgstr "Greeter (Begrüßer/Anmeldebildschirm)" - -msgid "Please chose which greeter to install" -msgstr "Bitte den zu installierenden Greeter (Begrüßer/Anmeldebildschirm) auswählen" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "Dies ist eine Auflistung vorprogrammierter Standardprofile" - -msgid "Disk configuration" -msgstr "Laufwerkskonfiguration" - -msgid "Profiles" -msgstr "Profile" - -msgid "Finding possible directories to save configuration files ..." -msgstr "Finde mögliche Pfade um Konfigurationsdateien zu speichern..." - -msgid "Select directory (or directories) for saving configuration files" -msgstr "Ordner um Konfigurationsdateien zu erstellen auswählen" - -msgid "Add a custom mirror" -msgstr "Benutzerdefinierten Spiegelserver hinzufügen" - -msgid "Change custom mirror" -msgstr "Benutzerdefinierten Spiegelserver bearbeiten" - -msgid "Delete custom mirror" -msgstr "Benutzerdefinierten Spiegelserver löschen" - -msgid "Enter name (leave blank to skip): " -msgstr "Name eingeben (leer lassen zum Überspringen): " - -msgid "Enter url (leave blank to skip): " -msgstr "URL eingeben (leer lassen zum Überspringen): " - -msgid "Select signature check option" -msgstr "Signaturprüfungs-Option auswählen" - -msgid "Select signature option" -msgstr "Signatur-Option auswählen" - -msgid "Custom mirrors" -msgstr "Benutzerdefinierte Spiegelserver" - -msgid "Defined" -msgstr "Definiert" - -msgid "Save user configuration (including disk layout)" -msgstr "Benutzerkonfiguration (mit Laufwerkslayout) speichern" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"Geben Sie einen Ordner an, in dem die Konfiguration(en) gespeichert werden sollen (TAB zum vervollständigen)\n" -"Ordner: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"Möchten Sie {} Konfigurationsdatei(en) in folgendem Ordner speichern?\n" -"\n" -"{}" - -msgid "Saving {} configuration files to {}" -msgstr "{} Konfigurationsdateien in {} speichern" - -msgid "Mirrors" -msgstr "Spiegelserver" - -msgid "Mirror regions" -msgstr "Spiegelserver-Regionen" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - Maximalwert : {} ( Erlaubt {} parallele Downloads, erlaubt {max_downloads+1} Downloads gleichzeitig)" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "Ungültige Eingabe! Erneut mit gültiger Eingabe versuchen [1 bis {}, oder 0 zum deaktivieren]" - -msgid "Locales" -msgstr "Lokalisierung" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "NetworkManager nutzen (notwendig um Internetverbindungen grafisch in GNOME und KDE einzustellen)" - -msgid "Total: {} / {}" -msgstr "Gesamt: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "Alle eingegebenen Werte können mit einer Einheit angegeben werden: B, KB, KiB, MB, MiB..." - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "Wenn keine Einheit angegeben wurde, wird der Wert als Sektoren interpretiert" - -msgid "Enter start (default: sector {}): " -msgstr "Geben Sie den Anfang ein (Standard: Sektor {}): " - -msgid "Enter end (default: {}): " -msgstr "Geben Sie das Ende ein (Standard: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "Fehler beim Finden der fido2 Geräte. Ist libfido2 installiert?" - -msgid "Path" -msgstr "Pfad" - -msgid "Manufacturer" -msgstr "Hersteller" - -msgid "Product" -msgstr "Produkt" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "Ungültige Konfiguration: {error}" - -msgid "Type" -msgstr "Typ" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "Diese Option setzt die Anzahl der parallelen Downloads, die während der Paketdownloads stattfinden" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"Geben Sie die Nummer an parallelen Downloads an.\n" -"\n" -"Achtung:\n" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - Höchster empfohlener Wert : {} ( Erlaubt {} Downloads gleichzeitig )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - Deaktivieren/Standard : 0 (Deaktiviert parallele Downloads, erlaubt nur einen Download gleichzeitig)\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "Ungültige Eingabe! Erneut mit gültiger Eingabe versuchen [oder 0 zum deaktivieren]" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Hyprland benötigt Zugriff auf ihren Seat (Sammlung von Hardwaregeräten wie Tastatur, Maus, usw.)" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Eine Option auswählen, um Hyprland Zugriff auf Ihre Hardware zu geben" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "Alle eingegebenen Werte können mit einer Einheit angegeben werden: %, B, KB, KiB, MB, MiB..." - -msgid "Would you like to use unified kernel images?" -msgstr "Möchten Sie Vereinigte Kernel Images verwenden?" - -msgid "Unified kernel images" -msgstr "Vereinigte Kernel-Images" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "Warte auf Fertigstellung der Zeitsynchronisierung (timedatectl show)." - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Zeitsynchronisierung wird nicht fertig. Während Sie warten, lesen Sie die Dokumentation für Umgehungen dieses Fehlers durch: https://archinstall.readthedocs.io/" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "Überspringe das Warten auf die automatische Zeitsynchronisierung (dies kann Fehler verursachen, wenn die Zeit während der Installation nicht synchronisiert ist.)" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "Warte auf die Synchronisierung des Arch Linux-Keyrings (archlinux-keyring-wkd-sync)." - -msgid "Selected profiles: " -msgstr "Ausgewählte Profile: " - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Die Zeitsynchronisierung wird nicht fertig. während Sie warten, lesen Sie die Dokumentation für Umgehungen dieses Fehlers durch: https://archinstall.readthedocs.io/" - -msgid "Mark/Unmark as nodatacow" -msgstr "Als nodatacow markieren bzw. nicht markieren" - -msgid "Would you like to use compression or disable CoW?" -msgstr "Möchten Sie Komprimierung verwenden oder CoW deaktivieren?" - -msgid "Use compression" -msgstr "Komprimierung verwenden" - -msgid "Disable Copy-on-Write" -msgstr "Copy-on-Write deaktivieren" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "Auswahl von Desktopumgebungen und kachelnden Fenstermanagern, z.B. GNOME, KDE Plasma, Sway" - -#, python-brace-format -msgid "Configuration type: {}" -msgstr "Konfigurationstyp: {}" - -msgid "LVM configuration type" -msgstr "LVM-Konfigurationstyp" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "LVM-Verschlüsselung ist derzeit nicht mit mehr als 2 Partitionen unterstützt" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "NetworkManager nutzen (notwendig, um Internetverbindungen grafisch in GNOME und KDE Plasma einzustellen)" - -msgid "Select a LVM option" -msgstr "Wählen Sie eine LVM-Option aus" - -msgid "Partitioning" -msgstr "Partitionierung" - -msgid "Logical Volume Management (LVM)" -msgstr "Logisches Volumenmanagement (LVM)" - -msgid "Physical volumes" -msgstr "Physisches Volumen" - -msgid "Volumes" -msgstr "Volumes" - -msgid "LVM volumes" -msgstr "LVM-Volumes" - -msgid "LVM volumes to be encrypted" -msgstr "LVM-Volumes, die verschlüsselt werden sollen" - -msgid "Select which LVM volumes to encrypt" -msgstr "Wählen Sie aus, welche LVM-Volumes verschlüsselt werden sollen" - -msgid "Default layout" -msgstr "Standardlayout" - -msgid "No Encryption" -msgstr "Keine Verschlüsselung" - -msgid "LUKS" -msgstr "LUKS" - -msgid "LVM on LUKS" -msgstr "LVM auf LUKS" - -msgid "LUKS on LVM" -msgstr "LUKS auf LVM" - -msgid "Yes" -msgstr "Ja" - -msgid "No" -msgstr "Nein" - -msgid "Archinstall help" -msgstr "Hilfe für Archinstall" - -msgid " (default)" -msgstr " (Standard)" - -msgid "Press Ctrl+h for help" -msgstr "Drücken Sie Strg+h, für Hilfe" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "Eine Option auswählen, um Sway Zugriff auf Ihre Hardware zu geben" - -msgid "Seat access" -msgstr "Seat-Zugriff" - -msgid "Mountpoint" -msgstr "Einhängeort" - -msgid "HSM" -msgstr "HSM" - -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "Geben Sie ein Verschlüsselungspasswort ein (leer lassen, um Verschlüsselung zu deaktivieren):" - -msgid "Disk encryption password" -msgstr "Verschlüsselungspasswort" - -msgid "Partition - New" -msgstr "Neue Partition" - -msgid "Filesystem" -msgstr "Dateisystem" - -msgid "Invalid size" -msgstr "Ungültige Größe" - -msgid "Start (default: sector {}): " -msgstr "Geben Sie den Anfang ein (Standard: Sektor {}): " - -msgid "End (default: {}): " -msgstr "Geben Sie das Ende ein (Standard: {}): " - -msgid "Subvolume name" -msgstr "Name des Subvolumes" - -msgid "Disk configuration type" -msgstr "Laufwerkskonfigurationstyp" - -msgid "Root mount directory" -msgstr "Einhängeverzeichnis der Root-Partition" - -msgid "Select language" -msgstr "Sprache auswählen" - -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "Schreiben Sie zusätzliche Pakete, die installiert werden sollen (mit einem Leerzeichen getrennt, zum Überspringen leer lassen):" - -msgid "Invalid download number" -msgstr "Ungültige Anzahl an Downloads" - -msgid "Number downloads" -msgstr "Anzahl der Downloads" - -msgid "The username you entered is invalid" -msgstr "Der eingegebene Benutzername ist ungültig" - -msgid "Username" -msgstr "Benutzername" - -#, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "Soll \"{}\" ein Superuser sein (sudo)?\n" - -msgid "Interfaces" -msgstr "Verbindungen" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "Sie müssen im IP-Konfigurationsmodus eine gültige IP-Adresse eingeben" - -msgid "Modes" -msgstr "Modi" - -msgid "IP address" -msgstr "IP-Adresse" - -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "Geben Sie die IP-Adresse des Gateways (Router) ein (leer lassen für keines)" - -msgid "Gateway address" -msgstr "Gateway-Adresse" - -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "Geben Sie die DNS-Server ein (mit Leerzeichen getrennt; leer lassen für keinen Server)" - -msgid "DNS servers" -msgstr "DNS-Server" - -msgid "Configure interfaces" -msgstr "Schnittstellen konfigurieren" - -msgid "Kernel" -msgstr "Kernel" - -msgid "UEFI is not detected and some options are disabled" -msgstr "UEFI wurde nicht erkannt. Einige Optionen wurden deaktiviert" - -msgid "Info" -msgstr "Info" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "Der proprietäre Nvidia-Treiber wird von Sway nicht unterstützt." - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "Es ist wahrscheinlich, dass Fehler auftreten werden. Trotzdem fortfahren?" - -msgid "Main profile" -msgstr "Hauptprofil" - -msgid "Confirm password" -msgstr "Passwort bestätigen" - -msgid "The confirmation password did not match, please try again" -msgstr "Das Passwort stimmt nicht überein, bitte versuche es erneut" - -msgid "Not a valid directory" -msgstr "Ungültiges Verzeichnis" - -msgid "Would you like to continue?" -msgstr "Möchten Sie fortfahren?" - -msgid "Directory" -msgstr "Verzeichnis" - -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "Geben Sie einen Ordner an, in dem die Konfiguration(en) gespeichert werden sollen (Tab zum Vervollständigen)" - -#, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "Möchten Sie die Konfigurationsdatei(en) im Verzeichnis {} speichern?" - -msgid "Enabled" -msgstr "Aktiviert" - -msgid "Disabled" -msgstr "Deaktiviert" - -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "Bitte melden Sie das Problem mit der erstellten Datei auf https://github.com/archlinux/archinstall/issues" - -msgid "Mirror name" -msgstr "Spiegelserver-Name" - -msgid "Url" -msgstr "URL" - -msgid "Select signature check" -msgstr "Signaturprüfungs-Option auswählen" - -msgid "Select execution mode" -msgstr "Wählen Sie einen Ausführungsmodus" - -msgid "Press ? for help" -msgstr "Drücke ? für Hilfe" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "Eine Option auswählen, um Hyprland Zugriff auf Ihre Hardware zu geben" - -msgid "Additional repositories" -msgstr "Zusätzliche Repositorien" - -msgid "NTP" -msgstr "NTP" - -msgid "Swap on zram" -msgstr "Swap auf zram" - -msgid "Name" -msgstr "Name" - -msgid "Signature check" -msgstr "Signaturprüfung" - -#, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "Ausgewähltes freies Segment auf dem Gerät {}:" - -#, python-brace-format -msgid "Size: {} / {}" -msgstr "Größe: {} / {}" - -#, python-brace-format -msgid "Size (default: {}): " -msgstr "Größe (Standard: {}): " - -msgid "HSM device" -msgstr "HSM-Gerät" - -msgid "Some packages could not be found in the repository" -msgstr "Einige Pakete konnten nicht in den Repositorien gefunden werden" - -msgid "User" -msgstr "Benutzername" - -msgid "The specified configuration will be applied" -msgstr "Die festgelegte Konfiguration wird angewendet" - -msgid "Wipe" -msgstr "Löschen" - -msgid "Mark/Unmark as XBOOTLDR" -msgstr "Als XBOOTLDR markieren bzw. nicht markieren" - -msgid "Loading packages..." -msgstr "Lade Pakete..." - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "Wählen Sie Pakete aus, die Sie zusätzlich installieren möchten" - -msgid "Add a custom repository" -msgstr "Benutzerdefiniertes Repositorium hinzufügen" - -msgid "Change custom repository" -msgstr "Benutzerdefiniertes Repositorium bearbeiten" - -msgid "Delete custom repository" -msgstr "Benutzerdefiniertes Repositorium löschen" - -msgid "Repository name" -msgstr "Name des Repositoriums" - -msgid "Add a custom server" -msgstr "Benutzerdefinierten Spiegelserver hinzufügen" - -msgid "Change custom server" -msgstr "Benutzerdefinierten Spiegelserver wechseln" - -msgid "Delete custom server" -msgstr "Benutzerdefinierten Spiegelserver löschen" - -msgid "Server url" -msgstr "Server-URL" - -msgid "Select regions" -msgstr "Regionen auswählen" - -msgid "Add custom servers" -msgstr "Benutzerdefinierte Spiegelserver hinzufügen" - -msgid "Add custom repository" -msgstr "Benutzerdefiniertes Repositorium hinzufügen" - -msgid "Loading mirror regions..." -msgstr "Lade Spiegelserver-Regionen..." - -msgid "Mirrors and repositories" -msgstr "Spiegelserver und Paketrepositorien" - -msgid "Selected mirror regions" -msgstr "Ausgewählte Spiegelserver-Regionen" - -msgid "Custom servers" -msgstr "Benutzerdefinierte Spiegelserver" - -msgid "Custom repositories" -msgstr "Zusätzliche Repositorien" - -msgid "Only ASCII characters are supported" -msgstr "Es werden nur ASCII-Zeichen unterstützt" - -msgid "Show help" -msgstr "Hilfe anzeigen" - -msgid "Exit help" -msgstr "Hilfe beenden" - -msgid "Preview scroll up" -msgstr "Vorschau nach oben scrollen" - -msgid "Preview scroll down" -msgstr "Vorschau nach unten scrollen" - -msgid "Move up" -msgstr "Nach oben bewegen" - -msgid "Move down" -msgstr "Nach unten bewegen" - -msgid "Move right" -msgstr "Nach rechts bewegen" - -msgid "Move left" -msgstr "Nach links bewegen" - -msgid "Jump to entry" -msgstr "Zum Eintrag springen" - -msgid "Skip selection (if available)" -msgstr "Auswahl überspringen (Falls verfügbar)" - -msgid "Reset selection (if available)" -msgstr "Auswahl zurücksetzen (Falls verfügbar)" - -msgid "Select on single select" -msgstr "Bei Einzelauswahl auswählen" - -msgid "Select on multi select" -msgstr "Bei Mehrfachauswahl auswählen" - -msgid "Reset" -msgstr "Zurücksetzen" - -msgid "Skip selection menu" -msgstr "Auswahlmenü überspringen" - -msgid "Start search mode" -msgstr "Suchmodus starten" - -msgid "Exit search mode" -msgstr "Suchmodus beenden" - -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "labwc benötigt Zugriff auf ihren Seat (Sammlung von Hardwaregeräten wie Tastatur, Maus, usw.)" - -msgid "Choose an option to give labwc access to your hardware" -msgstr "Option auswählen, um labwc Zugriff auf Ihre Hardware zu geben" - -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "niri benötigt Zugriff auf ihren Seat (Sammlung von Hardwaregeräten wie Tastatur, Maus, usw.)" - -msgid "Choose an option to give niri access to your hardware" -msgstr "Option auswählen, um niri Zugriff auf Ihre Hardware zu geben" - -msgid "Mark/Unmark as ESP" -msgstr "Als ESP markieren bzw. nicht markieren" - -msgid "Package group:" -msgstr "Paketgruppe:" - -msgid "Exit archinstall" -msgstr "Archinstall verlassen" - -msgid "Reboot system" -msgstr "System neustarten" - -msgid "chroot into installation for post-installation configurations" -msgstr "Greifen Sie per chroot auf die neue Installation zu, um weitere Änderungen vorzunehmen" - -msgid "Installation completed" -msgstr "Installation abgeschlossen" - -msgid "What would you like to do next?" -msgstr "Was möchten Sie als nächstes tun?" - -#, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "Wählen Sie einen Modus zur Konfiguration von \"{}\"" - -msgid "Incorrect credentials file decryption password" -msgstr "Ungültiges Passwort für die Entschlüsselung der Anmeldedaten-Datei" - -msgid "Incorrect password" -msgstr "Falsches Passwort" - -msgid "Credentials file decryption password" -msgstr "Passwort für die Entschlüsselung der Anmeldedaten-Datei" - -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "Möchten Sie die Datei user_credentials.json verschlüsseln?" - -msgid "Credentials file encryption password" -msgstr "Passwort für die Verschlüsselung der Anmeldedaten-Datei" - -#, python-brace-format -msgid "Repositories: {}" -msgstr "Repositorien: {}" - -msgid "New version available" -msgstr "Neue Version verfügbar" - -msgid "Passwordless login" -msgstr "Login ohne Passwort" - -msgid "Second factor login" -msgstr "Zwei-Faktor-Login" - -msgid "Bluetooth" -msgstr "Bluetooth" - -msgid "Would you like to configure Bluetooth?" -msgstr "Möchten Sie Bluetooth aktivieren?" - -msgid "Authentication" -msgstr "Authentifizierung" - -msgid "Applications" -msgstr "Anwendungen" - -msgid "U2F login method: " -msgstr "U2F-Login-Methode: " - -msgid "Passwordless sudo: " -msgstr "Sudo ohne Passwort: " - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "Btrfs-Snapshot-Typ: {}" - -msgid "Syncing the system..." -msgstr "Synchronisiere das System..." - -msgid "Value cannot be empty" -msgstr "Der Wert darf nicht leer sein" - -msgid "Snapshot type" -msgstr "Snapshot-Typ" - -#, python-brace-format -msgid "Snapshot type: {}" -msgstr "Snapshot-Typ: {}" - -msgid "U2F login setup" -msgstr "U2F Login-Einrichtung" - -msgid "No U2F devices found" -msgstr "Keine U2F-Geräte gefunden" - -msgid "U2F Login Method" -msgstr "U2F-Login-Methode" - -msgid "Enable passwordless sudo?" -msgstr "Möchten Sie sudo ohne Passwort aktivieren?" - -#, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "Richte U2F-Gerät für den Benutzer {} ein" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "Sie müssen möglicherweise Ihre PIN eingeben und danach Ihr U2F-Gerät berühren, um es zu registrieren" - -msgid "Starting device modifications in " -msgstr "" - -#, fuzzy -msgid "No network connection found" -msgstr "Keine Netzwerkkonfiguration" - -#, fuzzy -msgid "Would you like to connect to a Wifi?" -msgstr "Möchten Sie fortfahren?" - -#, fuzzy -msgid "No wifi interface found" -msgstr "Schnittstellen konfigurieren" - -#, fuzzy -msgid "Select wifi network to connect to" -msgstr "Wählen Sie einen Netzwerkadapter zur Konfiguration aus" - -msgid "Scanning wifi networks..." -msgstr "" - -#, fuzzy -msgid "No wifi networks found" -msgstr "Keine Netzwerkkonfiguration" - -msgid "Failed setting up wifi" -msgstr "" - -#, fuzzy -msgid "Enter wifi password" -msgstr "Passwort eingeben: " - -msgid "Ok" -msgstr "" - -#~ msgid "All open-source" -#~ msgstr "Alle quelloffene" - -#~ msgid "AMD / ATI (open-source)" -#~ msgstr "AMD / ATI (quelloffen)" - -#~ msgid "Intel (open-source)" -#~ msgstr "Intel (quelloffen)" - -#~ msgid "Nvidia (open kernel module for newer GPUs, Turing+)" -#~ msgstr "Nvidia (offene Kernelmodule für neuere GPUs, Turing+)" - -#~ msgid "Nvidia (open-source nouveau driver)" -#~ msgstr "Nvidia (quelloffener nouveau-Treiber)" - -#~ msgid "Nvidia (proprietary)" -#~ msgstr "Nvidia (proprietär)" - -#~ msgid "VirtualBox (open-source)" -#~ msgstr "VirtualBox (quelloffen)" - -#~ msgid "Never" -#~ msgstr "Nie" - -#~ msgid "Optional" -#~ msgstr "Optional" - -#~ msgid "Required" -#~ msgstr "Benötigt" - -#~ msgid "Window Manager" -#~ msgstr "Fenstermanager" - -#~ msgid "Desktop Environment" -#~ msgstr "Desktopumgebung" diff --git a/examples/archinstall/archinstall/locales/el/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/el/LC_MESSAGES/base.mo deleted file mode 100644 index cee51a4..0000000 Binary files a/examples/archinstall/archinstall/locales/el/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/el/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/el/LC_MESSAGES/base.po deleted file mode 100644 index 2c0934d..0000000 --- a/examples/archinstall/archinstall/locales/el/LC_MESSAGES/base.po +++ /dev/null @@ -1,1966 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" -"Language: el\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.1\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] Ένα αρχείο καταγραφής έχει δημιουργηθεί εδώ: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Παρακαλώ επισυνάψτε αυτό το issue (και αρχείο) στο https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "Θέλετε σίγουρα να διακόψετε;" - -msgid "And one more time for verification: " -msgstr "Και άλλη μία φορά για επαλήθευση: " - -msgid "Would you like to use swap on zram?" -msgstr "Θα θέλατε να χρησιμοποιήσετε swap με zram;" - -msgid "Desired hostname for the installation: " -msgstr "Επιθυμητό όνομα υπολογιστή για την εγκατάσταση: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "Όνομα χρήστη για τον απαιτούμενο υπερ-χρήστη με δικαιώματα sudo: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "Επιπρόσθετοι χρήστες για την εγκατάσταση (αφήστε κενό για κανέναν χρήστη): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "Θα έπρεπε αυτός ο χρήστης να είναι ένας υπερχρήστης (χρήστης sudo);" - -msgid "Select a timezone" -msgstr "Επιλέξτε μία ζώνη ώρας" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "Θα θέλατε να χρησιμοποιήσετε το GRUB ως bootloader αντί του systemd-boot;" - -msgid "Choose a bootloader" -msgstr "Επιλέξτε έναν bootloader" - -msgid "Choose an audio server" -msgstr "Επιλέξτε έναν διακομιστή ήχου" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Εγκαθίστανται μόνο πακέτα όπως το base, base-devel, linux, linux-firmware, efibootmgr και προαιρετικά πακέτα προφίλ." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "Εάν επιθυμείτε έναν περιηγητή διαδικτύου, όπως ο firefox ή ο chromium, πρέπει να το καθορίσετε στο επακόλουθο prompt." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "Γράψτε περαιτέρω πακέτα προς εγκατάσταση (χωρισμένα με κενό, αφήστε άδειο για να παραληφθεί): " - -msgid "Copy ISO network configuration to installation" -msgstr "Αντιγραφή διαμόρφωση δικτύου ISO στην εγκατάσταση" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "Χρήση NetworkManager (απαραίτητος για τη διαμόρφωση του δικτύου γραφικά σε GNOME και KDE)" - -msgid "Select one network interface to configure" -msgstr "Επιλέξτε μία διεπαφή δικτύου για διαμόρφωση" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "Επιλέξτε ποιο mode να διαμορφωθεί για το \"{}\" ή παραλείψτε για να χρησιμοποιηθεί το default mode \"{}\"" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "Εισάγετε την IP και το υποδίκτυο για το {} (παράδειγμα: 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "Εισάγετε τη διεύθυνση IP του router σας ή αφήστε κενό για καμία διεύθυνση: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "Εισάγετε τους διακομιστές DNS σας (χωρισμένοι με κενό, αφήστε κενό για κανέναν διακομιστή): " - -msgid "Select which filesystem your main partition should use" -msgstr "Επιλέξτε ποιο σύστημα αρχείων θέλετε να χρησιμοποιεί η κύρια διαμέριση" - -msgid "Current partition layout" -msgstr "Τρέχουσα διάταξη διαμέρισης" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"Επιλέξτε τι να γίνει με\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "Εισάγετε ένα επιθυμητό τύπο συστήματος αρχείων για τη διαμέριση" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "" - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "" - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} περιέχει διαμερίσεις στην ουρά, αυτό θα τις διαγράψει, είστε σίγουρη/ος;" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"Επιλέξτε ποιες διαμερίσεις να διαγραφούν μέσω δείκτη" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"Επιλέξτε ποια διαμέριση να γίνει mount που, μέσω δείκτη" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * Τα σημεία mount της διαμέρισης είναι σχετικά ως προς το εσωτερικό της εγκατάστασης, για παράδειγμα το boot θα ήταν /boot." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "Επιλέξτε που να γίνει mount η διαμέρισιη (αφήστε κενό για να διαγραφεί το σημείο mount): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"Επιλέξτε ποια διαμέριση να μεταμφιεστεί για μορφοποίηση" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"Επιλέξτε ποια διαμέριση να σημειωθεί ως κρυπτογραφημένη" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"Επιλέξτε ποια διαμέριση να σημειωθεί ως bootable" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"Επιλέξτε σε ποια διαμέριση να δημιουργηθεί σύστημα αρχείων" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "Εισάγετε τον επιθυμητό τύπο συστήματος αρχείων για αυτήν τη διαμέριση: " - -msgid "Archinstall language" -msgstr "Γλώσσα archinstall" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Διαγραφή όλων των επιλεγμένων δίσκων και χρήση μίας προκαθορισμένης διάταξης βέλτιστης προσπάθειας" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Επιλέξτε τι να γίνει με κάθε ξεχωριστό δίσκο (με επακόλουθο τη χρήση διαμέρισης)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "Επιλέξτε τι θέλετε να κάνετε με τις επιλεγμένες συσκευές block" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "Αυτή είναι μία λίστα με προ-προγραμματισμένα προφίλ, που μπορεί να κάνουν την εγκατάσταση πραγμάτων όπως περιβάλλοντα επιφάνειας εργασίας πιο εύκολη" - -msgid "Select keyboard layout" -msgstr "Επιλέξτε διάταξη πληκτρολογίου" - -msgid "Select one of the regions to download packages from" -msgstr "Επιλέξτε μία από τις περιοχές από τις οποίες να γίνει λήψη πακέτων" - -msgid "Select one or more hard drives to use and configure" -msgstr "Επιλέξτε έναν ή περισσότερους σκληρούς δίσκους προς χρήση και διαμόρφωση" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "Για την καλύτερη συμβατότητα με το AMD υλισμικό σας, ίσως θέλετε να χρησιμοποιήσετε είτε την \"όλα ανοιχτού κώδικα\", είτε την AMD / ATI επιλογή." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "Για την καλύτερη συμβατότητα με το Intel υλισμικό σας, ίσως θέλετε να χρησιμοποιήσετε είτε την \"όλα ανοιχτού κώδικα\", είτε την Intel επιλογή.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Για την καλύτερη συμβατότητα με το Nvidia υλισμικό σας, ίσως θέλετε να χρησιμοποιήσετε τον ιδιόκτητο οδηγό της Nvidia.\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Επιλέξτε έναν οδηγό γραφικών ή αφήστε κενό για να εγκατασταθούν όλοι οι οδηγοί ανοιχτού κώδικα" - -msgid "All open-source (default)" -msgstr "Όλα ανοιχτού κώδικα (προκαθορισμένο)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "Επιλέξτε ποιοι kernels να χρησιμοποιηθούν ή αφήστε κενό για το προκαθορισμένο \"{}\"" - -msgid "Choose which locale language to use" -msgstr "Επιλέξτε ποια τοπική γλώσσα να χρησιμοποιηθεί" - -msgid "Choose which locale encoding to use" -msgstr "Επιλέξτε ποια τοπική κωδικοποίηση να χρησιμοποιηθεί" - -msgid "Select one of the values shown below: " -msgstr "Επιλέξτε μία από τις τιμές που φαίνονται παρακάτω: " - -msgid "Select one or more of the options below: " -msgstr "Επιλέξτε μία ή παραπάνω από τις επιλογές παρακάτω: " - -msgid "Adding partition...." -msgstr "Προσθέτωντας τη διαμέριση...." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "Πρέπει να εισάγετε έναν έγκυρο fs-type ώστε να συνεχίσετε. Δείτε `man parted` για έγκυρους fs-type." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Σφάλμα: Η καταγραφή προφίλ στο URL \"{}\" είχε ως αποτέλεσμα:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "Σφάλμα: Η αποκωδικοποίηση του αποτελέσματος \"{}\" ως JSON ήταν ανεπιτυχής:" - -msgid "Keyboard layout" -msgstr "Διάταξη πληκτρολογίου" - -msgid "Mirror region" -msgstr "Περιοχή mirror" - -msgid "Locale language" -msgstr "Τοπική γλώσσα" - -msgid "Locale encoding" -msgstr "Τοπική κωδικοποίηση" - -msgid "Drive(s)" -msgstr "Δίσκος(οι)" - -msgid "Disk layout" -msgstr "Διάταξη δίσκου" - -msgid "Encryption password" -msgstr "Κωδικός κρυπτογράφησης" - -msgid "Swap" -msgstr "Swap" - -msgid "Bootloader" -msgstr "Bootloader" - -msgid "Root password" -msgstr "Κωδικός root" - -msgid "Superuser account" -msgstr "Λογαριασμός υπερχρήστη" - -msgid "User account" -msgstr "Λογαριασμός χρήστη" - -msgid "Profile" -msgstr "Προφίλ" - -msgid "Audio" -msgstr "Ήχος" - -msgid "Kernels" -msgstr "Kernels" - -msgid "Additional packages" -msgstr "Περαιτέρω πακέτα" - -msgid "Network configuration" -msgstr "Διαμόρφωση δικτύου" - -msgid "Automatic time sync (NTP)" -msgstr "Αυτόματη ενημέρωση ώρας (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "Εγκατάσταση (η/οι {} διαμόρφωση/εις λείπει/ουν)" - -msgid "" -"You decided to skip harddrive selection\n" -"and will use whatever drive-setup is mounted at {} (experimental)\n" -"WARNING: Archinstall won't check the suitability of this setup\n" -"Do you wish to continue?" -msgstr "" -"Επιλέξατε να παραλείψετε την επιλογή σκληρού δίσκου\n" -"και θα χρησιμοποιηθεί οποιαδήποτε εγκατάσταση δίσκου είναι mount στο {} (πειραματικό)\n" -"ΠΡΟΣΟΧΗ: Το archinstall δεν μπορεί να ελέγξει την καταλληλότητα αυτής της εγκατάστασης\n" -"Θέλετε να συνεχίσετε;" - -msgid "Re-using partition instance: {}" -msgstr "Επαναχρησιμοποιώντας την instance διαμέρισης: {}" - -msgid "Create a new partition" -msgstr "Δημιουργία καινούργιας διαμέρισης" - -msgid "Delete a partition" -msgstr "Διαγραφή διαμέρισης" - -msgid "Clear/Delete all partitions" -msgstr "Καθαρισμός/Διαγραφή όλων των διαμερίσεων" - -msgid "Assign mount-point for a partition" -msgstr "Εκχώρηση σημείου mount για μία διαμέριση" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "Σημείωση/Ξεμαρκάρισμα διαμέρισης προς μορφοποίηση (διαγράφει τα δεδομένα)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "Σημείωση/Ξεμαρκάρισμα διαμέρισης ως κρυπτογραφημένη" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "Σημείωση/Ξεμαρκάρισμα διαμέρισης ως ικανή για boot (αυτόματο για /boot)" - -msgid "Set desired filesystem for a partition" -msgstr "Θέση επιθυμητού συστήματος αρχείων για μία διαμέριση" - -msgid "Abort" -msgstr "Εγκατάλειψη" - -msgid "Hostname" -msgstr "Όνομα υπολογιστή" - -msgid "Not configured, unavailable unless setup manually" -msgstr "Δεν έχει διαμορφωθεί, μη διαθέσιμο εκτός εάν εγκατασταθεί χειροκίνητα" - -msgid "Timezone" -msgstr "Ζώνη ώρας" - -msgid "Set/Modify the below options" -msgstr "Θέση/Τροποποίηση των παρακάτω επιλογών" - -msgid "Install" -msgstr "Εγκατάσταση" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"Χρησιμοποιήστε ESC για παράλειψη\n" -"\n" - -msgid "Suggest partition layout" -msgstr "Πρόταση διάταξης διαμέρισης" - -msgid "Enter a password: " -msgstr "Εισάγετε κωδικό: " - -msgid "Enter a encryption password for {}" -msgstr "Εισάγετε έναν κωδικό κρυπτογράφησης για {}" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "Εισάγετε κωδικό κρυπτογράφησης δίσκου (αφήστε κενό για καμία κρυπτογράφηση): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "Δημιουργήστε έναν απαιτούμενο υπερχρήστη με δικαιώματα sudo: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "Εισάγετε τον κωδικό root (αφήστε κενό για να απενεργοποιηθεί το root): " - -msgid "Password for user \"{}\": " -msgstr "Κωδικός για τον χρήστη \"{}\": " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "Επαληθεύοντας ότι υπάρχουν περαιτέρω πακέτα (μπορεί να πάρει μερικά δευτερόλεπτα)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "Θα θέλατε να χρησιμοποιήσετε αυτόματο συγχρονισμό χρόνου (NTP) με τους προκαθορισμένους διακομιστές χρόνου;\n" - -msgid "" -"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" -"For more information, please check the Arch wiki" -msgstr "" -"Ο χρόνος υλισμικού και άλλα βήματα μετά τη διαμόρφωση ενδέχεται να απαιτούνται ώστε να δουλέψει ο NTP.\n" -"Για περισσότερες πληροφορίες, παρακαλώ ελέγξτε το Arch wiki" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "Εισάγετε ένα όνομα χρήστη για να δημιουργήσετε έναν ακόμα χρήστη (αφήστε κενό για παράλειψη): " - -msgid "Use ESC to skip\n" -msgstr "Χρησιμοποιήστε ESC για παράλειψη\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -"Επιλέξτε ένα αντικείμενο από τη λίστα, και επιλέξτε μία από τις διαθέσιμες επιλογές προς εκτέλεση" - -msgid "Cancel" -msgstr "Ακύρωση" - -msgid "Confirm and exit" -msgstr "Επιβεβαίωση και έξοδος" - -msgid "Add" -msgstr "Προσθήκη" - -msgid "Copy" -msgstr "Αντιγραφή" - -msgid "Edit" -msgstr "Επεξεργασία" - -msgid "Delete" -msgstr "Διαγραφή" - -msgid "Select an action for '{}'" -msgstr "Επιλέξτε μία ενέργεια για '{}'" - -msgid "Copy to new key:" -msgstr "Αντιγραφή σε νέο κλειδί:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "Άγνωστος τύπος nic: {}. Πιθανές τιμές είναι οι {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"Αυτή είναι η επιλεγμένη σας διαμόρφωση:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Ο Pacman ήδη εκτελείται, αναμονή μέχρι 10 λεπτά ώστε να τερματίσει." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "Η προϋπάρχουσα pacman lock δεν εξήλθε. Παρακαλώ καθαρίστε τυχόν συνεδρίες pacman πριν τη χρήση του archinstall." - -msgid "Choose which optional additional repositories to enable" -msgstr "Επιλέξτε ποια προαιρετικά περαιτέρω αποθετήρια να ενεργοποιηθούν" - -msgid "Add a user" -msgstr "Προσθήκη χρήστη" - -msgid "Change password" -msgstr "Αλλαγή κωδικού" - -msgid "Promote/Demote user" -msgstr "Προαγωγή/Υποβιβασμός χρήστη" - -msgid "Delete User" -msgstr "Διαγραφή Χρήστη" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"Ορισμός νέου χρήστη\n" - -msgid "User Name : " -msgstr "Όνομα Χρήστη : " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "Θα έπρεπε ο {} να είναι υπερχρήστης (χρήστης sudo);" - -msgid "Define users with sudo privilege: " -msgstr "Καθορίστε τους χρήστες με δικαιώματα sudo: " - -msgid "No network configuration" -msgstr "Καμία διαμόρφωση δικτύου" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "Θέση επιθυμητών υποόγκων σε μία διαμέριση btrfs" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"Επιλέξτε σε ποια διαμέριση να τεθούν υποόγκοι" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "Διαχειριστείτε τους υποόγκους btrfs για την τρέχουσα διαμέριση" - -msgid "No configuration" -msgstr "Καμία διαμόρφωση" - -msgid "Save user configuration" -msgstr "Αποθήκευση διαμόρφωσης χρήστη" - -msgid "Save user credentials" -msgstr "Αποθήκευση στοιχείων χρήστη" - -msgid "Save disk layout" -msgstr "Αποθήκευση διάταξης δίσκου" - -msgid "Save all" -msgstr "Αποθήκευση όλων" - -msgid "Choose which configuration to save" -msgstr "Επιλέξτε ποια διαμόρφωση να αποθηκευτεί" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "Εισάγετε έναν φάκελο για την αποθήκευση της/ων διαμόρφωση/ων: " - -msgid "Not a valid directory: {}" -msgstr "Μη έγκυρος φάκελος: {}" - -msgid "The password you are using seems to be weak," -msgstr "Ο κωδικός που χρησιμοποιείτε φαίνεται να είναι αδύναμος," - -msgid "are you sure you want to use it?" -msgstr "είστε σίγουρη/ος ότι θέλετε να τον χρησιμοποιήσετε;" - -msgid "Optional repositories" -msgstr "Προαιρετικά αποθετήρια" - -msgid "Save configuration" -msgstr "Αποθήκευση διαμόρφωσης" - -msgid "Missing configurations:\n" -msgstr "Διαμορφώσεις που λείπουν:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "Πρέπει να καθοριστεί είτε ο κωδικός του root είτε τουλάχιστον 1 υπερχρήστης" - -msgid "Manage superuser accounts: " -msgstr "Διαχείριση λογαριασμών υπερχρήστη: " - -msgid "Manage ordinary user accounts: " -msgstr "Διαχείριση λογαριασμών κανονικών χρηστών: " - -msgid " Subvolume :{:16}" -msgstr " Υποόγκος :{:16}" - -msgid " mounted at {:16}" -msgstr " Έχει γίνει mount στο {:16}" - -msgid " with option {}" -msgstr " με επιλογή {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -" Συμπληρώστε τις επιθυμητές τιμές για έναν νέο υποόγκο \n" - -msgid "Subvolume name " -msgstr "Όνομα υποόγκου " - -msgid "Subvolume mountpoint" -msgstr "Σημείο mount υποόγκου" - -msgid "Subvolume options" -msgstr "Επιλογές υποόγκου" - -msgid "Save" -msgstr "Αποθήκευση" - -msgid "Subvolume name :" -msgstr "Όνομα υποόγκου :" - -msgid "Select a mount point :" -msgstr "Επιλέξτε ένα σημείο mount :" - -msgid "Select the desired subvolume options " -msgstr "Επιλέξτε τις επιθυμητές επιλογές υποόγκου " - -msgid "Define users with sudo privilege, by username: " -msgstr "Καθορίστε τους χρήστες με δικαιώματα sudo, μέσω όνομα χρήστη: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] Ένα αρχείο ιστορικού έχει δημιουργηθεί εδώ: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "Θα θέλατε να χρησιμοποιήσετε BTRFS υποόγκους με μία προκαθορισμένη δομή;" - -msgid "Would you like to use BTRFS compression?" -msgstr "Θα θέλατε να χρησιμοποιήσετε συμπίεση BTRFS;" - -msgid "Would you like to create a separate partition for /home?" -msgstr "Θα θέλατε να δημιουργήσετε μία ξεχωριστή διαμέριση για το /home;" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "Οι επιλεγμένοι δίσκοι δεν έχουν την ελάχιστη χωρητικότητα που απαιτείται για μία αυτόματη πρόταση\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "Ελάχιστη χωρητικότητα για τη διαμέριση /home: {}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Ελάχιστη χωρητικότητα για τη διαμέριση Arch Linux: {}GB" - -msgid "Continue" -msgstr "Συνέχεια" - -msgid "yes" -msgstr "ναι" - -msgid "no" -msgstr "οχι" - -msgid "set: {}" -msgstr "θέση {}" - -msgid "Manual configuration setting must be a list" -msgstr "Η ρύθμιση χειροκίνητης διαμόρφωσης πρέπει να είναι μία λίστα" - -msgid "No iface specified for manual configuration" -msgstr "Δεν έχει καθοριστεί iface για χειροκίνητη διαμόρφωση" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "Η χειροκίνητη διαμόρφωση nic χωρίς αυτόματο DHCP απαιτεί μία διεύθυνση IP" - -msgid "Add interface" -msgstr "Προσθήκη διεπαφής" - -msgid "Edit interface" -msgstr "Επεξεργασία διεπαφής" - -msgid "Delete interface" -msgstr "Διαγραφή διεπαφής" - -msgid "Select interface to add" -msgstr "Επιλέξτε διεπαφή προς προσθήκη" - -msgid "Manual configuration" -msgstr "Χειροκίνητη διαμόρφωση" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "Σημείωση/Ξεμαρκάρισμα μίας διαμέρισως ως συμπιεσμένη (μόνο για btrfs)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "Ο κωδικός που χρησιμοποιείτε φαίνεται να είναι αδύναμος, είστε σίγουρη/ος ότι θέλετε να τον χρησιμοποιήσετε;" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "Παρέχει μία επιλογή από περιβάλλοντα επιφάνειας εργασίας και διαχειριστές tiling παραθύρων, π.χ. gnome, kde, sway" - -msgid "Select your desired desktop environment" -msgstr "Επιλέξτε το επιθυμητό σας περιβάλλον επιφάνειας εργασίας" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "Μία πολύ βασική εγκατάσταση που σας επιτρέπει να προσαρμόσετε τα Arch Linux όπως εσείς κρίνετε κατάλληλο." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "Παρέχει μία επιλογή από ποικίλα πακέτα διακομιστών προς εγκατάσταση και ενεργοποίηση, π.χ. httpd, nginx, mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "Επιλέξτε ποιους διακομιστές να εγκατασταθούν, αν δεν επιλεχθεί κανένας τότε θα γίνει μία minimal εγκατάσταση" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "Εγκαθιστά ένα minimal σύστημα καθώς και το xorg και οδηγούς γραφικών." - -msgid "Press Enter to continue." -msgstr "Πατήστε Enter για να συνεχίσετε." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "Θα θέλατε να κάνετε chroot εντός της καινούργιας εγκατάστασης για περαιτέρω διαμόρφωση;" - -msgid "Are you sure you want to reset this setting?" -msgstr "Είστε σίγουρη/ος ότι θέλετε να επαναφέρετε αυτήν τη ρύθμιση;" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "Επιλέξτε έναν ή περισσότερους σκληρούς δίσκους προς χρήση και διαμόρφωση\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "Τυχόν τροποποιήσεις στην ήδη υπάρχουσα ρύθμιση θα επαναφέρουν τη διάταξη δίσκου!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "Αν επαναφέρετε την επιλογή σκληρού δίσκου αυτό επίσης θα επαναφέρει την τρέχουσα διάταξη δίσκου. Είστε σίγουρη/ος;" - -msgid "Save and exit" -msgstr "Αποθήκευση και έξοδος" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"περιέχει διαμερίσεις στην ουρά, αυτό θα τις διαγράψει, είστε σίγουρη/ος;" - -msgid "No audio server" -msgstr "Κανένας διακομιστής ήχου" - -msgid "(default)" -msgstr "(προκαθορισμένο)" - -msgid "Use ESC to skip" -msgstr "Χρησιμοποιήστε ESC για παράλειψη" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"Χρησιμοποιήστε CTRL+C για να επαναφέρετε την τρέχουσα επιλογή\n" -"\n" - -msgid "Copy to: " -msgstr "Αντιγραφή σε: " - -msgid "Edit: " -msgstr "Επεξεργασία " - -msgid "Key: " -msgstr "Κλειδί: " - -msgid "Edit {}: " -msgstr "Επεξεργασία {}: " - -msgid "Add: " -msgstr "Προσθήκη: " - -msgid "Value: " -msgstr "Τιμή: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "Μπορείτε να παραλείψετε την επιλογή δίσκου και διαμερισμού και να χρησιμοποιήσετε οποιαδήποτε εγκατάσαση δίσκου είναι mount στο /mnt (πειραματικό)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "Επιλέξτε έναν από τους δίσκους ή παραλείψτε και χρησιμοποιήστε το /mnt ως προκαθορισμένο" - -msgid "Select which partitions to mark for formatting:" -msgstr "Επιλέξτε ποιες διαμερίσεις να σημειωθούν για μορφοποίηση:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "Χρήση HSM για ξεκλείδωμα κρυπτογραφημένου δίσκου" - -msgid "Device" -msgstr "Συσκευή" - -msgid "Size" -msgstr "Μέγεθος" - -msgid "Free space" -msgstr "Ελεύθερος χώρος" - -msgid "Bus-type" -msgstr "Τύπος bus" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "Πρέπει να καθοριστεί είτε ο κωδικός root ή τουλάχιστον 1 χρήστης με δικαιώματα sudo" - -msgid "Enter username (leave blank to skip): " -msgstr "Εισάγετε όνομα χρήστη (αφήστε κενό για παράλειψη): " - -msgid "The username you entered is invalid. Try again" -msgstr "Το όνομα χρήστη που εισάγατε δεν είναι έγκυρο. Προσπαθήστε ξανά" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "Θα έπρεπε ο \"{}\" να είναι υπερχρήστης (sudo);" - -msgid "Select which partitions to encrypt" -msgstr "Επιλέξτε ποιες διαμερίσεις να κρυπτογραφηθούν." - -msgid "very weak" -msgstr "πολύ αδύναμος" - -msgid "weak" -msgstr "αδύναμος" - -msgid "moderate" -msgstr "μέτριος" - -msgid "strong" -msgstr "ισχυρός" - -msgid "Add subvolume" -msgstr "Προσθήκη υποόγκου" - -msgid "Edit subvolume" -msgstr "Επεξεργασία υποόγκου" - -msgid "Delete subvolume" -msgstr "Διαγραφή υποόγκου" - -msgid "Configured {} interfaces" -msgstr "Διαμορφωμένες {} διεπαφές" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "Αυτή η επιλογή θέτει τον αριθμό των παράλληλων λήψεων που μπορούν να συμβούν κατά την εγκατάσταση" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"Εισάγετε τον αριθμό των παράλληλων λήψεων προς ενεργοποίηση.\n" -" (Εισάγετε μία τιμή από 1 μέχρι {})\n" -"Σημείωση:" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - Μέγιστη τιμή : {} ( Επιτρέπει {} παράλληλες λήψεις, επιτρέπει {} λήψεις σε μία στιγμή )" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - Ελάχιστη τιμή : 1 ( Επιτρέπει 1 παράλληλη λήψη, επιτρέπει 2 λήψεις σε μία στιγμή )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - Απενεργοποίηση/Προκαθορισμένο : 0 ( Απενεργοποιεί τις παράλληλες λήψεις, επιτρέπει μόνο 1 λήψη σε μία στιγμή )" - -#, fuzzy, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "Μη έγκυρη είσοδος! Προσπαθήστε ξανά με μία έγκυρη είσοδο [1 μέχρι {max_downloads}, ή 0 για απενεργοποίηση]" - -msgid "Parallel Downloads" -msgstr "Παράλληλες Λήψεις" - -#, fuzzy -msgid "ESC to skip" -msgstr "Χρησιμοποιήστε ESC για παράλειψη" - -msgid "CTRL+C to reset" -msgstr "CTRL+C για επαναφορά" - -msgid "TAB to select" -msgstr "TAB για επιλογή" - -msgid "[Default value: 0] > " -msgstr "[Προεπιλεγμένη τιμή: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "Για να μπορείτε να χρησιμοποιήσετε αυτή την μετάφραση, παρακαλώ εγκαταστήστε χειροκίνητα την γραμματοσειρά που υποστηρίζει την γλώσσα." - -msgid "The font should be stored as {}" -msgstr "Η γραμματοσειρά θα πρέπει να αποθηκευτεί ως {}" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "Το Archinstall απαιτεί δικαιώματα υπερχρήστη για να εκτελεστεί. Δείτε --help for more." - -#, fuzzy -msgid "Select an execution mode" -msgstr "Επιλέξτε μία ενέργεια για '{}'" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "Αδύνατη η λήψη προφίλ από το συγκεκριμένο url: {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "Τα προφίλ πρέπει να έχουν μοναδικό όνομα, αλλά βρέθηκαν ορισμοί προφίλ με διπλό όνομα: {}" - -#, fuzzy -msgid "Select one or more devices to use and configure" -msgstr "Επιλέξτε έναν ή περισσότερους σκληρούς δίσκους προς χρήση και διαμόρφωση" - -#, fuzzy -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "Αν επαναφέρετε την επιλογή σκληρού δίσκου αυτό επίσης θα επαναφέρει την τρέχουσα διάταξη δίσκου. Είστε σίγουρη/ος;" - -#, fuzzy -msgid "Existing Partitions" -msgstr "Προσθέτωντας τη διαμέριση...." - -#, fuzzy -msgid "Select a partitioning option" -msgstr "Διαγραφή διαμέρισης" - -#, fuzzy -msgid "Enter the root directory of the mounted devices: " -msgstr "Εισάγετε έναν φάκελο για την αποθήκευση της/ων διαμόρφωση/ων: " - -#, fuzzy, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "Ελάχιστη χωρητικότητα για τη διαμέριση /home: {}GB\n" - -#, fuzzy, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "Ελάχιστη χωρητικότητα για τη διαμέριση Arch Linux: {}GB" - -#, fuzzy -msgid "This is a list of pre-programmed profiles_bck, they might make it easier to install things like desktop environments" -msgstr "Αυτή είναι μία λίστα με προ-προγραμματισμένα προφίλ, που μπορεί να κάνουν την εγκατάσταση πραγμάτων όπως περιβάλλοντα επιφάνειας εργασίας πιο εύκολη" - -#, fuzzy -msgid "Current profile selection" -msgstr "Τρέχουσα διάταξη διαμέρισης" - -#, fuzzy -msgid "Remove all newly added partitions" -msgstr "Αφαίρεση όλων των νέων διαμερίσεων" - -#, fuzzy -msgid "Assign mountpoint" -msgstr "Εκχώρηση σημείου mount για μία διαμέριση" - -#, fuzzy -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "Σημείωση/Ξεμαρκάρισμα διαμέρισης προς μορφοποίηση (διαγράφει τα δεδομένα)" - -msgid "Mark/Unmark as bootable" -msgstr "Σημείωση/Ξεμαρκάρισμα ως bootable" - -msgid "Change filesystem" -msgstr "Αλλαγή συστήματος αρχείων" - -#, fuzzy -msgid "Mark/Unmark as compressed" -msgstr "Σημείωση/Ξεμαρκάρισμα μίας διαμέρισως ως συμπιεσμένη (μόνο για btrfs)" - -#, fuzzy -msgid "Set subvolumes" -msgstr "Ορισμός υποόγκων" - -#, fuzzy -msgid "Delete partition" -msgstr "Διαγραφή διαμέρισης" - -msgid "Partition" -msgstr "Διαμέριση" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "Αυτή η διαμέριση είναι κρυπτογραφημένη, για μορφοποίηση πρέπει να οριστεί ένα σύστημα αρχείων" - -#, fuzzy -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * Τα σημεία mount της διαμέρισης είναι σχετικά ως προς το εσωτερικό της εγκατάστασης, για παράδειγμα το boot θα ήταν /boot." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "" - -msgid "Mountpoint: " -msgstr "" - -msgid "Current free sectors on device {}:" -msgstr "" - -#, fuzzy -msgid "Total sectors: {}" -msgstr "Σύνολο sectors: {}" - -#, fuzzy -msgid "Enter the start sector (default: {}): " -msgstr "Εισάγετε τον start sector (ποσοστό ή αριθμό block, προκαθορισμένο {}): " - -#, fuzzy -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "Εισάγετε τον end sector της διαμέρισης (ποσοστό ή αριθμό block, πχ: {}) " - -msgid "This will remove all newly added partitions, continue?" -msgstr "Αυτή η ενέργεια θα αφαιρέσει τις νέες διαμερίσεις, συνέχεια;" - -#, fuzzy, python-brace-format -msgid "Partition management: {}" -msgstr "Διαχείριση διαμέρισης" - -#, python-brace-format -msgid "Total length: {}" -msgstr "" - -#, fuzzy -msgid "Encryption type" -msgstr "Κωδικός κρυπτογράφησης" - -msgid "Iteration time" -msgstr "" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "" - -msgid "Higher values increase security but slow down boot time" -msgstr "" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "" - -msgid "Iteration time cannot be empty" -msgstr "" - -msgid "Iteration time must be at least 100ms" -msgstr "" - -msgid "Iteration time must be at most 120000ms" -msgstr "" - -msgid "Please enter a valid number" -msgstr "" - -msgid "Partitions" -msgstr "Διαμερίσεις" - -msgid "No HSM devices available" -msgstr "Καμία διαθέσιμη συσκευή HSM" - -#, fuzzy -msgid "Partitions to be encrypted" -msgstr "Επιλέξτε ποιες διαμερίσεις να κρυπτογραφηθούν." - -msgid "Select disk encryption option" -msgstr "Επιλογή κρυπτογράφησης δίσκου" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "" - -#, fuzzy -msgid "Use a best-effort default partition layout" -msgstr "Διαγραφή όλων των επιλεγμένων δίσκων και χρήση μίας προκαθορισμένης διάταξης βέλτιστης προσπάθειας" - -#, fuzzy -msgid "Manual Partitioning" -msgstr "Χειροκίνητη διαμόρφωση" - -#, fuzzy -msgid "Pre-mounted configuration" -msgstr "Καμία διαμόρφωση" - -msgid "Unknown" -msgstr "Άγνωστο" - -msgid "Partition encryption" -msgstr "Κρυπτογράφηση διαμέρισης" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr " ! Μορφοποίηση {} σε " - -msgid "← Back" -msgstr "← Πίσω" - -msgid "Disk encryption" -msgstr "Κρυπτογράφηση δίσκου" - -#, fuzzy -msgid "Configuration" -msgstr "Καμία διαμόρφωση" - -#, fuzzy -msgid "Password" -msgstr "Κωδικός root" - -#, fuzzy -msgid "All settings will be reset, are you sure?" -msgstr "{} περιέχει διαμερίσεις στην ουρά, αυτό θα τις διαγράψει, είστε σίγουρη/ος;" - -msgid "Back" -msgstr "Πίσω" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "" - -msgid "The proprietary Nvidia driver is not supported by Sway. It is likely that you will run into issues, are you okay with that?" -msgstr "" - -#, fuzzy -msgid "Installed packages" -msgstr "Εγκατεστημένα πακέτα" - -#, fuzzy -msgid "Add profile" -msgstr "Προσθήκη προφίλ" - -#, fuzzy -msgid "Edit profile" -msgstr "Επεξεργασία προφίλ" - -#, fuzzy -msgid "Delete profile" -msgstr "Διαγραφή προφίλ" - -#, fuzzy -msgid "Profile name: " -msgstr "Όνομα προφίλ: " - -#, fuzzy -msgid "The profile name you entered is already in use. Try again" -msgstr "Το όνομα χρήστη που εισάγατε δεν είναι έγκυρο. Προσπαθήστε ξανά" - -#, fuzzy -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "Γράψτε περαιτέρω πακέτα προς εγκατάσταση (χωρισμένα με κενό, αφήστε κενό για να παραληφθεί): " - -#, fuzzy -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "Γράψτε περαιτέρω πακέτα προς εγκατάσταση (χωρισμένα με κενό, αφήστε κενό για να παραληφθεί): " - -msgid "Should this profile be enabled for installation?" -msgstr "Ενεργοποίηση του προφίλ για εγκατάσταση;" - -msgid "Create your own" -msgstr "Δημιουργήστε δικό σας" - -#, fuzzy -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Επιλέξτε έναν οδηγό γραφικών ή αφήστε κενό για να εγκατασταθούν όλοι οι οδηγοί ανοιχτού κώδικα" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" - -msgid "Graphics driver" -msgstr "Οδηγός γραφικών" - -msgid "Greeter" -msgstr "" - -msgid "Please chose which greeter to install" -msgstr "" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "" - -#, fuzzy -msgid "Disk configuration" -msgstr "Καμία διαμόρφωση" - -#, fuzzy -msgid "Profiles" -msgstr "Προφίλ" - -msgid "Finding possible directories to save configuration files ..." -msgstr "" - -#, fuzzy -msgid "Select directory (or directories) for saving configuration files" -msgstr "Επιλέξτε έναν ή περισσότερους σκληρούς δίσκους προς χρήση και διαμόρφωση" - -#, fuzzy -msgid "Add a custom mirror" -msgstr "Προσθήκη custom mirror" - -msgid "Change custom mirror" -msgstr "Αλλαγή custom mirror" - -msgid "Delete custom mirror" -msgstr "Διαγραφή custom mirror" - -#, fuzzy -msgid "Enter name (leave blank to skip): " -msgstr "Εισάγετε όνομα χρήστη (αφήστε κενό για παράλειψη): " - -#, fuzzy -msgid "Enter url (leave blank to skip): " -msgstr "Εισάγετε όνομα χρήστη (αφήστε κενό για παράλειψη): " - -#, fuzzy -msgid "Select signature check option" -msgstr "Επιλέξτε διεπαφή προς προσθήκη" - -#, fuzzy -msgid "Select signature option" -msgstr "Επιλέξτε διεπαφή προς προσθήκη" - -msgid "Custom mirrors" -msgstr "" - -msgid "Defined" -msgstr "" - -#, fuzzy -msgid "Save user configuration (including disk layout)" -msgstr "Αποθήκευση διαμόρφωσης χρήστη" - -#, fuzzy -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "Εισάγετε έναν φάκελο για την αποθήκευση της/ων διαμόρφωση/ων: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" - -#, fuzzy -msgid "Saving {} configuration files to {}" -msgstr "Αποθήκευση διαμόρφωσης" - -#, fuzzy -msgid "Mirrors" -msgstr "Περιοχή mirror" - -#, fuzzy -msgid "Mirror regions" -msgstr "Περιοχή mirror" - -#, fuzzy -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - Μέγιστη τιμή : {} ( Επιτρέπει {} παράλληλες λήψεις, επιτρέπει {} λήψεις σε μία στιγμή )" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "Μη έγκυρη είσοδος! Προσπαθήστε ξανά με μία έγκυρη είσοδο [1 μέχρι {}, ή 0 για απενεργοποίηση]" - -msgid "Locales" -msgstr "" - -#, fuzzy -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "Χρήση NetworkManager (απαραίτητος για τη διαμόρφωση του δικτύου γραφικά σε GNOME και KDE)" - -msgid "Total: {} / {}" -msgstr "Σύνολο: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "" - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "Αν δεν έχει δωθεί μονάδα, η τιμή ερμηνεύεται ως sectors" - -#, fuzzy -msgid "Enter start (default: sector {}): " -msgstr "Εισάγετε τον start sector (ποσοστό ή αριθμό block, προκαθορισμένο {}): " - -#, fuzzy -msgid "Enter end (default: {}): " -msgstr "Εισάγετε τον start sector (ποσοστό ή αριθμό block, προκαθορισμένο {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "" - -msgid "Path" -msgstr "Μονοπάτι" - -msgid "Manufacturer" -msgstr "Κατασκευαστής" - -msgid "Product" -msgstr "Προϊόν" - -#, fuzzy, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "Χειροκίνητη διαμόρφωση" - -msgid "Type" -msgstr "Τύπος" - -#, fuzzy -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "Αυτή η επιλογή θέτει τον αριθμό των παράλληλων λήψεων που μπορούν να συμβούν κατά την εγκατάσταση" - -#, fuzzy -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"Εισάγετε τον αριθμό των παράλληλων λήψεων προς ενεργοποίηση.\n" -" (Εισάγετε μία τιμή από 1 μέχρι {})\n" -"Σημείωση:" - -#, fuzzy, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - Μέγιστη τιμή : {} ( Επιτρέπει {} παράλληλες λήψεις, επιτρέπει {} λήψεις σε μία στιγμή )" - -#, fuzzy -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - Απενεργοποίηση/Προκαθορισμένο : 0 ( Απενεργοποιεί τις παράλληλες λήψεις, επιτρέπει μόνο 1 λήψη σε μία στιγμή )" - -#, fuzzy -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "Μη έγκυρη είσοδος! Προσπαθήστε ξανά με μία έγκυρη είσοδο [1 μέχρι {}, ή 0 για απενεργοποίηση]" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Διαλέξτε μία επιλογή για να δώσετε πρόσβαση του Hyprland στο υλισμικό σας" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "" - -#, fuzzy -msgid "Would you like to use unified kernel images?" -msgstr "Θα θέλατε να χρησιμοποιήσετε swap με zram;" - -msgid "Unified kernel images" -msgstr "" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "Περιμένοντας να ολοκληρωθεί ο συγχρονισμός του χρόνου (timedatectl show)" - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Ο συγχρονισμός χρόνου δεν ολοκληρώνεται, όσο περιμένετε - ελέγξτε την τεκμηρίωση για λύσεις: https://archinstall.readthedocs.io/" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "Παραλείποντας την αναμονή για αυτόματο συγχρονισμό χρόνου (μπορεί να προκαλέσει προβλήματα αν ο χρόνος δεν είναι συγχρονισμένος κατά την εγκατάσταση)" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "" - -#, fuzzy -msgid "Selected profiles: " -msgstr "Διαγραφή προφίλ" - -#, fuzzy -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Ο συγχρονισμός χρόνου δεν ολοκληρώνεται, όσο περιμένετε - ελέγξτε την τεκμηρίωση για λύσεις: https://archinstall.readthedocs.io/" - -#, fuzzy -msgid "Mark/Unmark as nodatacow" -msgstr "Σημείωση/Ξεμαρκάρισμα ως bootable" - -#, fuzzy -msgid "Would you like to use compression or disable CoW?" -msgstr "Θα θέλατε να χρησιμοποιήσετε συμπίεση BTRFS;" - -msgid "Use compression" -msgstr "" - -msgid "Disable Copy-on-Write" -msgstr "" - -#, fuzzy -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "Παρέχει μία επιλογή από περιβάλλοντα επιφάνειας εργασίας και διαχειριστές tiling παραθύρων, π.χ. gnome, kde, sway" - -#, fuzzy, python-brace-format -msgid "Configuration type: {}" -msgstr "Καμία διαμόρφωση" - -#, fuzzy -msgid "LVM configuration type" -msgstr "Καμία διαμόρφωση" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "" - -#, fuzzy -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "Χρήση NetworkManager (απαραίτητος για τη διαμόρφωση του δικτύου γραφικά σε GNOME και KDE)" - -#, fuzzy -msgid "Select a LVM option" -msgstr "Επιλέξτε μία ζώνη ώρας" - -#, fuzzy -msgid "Partitioning" -msgstr "Διαμέριση" - -msgid "Logical Volume Management (LVM)" -msgstr "" - -msgid "Physical volumes" -msgstr "" - -msgid "Volumes" -msgstr "" - -#, fuzzy -msgid "LVM volumes" -msgstr "Ορισμός υποόγκων" - -#, fuzzy -msgid "LVM volumes to be encrypted" -msgstr "Επιλέξτε ποιες διαμερίσεις να κρυπτογραφηθούν." - -#, fuzzy -msgid "Select which LVM volumes to encrypt" -msgstr "Επιλέξτε ποιες διαμερίσεις να κρυπτογραφηθούν." - -#, fuzzy -msgid "Default layout" -msgstr "Διάταξη δίσκου" - -#, fuzzy -msgid "No Encryption" -msgstr "Κωδικός κρυπτογράφησης" - -msgid "LUKS" -msgstr "" - -msgid "LVM on LUKS" -msgstr "" - -msgid "LUKS on LVM" -msgstr "" - -#, fuzzy -msgid "Yes" -msgstr "ναι" - -msgid "No" -msgstr "" - -#, fuzzy -msgid "Archinstall help" -msgstr "Γλώσσα archinstall" - -#, fuzzy -msgid " (default)" -msgstr "(προκαθορισμένο)" - -msgid "Press Ctrl+h for help" -msgstr "" - -#, fuzzy -msgid "Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Διαλέξτε μία επιλογή για να δώσετε πρόσβαση του Hyprland στο υλισμικό σας" - -msgid "Seat access" -msgstr "" - -#, fuzzy -msgid "Mountpoint" -msgstr "Εκχώρηση σημείου mount για μία διαμέριση" - -msgid "HSM" -msgstr "" - -#, fuzzy -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "Εισάγετε κωδικό κρυπτογράφησης δίσκου (αφήστε κενό για καμία κρυπτογράφηση): " - -#, fuzzy -msgid "Disk encryption password" -msgstr "Κωδικός κρυπτογράφησης" - -#, fuzzy -msgid "Partition - New" -msgstr "Διαμέριση" - -#, fuzzy -msgid "Filesystem" -msgstr "Αλλαγή συστήματος αρχείων" - -msgid "Invalid size" -msgstr "" - -#, fuzzy -msgid "Start (default: sector {}): " -msgstr "Εισάγετε τον start sector (ποσοστό ή αριθμό block, προκαθορισμένο {}): " - -#, fuzzy -msgid "End (default: {}): " -msgstr "Εισάγετε τον start sector (ποσοστό ή αριθμό block, προκαθορισμένο {}): " - -#, fuzzy -msgid "Subvolume name" -msgstr "Όνομα υποόγκου " - -#, fuzzy -msgid "Disk configuration type" -msgstr "Καμία διαμόρφωση" - -msgid "Root mount directory" -msgstr "" - -#, fuzzy -msgid "Select language" -msgstr "Τοπική γλώσσα" - -#, fuzzy -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "Γράψτε περαιτέρω πακέτα προς εγκατάσταση (χωρισμένα με κενό, αφήστε άδειο για να παραληφθεί): " - -msgid "Invalid download number" -msgstr "" - -msgid "Number downloads" -msgstr "" - -#, fuzzy -msgid "The username you entered is invalid" -msgstr "Το όνομα χρήστη που εισάγατε δεν είναι έγκυρο. Προσπαθήστε ξανά" - -#, fuzzy -msgid "Username" -msgstr "Όνομα Χρήστη : " - -#, fuzzy, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "Θα έπρεπε ο \"{}\" να είναι υπερχρήστης (sudo);" - -#, fuzzy -msgid "Interfaces" -msgstr "Προσθήκη διεπαφής" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "" - -msgid "Modes" -msgstr "" - -msgid "IP address" -msgstr "" - -#, fuzzy -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "Εισάγετε τη διεύθυνση IP του router σας ή αφήστε κενό για καμία διεύθυνση: " - -msgid "Gateway address" -msgstr "" - -#, fuzzy -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "Εισάγετε τους διακομιστές DNS σας (χωρισμένοι με κενό, αφήστε κενό για κανέναν διακομιστή): " - -#, fuzzy -msgid "DNS servers" -msgstr "Κανένας διακομιστής ήχου" - -#, fuzzy -msgid "Configure interfaces" -msgstr "Διαμορφωμένες {} διεπαφές" - -#, fuzzy -msgid "Kernel" -msgstr "Kernels" - -msgid "UEFI is not detected and some options are disabled" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "" - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "" - -#, fuzzy -msgid "Main profile" -msgstr "Επεξεργασία προφίλ" - -#, fuzzy -msgid "Confirm password" -msgstr "Αλλαγή κωδικού" - -msgid "The confirmation password did not match, please try again" -msgstr "" - -#, fuzzy -msgid "Not a valid directory" -msgstr "Μη έγκυρος φάκελος: {}" - -#, fuzzy -msgid "Would you like to continue?" -msgstr "Θα θέλατε να χρησιμοποιήσετε συμπίεση BTRFS;" - -msgid "Directory" -msgstr "" - -#, fuzzy -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "Εισάγετε έναν φάκελο για την αποθήκευση της/ων διαμόρφωση/ων: " - -#, fuzzy, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "Αποθήκευση διαμόρφωσης" - -msgid "Enabled" -msgstr "" - -msgid "Disabled" -msgstr "" - -#, fuzzy -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Παρακαλώ επισυνάψτε αυτό το issue (και αρχείο) στο https://github.com/archlinux/archinstall/issues" - -#, fuzzy -msgid "Mirror name" -msgstr "Περιοχή mirror" - -msgid "Url" -msgstr "" - -#, fuzzy -msgid "Select signature check" -msgstr "Επιλέξτε διεπαφή προς προσθήκη" - -#, fuzzy -msgid "Select execution mode" -msgstr "Επιλέξτε μία ενέργεια για '{}'" - -msgid "Press ? for help" -msgstr "" - -#, fuzzy -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Διαλέξτε μία επιλογή για να δώσετε πρόσβαση του Hyprland στο υλισμικό σας" - -#, fuzzy -msgid "Additional repositories" -msgstr "Προαιρετικά αποθετήρια" - -msgid "NTP" -msgstr "" - -msgid "Swap on zram" -msgstr "" - -msgid "Name" -msgstr "" - -#, fuzzy -msgid "Signature check" -msgstr "Επιλέξτε διεπαφή προς προσθήκη" - -#, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Size: {} / {}" -msgstr "Σύνολο: {} / {}" - -#, fuzzy, python-brace-format -msgid "Size (default: {}): " -msgstr "Εισάγετε τον start sector (ποσοστό ή αριθμό block, προκαθορισμένο {}): " - -#, fuzzy -msgid "HSM device" -msgstr "Συσκευή" - -msgid "Some packages could not be found in the repository" -msgstr "" - -#, fuzzy -msgid "User" -msgstr "Όνομα Χρήστη : " - -msgid "The specified configuration will be applied" -msgstr "" - -msgid "Wipe" -msgstr "" - -#, fuzzy -msgid "Mark/Unmark as XBOOTLDR" -msgstr "Σημείωση/Ξεμαρκάρισμα ως bootable" - -#, fuzzy -msgid "Loading packages..." -msgstr "Περαιτέρω πακέτα" - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "" - -#, fuzzy -msgid "Add a custom repository" -msgstr "Προσθήκη custom mirror" - -#, fuzzy -msgid "Change custom repository" -msgstr "Αλλαγή custom mirror" - -#, fuzzy -msgid "Delete custom repository" -msgstr "Διαγραφή custom mirror" - -#, fuzzy -msgid "Repository name" -msgstr "Περιοχή mirror" - -#, fuzzy -msgid "Add a custom server" -msgstr "Προσθήκη custom mirror" - -#, fuzzy -msgid "Change custom server" -msgstr "Αλλαγή custom mirror" - -#, fuzzy -msgid "Delete custom server" -msgstr "Διαγραφή custom mirror" - -msgid "Server url" -msgstr "" - -#, fuzzy -msgid "Select regions" -msgstr "Επιλέξτε διεπαφή προς προσθήκη" - -#, fuzzy -msgid "Add custom servers" -msgstr "Προσθήκη custom mirror" - -#, fuzzy -msgid "Add custom repository" -msgstr "Προσθήκη custom mirror" - -#, fuzzy -msgid "Loading mirror regions..." -msgstr "Περιοχή mirror" - -#, fuzzy -msgid "Mirrors and repositories" -msgstr "Προαιρετικά αποθετήρια" - -#, fuzzy -msgid "Selected mirror regions" -msgstr "Περιοχή mirror" - -#, fuzzy -msgid "Custom servers" -msgstr "Κανένας διακομιστής ήχου" - -#, fuzzy -msgid "Custom repositories" -msgstr "Προαιρετικά αποθετήρια" - -msgid "Only ASCII characters are supported" -msgstr "" - -msgid "Show help" -msgstr "" - -msgid "Exit help" -msgstr "" - -msgid "Preview scroll up" -msgstr "" - -msgid "Preview scroll down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move right" -msgstr "" - -msgid "Move left" -msgstr "" - -msgid "Jump to entry" -msgstr "" - -msgid "Skip selection (if available)" -msgstr "" - -msgid "Reset selection (if available)" -msgstr "" - -#, fuzzy -msgid "Select on single select" -msgstr "Επιλέξτε διεπαφή προς προσθήκη" - -#, fuzzy -msgid "Select on multi select" -msgstr "Επιλέξτε μία ζώνη ώρας" - -msgid "Reset" -msgstr "" - -#, fuzzy -msgid "Skip selection menu" -msgstr "Επιλέξτε μία ενέργεια για '{}'" - -msgid "Start search mode" -msgstr "" - -msgid "Exit search mode" -msgstr "" - -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -#, fuzzy -msgid "Choose an option to give labwc access to your hardware" -msgstr "" -"\n" -"\n" -"Διαλέξτε μία επιλογή για να δώσετε πρόσβαση του Hyprland στο υλισμικό σας" - -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -#, fuzzy -msgid "Choose an option to give niri access to your hardware" -msgstr "" -"\n" -"\n" -"Διαλέξτε μία επιλογή για να δώσετε πρόσβαση του Hyprland στο υλισμικό σας" - -#, fuzzy -msgid "Mark/Unmark as ESP" -msgstr "Σημείωση/Ξεμαρκάρισμα ως bootable" - -msgid "Package group:" -msgstr "" - -#, fuzzy -msgid "Exit archinstall" -msgstr "Γλώσσα archinstall" - -#, fuzzy -msgid "Reboot system" -msgstr "Αλλαγή συστήματος αρχείων" - -#, fuzzy -msgid "chroot into installation for post-installation configurations" -msgstr "Θα θέλατε να κάνετε chroot εντός της καινούργιας εγκατάστασης για περαιτέρω διαμόρφωση;" - -msgid "Installation completed" -msgstr "" - -#, fuzzy -msgid "What would you like to do next?" -msgstr "Θα θέλατε να χρησιμοποιήσετε συμπίεση BTRFS;" - -#, fuzzy, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "Επιλέξτε ποιο mode να διαμορφωθεί για το \"{}\" ή παραλείψτε για να χρησιμοποιηθεί το default mode \"{}\"" - -#, fuzzy -msgid "Incorrect credentials file decryption password" -msgstr "Κωδικός κρυπτογράφησης" - -#, fuzzy -msgid "Incorrect password" -msgstr "Κωδικός root" - -#, fuzzy -msgid "Credentials file decryption password" -msgstr "Κωδικός κρυπτογράφησης" - -#, fuzzy -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "Αποθήκευση διαμόρφωσης" - -#, fuzzy -msgid "Credentials file encryption password" -msgstr "Κωδικός κρυπτογράφησης" - -#, fuzzy, python-brace-format -msgid "Repositories: {}" -msgstr "Περιοχή mirror" - -#, fuzzy -msgid "New version available" -msgstr "Καμία διαθέσιμη συσκευή HSM" - -#, fuzzy -msgid "Passwordless login" -msgstr "Κωδικός root" - -msgid "Second factor login" -msgstr "" - -msgid "Bluetooth" -msgstr "" - -#, fuzzy -msgid "Would you like to configure Bluetooth?" -msgstr "Θα θέλατε να χρησιμοποιήσετε συμπίεση BTRFS;" - -msgid "Authentication" -msgstr "" - -msgid "Applications" -msgstr "" - -msgid "U2F login method: " -msgstr "" - -msgid "Passwordless sudo: " -msgstr "" - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "" - -msgid "Syncing the system..." -msgstr "" - -msgid "Value cannot be empty" -msgstr "" - -msgid "Snapshot type" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Snapshot type: {}" -msgstr "Καμία διαμόρφωση" - -msgid "U2F login setup" -msgstr "" - -msgid "No U2F devices found" -msgstr "" - -msgid "U2F Login Method" -msgstr "" - -#, fuzzy -msgid "Enable passwordless sudo?" -msgstr "Εισάγετε κωδικό: " - -#, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "" - -msgid "Starting device modifications in " -msgstr "" - -#, fuzzy -msgid "No network connection found" -msgstr "Καμία διαμόρφωση δικτύου" - -#, fuzzy -msgid "Would you like to connect to a Wifi?" -msgstr "Θα θέλατε να χρησιμοποιήσετε συμπίεση BTRFS;" - -#, fuzzy -msgid "No wifi interface found" -msgstr "Διαμορφωμένες {} διεπαφές" - -#, fuzzy -msgid "Select wifi network to connect to" -msgstr "Επιλέξτε μία διεπαφή δικτύου για διαμόρφωση" - -msgid "Scanning wifi networks..." -msgstr "" - -#, fuzzy -msgid "No wifi networks found" -msgstr "Καμία διαμόρφωση δικτύου" - -msgid "Failed setting up wifi" -msgstr "" - -#, fuzzy -msgid "Enter wifi password" -msgstr "Εισάγετε κωδικό: " - -msgid "Ok" -msgstr "" diff --git a/examples/archinstall/archinstall/locales/en/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/en/LC_MESSAGES/base.mo deleted file mode 100644 index 7275098..0000000 Binary files a/examples/archinstall/archinstall/locales/en/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/en/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/en/LC_MESSAGES/base.po deleted file mode 100644 index 24924f2..0000000 --- a/examples/archinstall/archinstall/locales/en/LC_MESSAGES/base.po +++ /dev/null @@ -1,1745 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" -"Language: en\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.3\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "" - -msgid "Do you really want to abort?" -msgstr "" - -msgid "And one more time for verification: " -msgstr "" - -msgid "Would you like to use swap on zram?" -msgstr "" - -msgid "Desired hostname for the installation: " -msgstr "" - -msgid "Username for required superuser with sudo privileges: " -msgstr "" - -msgid "Any additional users to install (leave blank for no users): " -msgstr "" - -msgid "Should this user be a superuser (sudoer)?" -msgstr "" - -msgid "Select a timezone" -msgstr "" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "" - -msgid "Choose a bootloader" -msgstr "" - -msgid "Choose an audio server" -msgstr "" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "" - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "" - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "" - -msgid "Copy ISO network configuration to installation" -msgstr "" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "" - -msgid "Select one network interface to configure" -msgstr "" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "" - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "" - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "" - -msgid "Select which filesystem your main partition should use" -msgstr "" - -msgid "Current partition layout" -msgstr "" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" - -msgid "Enter a desired filesystem type for the partition" -msgstr "" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "" - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "" - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "" - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "" - -msgid "Archinstall language" -msgstr "" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "" - -msgid "Select what you wish to do with the selected block devices" -msgstr "" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "" - -msgid "Select keyboard layout" -msgstr "" - -msgid "Select one of the regions to download packages from" -msgstr "" - -msgid "Select one or more hard drives to use and configure" -msgstr "" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "" - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" - -msgid "All open-source (default)" -msgstr "" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "" - -msgid "Choose which locale language to use" -msgstr "" - -msgid "Choose which locale encoding to use" -msgstr "" - -msgid "Select one of the values shown below: " -msgstr "" - -msgid "Select one or more of the options below: " -msgstr "" - -msgid "Adding partition...." -msgstr "" - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "" - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "" - -msgid "Keyboard layout" -msgstr "" - -msgid "Mirror region" -msgstr "" - -msgid "Locale language" -msgstr "" - -msgid "Locale encoding" -msgstr "" - -msgid "Drive(s)" -msgstr "" - -msgid "Disk layout" -msgstr "" - -msgid "Encryption password" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Bootloader" -msgstr "" - -msgid "Root password" -msgstr "" - -msgid "Superuser account" -msgstr "" - -msgid "User account" -msgstr "" - -msgid "Profile" -msgstr "" - -msgid "Audio" -msgstr "" - -msgid "Kernels" -msgstr "" - -msgid "Additional packages" -msgstr "" - -msgid "Network configuration" -msgstr "" - -msgid "Automatic time sync (NTP)" -msgstr "" - -msgid "Install ({} config(s) missing)" -msgstr "" - -msgid "" -"You decided to skip harddrive selection\n" -"and will use whatever drive-setup is mounted at {} (experimental)\n" -"WARNING: Archinstall won't check the suitability of this setup\n" -"Do you wish to continue?" -msgstr "" - -msgid "Re-using partition instance: {}" -msgstr "" - -msgid "Create a new partition" -msgstr "" - -msgid "Delete a partition" -msgstr "" - -msgid "Clear/Delete all partitions" -msgstr "" - -msgid "Assign mount-point for a partition" -msgstr "" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "" - -msgid "Set desired filesystem for a partition" -msgstr "" - -msgid "Abort" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "Not configured, unavailable unless setup manually" -msgstr "" - -msgid "Timezone" -msgstr "" - -msgid "Set/Modify the below options" -msgstr "" - -msgid "Install" -msgstr "" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" - -msgid "Suggest partition layout" -msgstr "" - -msgid "Enter a password: " -msgstr "" - -msgid "Enter a encryption password for {}" -msgstr "" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "" - -msgid "Create a required super-user with sudo privileges: " -msgstr "" - -msgid "Enter root password (leave blank to disable root): " -msgstr "" - -msgid "Password for user \"{}\": " -msgstr "" - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "" - -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 "" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "" - -msgid "Use ESC to skip\n" -msgstr "" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" - -msgid "Cancel" -msgstr "" - -msgid "Confirm and exit" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Copy" -msgstr "" - -msgid "Edit" -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "Select an action for '{}'" -msgstr "" - -msgid "Copy to new key:" -msgstr "" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "" - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "" - -msgid "Choose which optional additional repositories to enable" -msgstr "" - -msgid "Add a user" -msgstr "" - -msgid "Change password" -msgstr "" - -msgid "Promote/Demote user" -msgstr "" - -msgid "Delete User" -msgstr "" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" - -msgid "User Name : " -msgstr "" - -msgid "Should {} be a superuser (sudoer)?" -msgstr "" - -msgid "Define users with sudo privilege: " -msgstr "" - -msgid "No network configuration" -msgstr "" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "" - -msgid "No configuration" -msgstr "" - -msgid "Save user configuration" -msgstr "" - -msgid "Save user credentials" -msgstr "" - -msgid "Save disk layout" -msgstr "" - -msgid "Save all" -msgstr "" - -msgid "Choose which configuration to save" -msgstr "" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "" - -msgid "Not a valid directory: {}" -msgstr "" - -msgid "The password you are using seems to be weak," -msgstr "" - -msgid "are you sure you want to use it?" -msgstr "" - -msgid "Optional repositories" -msgstr "" - -msgid "Save configuration" -msgstr "" - -msgid "Missing configurations:\n" -msgstr "" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "" - -msgid "Manage superuser accounts: " -msgstr "" - -msgid "Manage ordinary user accounts: " -msgstr "" - -msgid " Subvolume :{:16}" -msgstr "" - -msgid " mounted at {:16}" -msgstr "" - -msgid " with option {}" -msgstr "" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" - -msgid "Subvolume name " -msgstr "" - -msgid "Subvolume mountpoint" -msgstr "" - -msgid "Subvolume options" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Subvolume name :" -msgstr "" - -msgid "Select a mount point :" -msgstr "" - -msgid "Select the desired subvolume options " -msgstr "" - -msgid "Define users with sudo privilege, by username: " -msgstr "" - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "" - -msgid "Would you like to use BTRFS compression?" -msgstr "" - -msgid "Would you like to create a separate partition for /home?" -msgstr "" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "" - -msgid "Continue" -msgstr "" - -msgid "yes" -msgstr "" - -msgid "no" -msgstr "" - -msgid "set: {}" -msgstr "" - -msgid "Manual configuration setting must be a list" -msgstr "" - -msgid "No iface specified for manual configuration" -msgstr "" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "" - -msgid "Add interface" -msgstr "" - -msgid "Edit interface" -msgstr "" - -msgid "Delete interface" -msgstr "" - -msgid "Select interface to add" -msgstr "" - -msgid "Manual configuration" -msgstr "" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "" - -msgid "Select your desired desktop environment" -msgstr "" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "" - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "" - -msgid "Press Enter to continue." -msgstr "" - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "" - -msgid "Are you sure you want to reset this setting?" -msgstr "" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "" - -msgid "Save and exit" -msgstr "" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" - -msgid "No audio server" -msgstr "" - -msgid "(default)" -msgstr "" - -msgid "Use ESC to skip" -msgstr "" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" - -msgid "Copy to: " -msgstr "" - -msgid "Edit: " -msgstr "" - -msgid "Key: " -msgstr "" - -msgid "Edit {}: " -msgstr "" - -msgid "Add: " -msgstr "" - -msgid "Value: " -msgstr "" - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "" - -msgid "Select which partitions to mark for formatting:" -msgstr "" - -msgid "Use HSM to unlock encrypted drive" -msgstr "" - -msgid "Device" -msgstr "" - -msgid "Size" -msgstr "" - -msgid "Free space" -msgstr "" - -msgid "Bus-type" -msgstr "" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "" - -msgid "Enter username (leave blank to skip): " -msgstr "" - -msgid "The username you entered is invalid. Try again" -msgstr "" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "" - -msgid "Select which partitions to encrypt" -msgstr "" - -msgid "very weak" -msgstr "" - -msgid "weak" -msgstr "" - -msgid "moderate" -msgstr "" - -msgid "strong" -msgstr "" - -msgid "Add subvolume" -msgstr "" - -msgid "Edit subvolume" -msgstr "" - -msgid "Delete subvolume" -msgstr "" - -msgid "Configured {} interfaces" -msgstr "" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr "" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr "" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr "" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "" - -msgid "Parallel Downloads" -msgstr "" - -msgid "ESC to skip" -msgstr "" - -msgid "CTRL+C to reset" -msgstr "" - -msgid "TAB to select" -msgstr "" - -msgid "[Default value: 0] > " -msgstr "" - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "" - -msgid "The font should be stored as {}" -msgstr "" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "" - -msgid "Select an execution mode" -msgstr "" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "" - -msgid "Select one or more devices to use and configure" -msgstr "" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "" - -msgid "Existing Partitions" -msgstr "" - -msgid "Select a partitioning option" -msgstr "" - -msgid "Enter the root directory of the mounted devices: " -msgstr "" - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "" - -msgid "This is a list of pre-programmed profiles_bck, they might make it easier to install things like desktop environments" -msgstr "" - -msgid "Current profile selection" -msgstr "" - -msgid "Remove all newly added partitions" -msgstr "" - -msgid "Assign mountpoint" -msgstr "" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "" - -msgid "Mark/Unmark as bootable" -msgstr "" - -msgid "Change filesystem" -msgstr "" - -msgid "Mark/Unmark as compressed" -msgstr "" - -msgid "Set subvolumes" -msgstr "" - -msgid "Delete partition" -msgstr "" - -msgid "Partition" -msgstr "" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "" - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "" - -msgid "Mountpoint: " -msgstr "" - -msgid "Current free sectors on device {}:" -msgstr "" - -msgid "Total sectors: {}" -msgstr "" - -msgid "Enter the start sector (default: {}): " -msgstr "" - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "" - -msgid "This will remove all newly added partitions, continue?" -msgstr "" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "" - -#, python-brace-format -msgid "Total length: {}" -msgstr "" - -msgid "Encryption type" -msgstr "" - -msgid "Iteration time" -msgstr "" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "" - -msgid "Higher values increase security but slow down boot time" -msgstr "" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "" - -msgid "Iteration time cannot be empty" -msgstr "" - -msgid "Iteration time must be at least 100ms" -msgstr "" - -msgid "Iteration time must be at most 120000ms" -msgstr "" - -msgid "Please enter a valid number" -msgstr "" - -msgid "Partitions" -msgstr "" - -msgid "No HSM devices available" -msgstr "" - -msgid "Partitions to be encrypted" -msgstr "" - -msgid "Select disk encryption option" -msgstr "" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "" - -msgid "Use a best-effort default partition layout" -msgstr "" - -msgid "Manual Partitioning" -msgstr "" - -msgid "Pre-mounted configuration" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "Partition encryption" -msgstr "" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr "" - -msgid "← Back" -msgstr "" - -msgid "Disk encryption" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Password" -msgstr "" - -msgid "All settings will be reset, are you sure?" -msgstr "" - -msgid "Back" -msgstr "" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "" - -msgid "The proprietary Nvidia driver is not supported by Sway. It is likely that you will run into issues, are you okay with that?" -msgstr "" - -msgid "Installed packages" -msgstr "" - -msgid "Add profile" -msgstr "" - -msgid "Edit profile" -msgstr "" - -msgid "Delete profile" -msgstr "" - -msgid "Profile name: " -msgstr "" - -msgid "The profile name you entered is already in use. Try again" -msgstr "" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "" - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "" - -msgid "Should this profile be enabled for installation?" -msgstr "" - -msgid "Create your own" -msgstr "" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" - -msgid "Graphics driver" -msgstr "" - -msgid "Greeter" -msgstr "" - -msgid "Please chose which greeter to install" -msgstr "" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "" - -msgid "Disk configuration" -msgstr "" - -msgid "Profiles" -msgstr "" - -msgid "Finding possible directories to save configuration files ..." -msgstr "" - -msgid "Select directory (or directories) for saving configuration files" -msgstr "" - -msgid "Add a custom mirror" -msgstr "" - -msgid "Change custom mirror" -msgstr "" - -msgid "Delete custom mirror" -msgstr "" - -msgid "Enter name (leave blank to skip): " -msgstr "" - -msgid "Enter url (leave blank to skip): " -msgstr "" - -msgid "Select signature check option" -msgstr "" - -msgid "Select signature option" -msgstr "" - -msgid "Custom mirrors" -msgstr "" - -msgid "Defined" -msgstr "" - -msgid "Save user configuration (including disk layout)" -msgstr "" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" - -msgid "Saving {} configuration files to {}" -msgstr "" - -msgid "Mirrors" -msgstr "" - -msgid "Mirror regions" -msgstr "" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr "" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "" - -msgid "Locales" -msgstr "" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "" - -msgid "Total: {} / {}" -msgstr "" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "" - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "" - -msgid "Enter start (default: sector {}): " -msgstr "" - -msgid "Enter end (default: {}): " -msgstr "" - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "" - -msgid "Path" -msgstr "" - -msgid "Manufacturer" -msgstr "" - -msgid "Product" -msgstr "" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "" - -msgid "Type" -msgstr "" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr "" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr "" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "" - -msgid "Would you like to use unified kernel images?" -msgstr "" - -msgid "Unified kernel images" -msgstr "" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "" - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "" - -msgid "Selected profiles: " -msgstr "" - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "" - -msgid "Mark/Unmark as nodatacow" -msgstr "" - -msgid "Would you like to use compression or disable CoW?" -msgstr "" - -msgid "Use compression" -msgstr "" - -msgid "Disable Copy-on-Write" -msgstr "" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "" - -#, python-brace-format -msgid "Configuration type: {}" -msgstr "" - -msgid "LVM configuration type" -msgstr "" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "" - -msgid "Select a LVM option" -msgstr "" - -msgid "Partitioning" -msgstr "" - -msgid "Logical Volume Management (LVM)" -msgstr "" - -msgid "Physical volumes" -msgstr "" - -msgid "Volumes" -msgstr "" - -msgid "LVM volumes" -msgstr "" - -msgid "LVM volumes to be encrypted" -msgstr "" - -msgid "Select which LVM volumes to encrypt" -msgstr "" - -msgid "Default layout" -msgstr "" - -msgid "No Encryption" -msgstr "" - -msgid "LUKS" -msgstr "" - -msgid "LVM on LUKS" -msgstr "" - -msgid "LUKS on LVM" -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "No" -msgstr "" - -msgid "Archinstall help" -msgstr "" - -msgid " (default)" -msgstr "" - -msgid "Press Ctrl+h for help" -msgstr "" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "" - -msgid "Seat access" -msgstr "" - -msgid "Mountpoint" -msgstr "" - -msgid "HSM" -msgstr "" - -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "" - -msgid "Disk encryption password" -msgstr "" - -msgid "Partition - New" -msgstr "" - -msgid "Filesystem" -msgstr "" - -msgid "Invalid size" -msgstr "" - -msgid "Start (default: sector {}): " -msgstr "" - -msgid "End (default: {}): " -msgstr "" - -msgid "Subvolume name" -msgstr "" - -msgid "Disk configuration type" -msgstr "" - -msgid "Root mount directory" -msgstr "" - -msgid "Select language" -msgstr "" - -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "" - -msgid "Invalid download number" -msgstr "" - -msgid "Number downloads" -msgstr "" - -msgid "The username you entered is invalid" -msgstr "" - -msgid "Username" -msgstr "" - -#, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "" - -msgid "Interfaces" -msgstr "" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "" - -msgid "Modes" -msgstr "" - -msgid "IP address" -msgstr "" - -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "" - -msgid "Gateway address" -msgstr "" - -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "" - -msgid "DNS servers" -msgstr "" - -msgid "Configure interfaces" -msgstr "" - -msgid "Kernel" -msgstr "" - -msgid "UEFI is not detected and some options are disabled" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "" - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "" - -msgid "Main profile" -msgstr "" - -msgid "Confirm password" -msgstr "" - -msgid "The confirmation password did not match, please try again" -msgstr "" - -msgid "Not a valid directory" -msgstr "" - -msgid "Would you like to continue?" -msgstr "" - -msgid "Directory" -msgstr "" - -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "" - -#, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "" - -msgid "Mirror name" -msgstr "" - -msgid "Url" -msgstr "" - -msgid "Select signature check" -msgstr "" - -msgid "Select execution mode" -msgstr "" - -msgid "Press ? for help" -msgstr "" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "" - -msgid "Additional repositories" -msgstr "" - -msgid "NTP" -msgstr "" - -msgid "Swap on zram" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Signature check" -msgstr "" - -#, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "" - -#, python-brace-format -msgid "Size: {} / {}" -msgstr "" - -#, python-brace-format -msgid "Size (default: {}): " -msgstr "" - -msgid "HSM device" -msgstr "" - -msgid "Some packages could not be found in the repository" -msgstr "" - -msgid "User" -msgstr "" - -msgid "The specified configuration will be applied" -msgstr "" - -msgid "Wipe" -msgstr "" - -msgid "Mark/Unmark as XBOOTLDR" -msgstr "" - -msgid "Loading packages..." -msgstr "" - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "" - -msgid "Add a custom repository" -msgstr "" - -msgid "Change custom repository" -msgstr "" - -msgid "Delete custom repository" -msgstr "" - -msgid "Repository name" -msgstr "" - -msgid "Add a custom server" -msgstr "" - -msgid "Change custom server" -msgstr "" - -msgid "Delete custom server" -msgstr "" - -msgid "Server url" -msgstr "" - -msgid "Select regions" -msgstr "" - -msgid "Add custom servers" -msgstr "" - -msgid "Add custom repository" -msgstr "" - -msgid "Loading mirror regions..." -msgstr "" - -msgid "Mirrors and repositories" -msgstr "" - -msgid "Selected mirror regions" -msgstr "" - -msgid "Custom servers" -msgstr "" - -msgid "Custom repositories" -msgstr "" - -msgid "Only ASCII characters are supported" -msgstr "" - -msgid "Show help" -msgstr "" - -msgid "Exit help" -msgstr "" - -msgid "Preview scroll up" -msgstr "" - -msgid "Preview scroll down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move right" -msgstr "" - -msgid "Move left" -msgstr "" - -msgid "Jump to entry" -msgstr "" - -msgid "Skip selection (if available)" -msgstr "" - -msgid "Reset selection (if available)" -msgstr "" - -msgid "Select on single select" -msgstr "" - -msgid "Select on multi select" -msgstr "" - -msgid "Reset" -msgstr "" - -msgid "Skip selection menu" -msgstr "" - -msgid "Start search mode" -msgstr "" - -msgid "Exit search mode" -msgstr "" - -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "Choose an option to give labwc access to your hardware" -msgstr "" - -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "Choose an option to give niri access to your hardware" -msgstr "" - -msgid "Mark/Unmark as ESP" -msgstr "" - -msgid "Package group:" -msgstr "" - -msgid "Exit archinstall" -msgstr "" - -msgid "Reboot system" -msgstr "" - -msgid "chroot into installation for post-installation configurations" -msgstr "" - -msgid "Installation completed" -msgstr "" - -msgid "What would you like to do next?" -msgstr "" - -#, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "" - -msgid "Incorrect credentials file decryption password" -msgstr "" - -msgid "Incorrect password" -msgstr "" - -msgid "Credentials file decryption password" -msgstr "" - -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "" - -msgid "Credentials file encryption password" -msgstr "" - -#, python-brace-format -msgid "Repositories: {}" -msgstr "" - -msgid "New version available" -msgstr "" - -msgid "Passwordless login" -msgstr "" - -msgid "Second factor login" -msgstr "" - -msgid "Bluetooth" -msgstr "" - -msgid "Would you like to configure Bluetooth?" -msgstr "" - -msgid "Authentication" -msgstr "" - -msgid "Applications" -msgstr "" - -msgid "U2F login method: " -msgstr "" - -msgid "Passwordless sudo: " -msgstr "" - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "" - -msgid "Syncing the system..." -msgstr "" - -msgid "Value cannot be empty" -msgstr "" - -msgid "Snapshot type" -msgstr "" - -#, python-brace-format -msgid "Snapshot type: {}" -msgstr "" - -msgid "U2F login setup" -msgstr "" - -msgid "No U2F devices found" -msgstr "" - -msgid "U2F Login Method" -msgstr "" - -msgid "Enable passwordless sudo?" -msgstr "" - -#, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "" - -msgid "Starting device modifications in " -msgstr "" - -msgid "No network connection found" -msgstr "" - -msgid "Would you like to connect to a Wifi?" -msgstr "" - -msgid "No wifi interface found" -msgstr "" - -msgid "Select wifi network to connect to" -msgstr "" - -msgid "Scanning wifi networks..." -msgstr "" - -msgid "No wifi networks found" -msgstr "" - -msgid "Failed setting up wifi" -msgstr "" - -msgid "Enter wifi password" -msgstr "" - -msgid "Ok" -msgstr "" diff --git a/examples/archinstall/archinstall/locales/es/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/es/LC_MESSAGES/base.mo deleted file mode 100644 index 5772db2..0000000 Binary files a/examples/archinstall/archinstall/locales/es/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/es/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/es/LC_MESSAGES/base.po deleted file mode 100644 index 16b7a44..0000000 --- a/examples/archinstall/archinstall/locales/es/LC_MESSAGES/base.po +++ /dev/null @@ -1,1845 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" -"Language: es\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.5\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] Se ha creado un archivo de registro aquí: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Por favor envíe este problema (y archivo) a https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "¿Realmente desea abortar?" - -msgid "And one more time for verification: " -msgstr "Una vez más para verificar: " - -msgid "Would you like to use swap on zram?" -msgstr "¿Le gustaría usar swap en zram?" - -msgid "Desired hostname for the installation: " -msgstr "Nombre de host deseado para la instalación: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "Nombre de usuario para el superusuario con privilegios sudo: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "Algún usuario adicional a instalar (déjelo en blanco para no 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 una zona horaria" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "Te gustaría usar GRUB como gestor de arranque en lugar de systemd-boot?" - -msgid "Choose a bootloader" -msgstr "Elija un gestor de arranque" - -msgid "Choose an audio server" -msgstr "Elija un servidor de audio" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Solo paquetes como base, base-devel, linux, linux-firmware, efibootmgr y paquetes opcionales de perfil se instalan." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "Si desea un navegador web, como firefox o chromium, puede especificarlo en el siguiente mensaje." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "Escriba paquetes adicionales para instalar (separados por espacios, deja en blanco para omitir): " - -msgid "Copy ISO network configuration to installation" -msgstr "Copiar la configuración de red ISO a la 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 una interfaz de red para configurar" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "Seleccione qué modo configurar para \"{}\" u omita para usar el modo predeterminado \"{}\"" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "Escriba la IP y subred para {} (ejemplo: 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "Escriba la IP de su puerta de enlace (enrutador) o déjelo en blanco para no usar ninguna: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "Ingrese sus servidores DNS (separados por espacios, en blanco para ninguno): " - -msgid "Select which filesystem your main partition should use" -msgstr "Seleccione qué sistema de archivos debe usar su partición principal" - -msgid "Current partition layout" -msgstr "Distribución actual de las particiones" - -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 archivos deseado para la partición" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "Ingrese la 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 la ubicación final (en unidades divididas: s, GB, %, etc. ; ej.: {}): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} contiene particiones en cola, esto eliminará esas particiones, ¿estás seguro?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"Seleccione por índice qué particiones eliminar" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"Seleccione por índice la ubicación de la partición a montar" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * Los puntos de montaje de la partición son relativos al interior de la instalación, el arranque sería /boot como ejemplo." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "Seleccione dónde montar la partición (deje en blanco para eliminar el punto de montaje): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"Seleccione qué partición enmascarar para formatear" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"Seleccione qué partición marcar como encriptada" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"Seleccione qué partición marcar como de arranque" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"Seleccione en qué partición establecer un sistema de archivos" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "Ingrese un tipo de sistema de archivos deseado para la partición: " - -msgid "Archinstall language" -msgstr "Idioma de Archinstall" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Borrar todas las unidades seleccionadas y use un diseño de partición predeterminado de mejor esfuerzo" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Seleccione qué hacer con cada unidad individual (seguido del uso de la partición)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "Seleccione lo que desea hacer con los 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 una lista de perfiles preprogramados que podrían facilitar la instalación de cosas como entornos de escritorio" - -msgid "Select keyboard layout" -msgstr "Seleccione la distribución del teclado" - -msgid "Select one of the regions to download packages from" -msgstr "Seleccione una de las regiones para descargar paquetes desde" - -msgid "Select one or more hard drives to use and configure" -msgstr "Seleccione uno o más discos duros para usar y configurar" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "Para obtener la mejor compatibilidad con su hardware AMD, es posible que desee utilizar las opciones de código abierto o AMD / ATI." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "Para obtener la mejor compatibilidad con su hardware Intel, es posible que desee utilizar las opciones de código abierto o de Intel.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Para obtener la mejor compatibilidad con su hardware de Nvidia, es posible que desee utilizar el 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 o déjelo en blanco para instalar todos los controladores de código abierto" - -msgid "All open-source (default)" -msgstr "Todos de código abierto (predeterminado)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "Elija qué kernel usar o déjelo en blanco para usar el kernel \"{}\" predeterminado" - -msgid "Choose which locale language to use" -msgstr "Elija qué idioma local usar" - -msgid "Choose which locale encoding to use" -msgstr "Elija qué codificación local usar" - -msgid "Select one of the values shown below: " -msgstr "Seleccione uno de los valores que se muestran a continuación: " - -msgid "Select one or more of the options below: " -msgstr "Seleccione una o más de las 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 fs válido para continuar. Consulte `man parted` para conocer los tipos de fs válidos." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Error: Enlistar perfiles en la 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 del teclado" - -msgid "Mirror region" -msgstr "Región del servidor" - -msgid "Locale language" -msgstr "Idioma local" - -msgid "Locale encoding" -msgstr "Codificación local" - -msgid "Drive(s)" -msgstr "Disco(s)" - -msgid "Disk layout" -msgstr "Diseño del disco" - -msgid "Encryption password" -msgstr "Contraseña de cifrado" - -msgid "Swap" -msgstr "Swap" - -msgid "Bootloader" -msgstr "Gestor de arranque" - -msgid "Root password" -msgstr "Contraseña de root" - -msgid "Superuser account" -msgstr "Cuenta de superusuario" - -msgid "User account" -msgstr "Cuenta de usuario" - -msgid "Profile" -msgstr "Perfil" - -msgid "Audio" -msgstr "Audio" - -msgid "Kernels" -msgstr "Núcleos" - -msgid "Additional packages" -msgstr "Paquetes adicionales" - -msgid "Network configuration" -msgstr "Configuración de la red" - -msgid "Automatic time sync (NTP)" -msgstr "Sincronización automática de hora (NTP)" - -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 "" -"Has decidido saltar la selección de discos duros\n" -"y usar la configuración montada en {} (experimental)\n" -"ADVERTENCIA: Archinstall no verificará la idoneidad de esta configuración\n" -"¿Desea continuar?" - -msgid "Re-using partition instance: {}" -msgstr "Reutilizando instancia de partición: {}" - -msgid "Create a new partition" -msgstr "Crear una nueva partición" - -msgid "Delete a partition" -msgstr "Eliminar una partición" - -msgid "Clear/Delete all partitions" -msgstr "Limpiar/Eliminar todas las particiones" - -msgid "Assign mount-point for a partition" -msgstr "Asignar punto de montaje para una partición" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "Marcar/Desmarcar una partición para ser formateada (borra los datos)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "Marcar/Desmarcar una partición como encriptada" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "Marcar/Desmarcar una partición como arrancable (automática para /boot)" - -msgid "Set desired filesystem for a partition" -msgstr "Establecer el sistema de archivos deseado para una partición" - -msgid "Abort" -msgstr "Abortar" - -msgid "Hostname" -msgstr "Nombre 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 las 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 una contraseña: " - -msgid "Enter a encryption password for {}" -msgstr "Ingrese una contraseña de cifrado para {}" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "Ingrese la 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 privilegios sudo: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "Ingrese la contraseña de root (deje en blanco para deshabilitar root): " - -msgid "Password for user \"{}\": " -msgstr "Contraseña para el usuario “{}”: " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "Verificando que los paquetes adicionales existen (esto puede tardar unos segundos)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "Le gustaría utilizar la sincronización automática de hora (NTP) con los 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 "" -"La hora del hardware y otros pasos post-configuración pueden ser necesarios para que NTP funcione. \n" -"Para más información, por favor, consulte la wiki de Arch" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "Introduzca un nombre 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" -"Elija un objeto de la lista y seleccione una de las acciones disponibles para ejecutar" - -msgid "Cancel" -msgstr "Cancelar" - -msgid "Confirm and exit" -msgstr "Confirmar y 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 una 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: {}. Los 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 "El bloqueo de Pacman preexistente nunca se cerró. Limpie cualquier sesión de Pacman existente antes de usar archinstall." - -msgid "Choose which optional additional repositories to enable" -msgstr "Elija qué repositorios adicionales opcionales habilitar" - -msgid "Add a user" -msgstr "Añadir un usuario" - -msgid "Change password" -msgstr "Cambiar contraseña" - -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 "Nombre 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 los subvolúmenes deseados en una partición btrfs" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"Seleccione en qué partición configurar los subvolúmenes" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "Administrar subvolúmenes btrfs para la partición actual" - -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 "Elija qué configuración guardar" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "Ingrese un directorio para guardar la(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 "La 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 una 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 los valores deseados para un nuevo subvolumen\n" - -msgid "Subvolume name " -msgstr "Nombre del subvolumen " - -msgid "Subvolume mountpoint" -msgstr "Punto de montaje de subvolumen" - -msgid "Subvolume options" -msgstr "Opciones de subvolumen" - -msgid "Save" -msgstr "Guardar" - -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 " - -msgid "Define users with sudo privilege, by username: " -msgstr "Defina usuarios con privilegio sudo, por nombre 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 una estructura predeterminada?" - -msgid "Would you like to use BTRFS compression?" -msgstr "¿Le gustaría usar la compresión BTRFS?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "¿Le gustaría crear una partición separada para /home?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "Las unidades seleccionadas no tienen la capacidad mínima requerida para una sugerencia automática\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "Capacidad mínima para la partición /home: {}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Capacidad mínima para la partición Arch Linux: {}GB" - -msgid "Continue" -msgstr "Continuar" - -msgid "yes" -msgstr "sí" - -msgid "no" -msgstr "no" - -msgid "set: {}" -msgstr "establecer: {}" - -msgid "Manual configuration setting must be a list" -msgstr "La configuración manual debe ser una lista." - -msgid "No iface specified for manual configuration" -msgstr "No se especificó iface para la configuración manual" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "La configuración manual de la NIC sin DHCP automático requiere una dirección IP" - -msgid "Add interface" -msgstr "Añadir interfaz" - -msgid "Edit interface" -msgstr "Editar interfaz" - -msgid "Delete interface" -msgstr "Eliminar intefaz" - -msgid "Select interface to add" -msgstr "Seleccione la interfaz para agregar" - -msgid "Manual configuration" -msgstr "Configuración manual" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "Marcar/Desmarcar una partición como comprimida (solo btrfs)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "La contraseña que está utilizando parece ser débil, ¿está seguro de que desea usarla?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "Proporciona una selección de entornos de escritorio y administradores de ventanas en mosaico, p.e. gnome, kde, sway" - -msgid "Select your desired desktop environment" -msgstr "Seleccione su entorno de escritorio deseado" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "Una instalación muy básica que te permite personalizar Arch Linux como mejor te parezca." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "Proporciona una selección de varios paquetes de servidor para instalar y habilitar, p.e. httpd, nginx, mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "Elija qué servidores instalar, si no hay ninguno, se realizará una instalación mínima" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "Instala un sistema mínimo, así como controladores xorg y gráficos." - -msgid "Press Enter to continue." -msgstr "Presione Entrar para continuar." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "¿Le gustaría acceder a la instalación recién creada y realizar la configuración posterior a la instalación?" - -msgid "Are you sure you want to reset this setting?" -msgstr "¿Está seguro de que desea restablecer esta configuración?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "Seleccione uno o más discos duros para usar y configurar\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "¡Cualquier modificación a la configuración existente restablecerá el diseño del disco!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "Si restablece la selección del disco duro, esto también restablecerá el diseño actual del disco. ¿Está seguro?" - -msgid "Save and exit" -msgstr "Guardar y salir" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"contiene particiones en cola, esto las eliminará, ¿está seguro?" - -msgid "No audio server" -msgstr "Sin servidor de audio" - -msgid "(default)" -msgstr "(predeterminado)" - -msgid "Use ESC to skip" -msgstr "Use ESC para omitir" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"Use CTRL+C para restablecer la selección actual\n" -"\n" - -msgid "Copy to: " -msgstr "Copiar a: " - -msgid "Edit: " -msgstr "Editar: " - -msgid "Key: " -msgstr "Clave: " - -msgid "Edit {}: " -msgstr "Editar {}: " - -msgid "Add: " -msgstr "Añadir: " - -msgid "Value: " -msgstr "Valor: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "Puede omitir la selección de una unidad y la partición y usar cualquier configuración de unidad que esté montada en /mnt (experimental)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "Seleccione uno de los discos u omita y use /mnt como predeterminado" - -msgid "Select which partitions to mark for formatting:" -msgstr "Seleccione qué particiones marcar para formatear:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "Usar HSM para desbloquear la unidad cifrada" - -msgid "Device" -msgstr "Dispositivo" - -msgid "Size" -msgstr "Tamaño" - -msgid "Free space" -msgstr "Espacio libre" - -msgid "Bus-type" -msgstr "Tipo de bus" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "Debe especificar una contraseña de root o al menos 1 usuario con privilegios sudo" - -msgid "Enter username (leave blank to skip): " -msgstr "Ingrese el nombre de usuario (déjelo en blanco para omitir): " - -msgid "The username you entered is invalid. Try again" -msgstr "El nombre de usuario que ingresó no es válido. Intente nuevamente" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "¿Debe \"{}\" ser un superusuario (sudo)?" - -msgid "Select which partitions to encrypt" -msgstr "Seleccione qué particiones 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 la cantidad de descargas paralelas que pueden ocurrir durante la instalación" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"Ingrese el número de descargas paralelas que se habilitarán.\n" -" (Ingrese 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 la descarga paralela, permite solo 1 descarga simultánea )" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "¡Entrada no válida! Intente nuevamente con una entrada válida [1 a {max_downloads}, o 0 para deshabilitar]" - -msgid "Parallel Downloads" -msgstr "Descargas paralelas" - -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 una fuente que admita el idioma." - -msgid "The font should be stored as {}" -msgstr "La fuente debe almacenarse como {}" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "Archinstall requiere privilegios de root para ejecutarse. Consulte --help para más información." - -msgid "Select an execution mode" -msgstr "Seleccione un modo de ejecución" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "No se puede recuperar el perfil de la URL especificada: {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "Los 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 del dispositivo, esto también restablecerá el diseño actual del disco. ¿Está seguro?" - -msgid "Existing Partitions" -msgstr "Particiones existentes" - -msgid "Select a partitioning option" -msgstr "Seleccione una opción de partición" - -msgid "Enter the root directory of the mounted devices: " -msgstr "Ingrese el directorio raíz de los 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 una 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 particiones 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 "Los puntos de montaje de la partición son relativos al interior de la 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 de la partición (porcentaje o número de bloque, predeterminado: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "Esto eliminará todas las particiones recientemente agregadas, ¿continuar?" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "Gestión de particiones: {}" - -#, python-brace-format -msgid "Total length: {}" -msgstr "Largo total: {}" - -msgid "Encryption type" -msgstr "Tipo de cifrado" - -msgid "Iteration time" -msgstr "" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "" - -msgid "Higher values increase security but slow down boot time" -msgstr "" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "" - -msgid "Iteration time cannot be empty" -msgstr "" - -msgid "Iteration time must be at least 100ms" -msgstr "" - -msgid "Iteration time must be at most 120000ms" -msgstr "" - -msgid "Please enter a valid number" -msgstr "" - -msgid "Partitions" -msgstr "Particiones" - -msgid "No HSM devices available" -msgstr "No hay dispositivos HSM disponibles" - -msgid "Partitions to be encrypted" -msgstr "Particiones 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 "Configuration" - -msgid "Password" -msgstr "Contraseña" - -msgid "All settings will be reset, are you sure?" -msgstr "Todos los ajustes se restablecerán, ¿está seguro?" - -msgid "Back" -msgstr "Regresar" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "Por favor, elija qué gestor de inicio de sesión instalar para los 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 "El controlador propietario de Nvidia no es compatible con Sway. Es probable que encuentre problemas, ¿Desear 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 "Nombre 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 instalarán con este perfil (separados por espacios, déjelo en blanco para omitir): " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "Servicios que se habilitarán con este perfil (separados por espacios, deje en blanco para omitir): " - -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 los 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" -"Elija una opción para darle a Sway acceso a su hardware" - -msgid "Graphics driver" -msgstr "Controlador de gráficos" - -msgid "Greeter" -msgstr "Gestor de inicio de sesión" - -msgid "Please chose which greeter to install" -msgstr "Por favor, elija qué gestor de inicio de sesión instalar" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "Esta es una lista de default_profiles preprogramados" - -msgid "Disk configuration" -msgstr "Configuración del 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 los 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 del usuario (incluido el diseño del 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 "" -"¿Desea guardar {} archivo(s) de configuración en la siguiente ubicación?\n" -"\n" -"{}" - -msgid "Saving {} configuration files to {}" -msgstr "Guardar {} archivos de configuración en {}" - -msgid "Mirrors" -msgstr "Espejos" - -msgid "Mirror regions" -msgstr "Regiones de espejos" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - Valor máximo : {} ( Habilita {} descargas paralelas, permite {max_downloads+1} descargas simultáneas )" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "¡Entrada no válida! Intente nuevamente con una entrada válida [1 a {}, o 0 para deshabilitar]" - -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 los valores ingresados pueden tener una unidad como sufijo: B, KB, KiB, MB, MiB ..." - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "Si no se proporciona ninguna unidad, el 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 "No se pueden determinar los 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 "Type" -msgstr "Tipo" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "Esta opción habilita la cantidad de descargas paralelas que pueden ocurrir durante las descargas de paquetes" - -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" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - Valor máximo recomendado : {} ( Permite {} descargas paralelas simultáneas )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - Deshabilitar/Predeterminado : 0 ( Deshabilita la descarga paralela, permite solo 1 descarga simultánea )\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "¡Entrada no válida! Intente nuevamente con una entrada válida [o 0 para deshabilitar]" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Hyprland necesita acceso a su asiento (colección de dispositivos de hardware, es decir, teclado, mouse, etc.)" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Elija una opción para darle acceso a Hyprland a su hardware" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "Todos los valores introducidos pueden tener como sufijo una unidad: %, B, KB, KiB, MB, MiB..." - -msgid "Would you like to use unified kernel images?" -msgstr "¿Le gustaría utilizar imágenes del kernel unificadas?" - -msgid "Unified kernel images" -msgstr "Imágenes del kernel unificadas" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "Esperando a que se complete la sincronización de la hora (timedatectl show)." - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "La sincronización de hora no se completa mientras espera - consulte los documentos para encontrar soluciones: https://archinstall.readthedocs.io/" - -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 de la hora (esto puede causar problemas si la hora no está sincronizada durante la instalación)" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "Esperando a que se complete la sincronización del llavero de Arch Linux (archlinux-keyring-wkd-sync)." - -msgid "Selected profiles: " -msgstr "Perfiles seleccionados: " - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "La sincronización de hora no se completa mientras espera - consulte los documentos para encontrar soluciones: https://archinstall.readthedocs.io/" - -msgid "Mark/Unmark as nodatacow" -msgstr "Marcar/Desmarcar como nodatacow" - -msgid "Would you like to use compression or disable CoW?" -msgstr "¿Le gustaría utilizar compresión o desactivar CoW?" - -msgid "Use compression" -msgstr "Usar compresión" - -msgid "Disable Copy-on-Write" -msgstr "Desactivar copia en escritura" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "Proporciona una selección de entornos de escritorio y administradores de ventanas en mosaico, p.e. GNOME, KDE Plasma, Sway" - -#, python-brace-format -msgid "Configuration type: {}" -msgstr "Tipo de configuración: {}" - -msgid "LVM configuration type" -msgstr "Tipo de configuración LVM" - -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 particiones" - -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 una opción LVM" - -msgid "Partitioning" -msgstr "Particionamiento" - -msgid "Logical Volume Management (LVM)" -msgstr "Gestión de volúmenes lógicos (LVM)" - -msgid "Physical volumes" -msgstr "Volúmenes físicos" - -msgid "Volumes" -msgstr "Volúmenes" - -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 "Sin 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 "Ayuda de archinstall" - -msgid " (default)" -msgstr " (predeterminado)" - -msgid "Press Ctrl+h for help" -msgstr "Presione Ctrl+h para obtener ayuda" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "Elija una opción para darle a Sway acceso a su hardware" - -#, fuzzy -msgid "Seat access" -msgstr "Acceso al asiento" - -msgid "Mountpoint" -msgstr "Punto de montaje" - -msgid "HSM" -msgstr "HSM" - -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "Ingrese la contraseña de cifrado del disco (deje en blanco si no desea cifrar)" - -msgid "Disk encryption password" -msgstr "Contraseña de cifrado de disco" - -msgid "Partition - New" -msgstr "Partición - Nueva" - -msgid "Filesystem" -msgstr "Sistema de archivos" - -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 "Nombre del subvolumen" - -msgid "Disk configuration type" -msgstr "Tipo de configuración del disco" - -msgid "Root mount directory" -msgstr "Directorio de montaje raíz" - -msgid "Select language" -msgstr "Seleccionar idioma" - -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "Escriba paquetes adicionales para instalar (separados por espacios, déjelo 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 "El nombre de usuario ingresado no es válido" - -msgid "Username" -msgstr "Nombre 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 una 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 y algunas opciones están deshabilitadas" - -msgid "Info" -msgstr "Info" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "El controlador propietario de Nvidia no es 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 "La confirmación de la contraseña 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 "¿Desea guardar los 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 "Nombre del espejo" - -msgid "Url" -msgstr "Url" - -msgid "Select signature check" -msgstr "Seleccionar verificación de firma" - -msgid "Select execution mode" -msgstr "Seleccionar modo de ejecución" - -msgid "Press ? for help" -msgstr "Presione ? para obtener ayuda" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "Elija una opción para darle a Hyprland acceso a su hardware" - -msgid "Additional repositories" -msgstr "Repositorios adicionales" - -msgid "NTP" -msgstr "NTP" - -msgid "Swap on zram" -msgstr "Intercambio en zram" - -msgid "Name" -msgstr "Nombre" - -msgid "Signature check" -msgstr "Comprobación de firma" - -#, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "Segmento de espacio libre seleccionado en el dispositivo {}:" - -#, python-brace-format -msgid "Size: {} / {}" -msgstr "Tamaño: {} / {}" - -#, python-brace-format -msgid "Size (default: {}): " -msgstr "Tamaño (predeterminado: {}): " - -msgid "HSM device" -msgstr "Dispositivo HSM" - -msgid "Some packages could not be found in the repository" -msgstr "No se pudieron encontrar algunos paquetes en el repositorio" - -msgid "User" -msgstr "Usuario" - -msgid "The specified configuration will be applied" -msgstr "Se aplicará la configuración especificada" - -msgid "Wipe" -msgstr "Borrar" - -msgid "Mark/Unmark as XBOOTLDR" -msgstr "Marcar/Desmarcar como XBOOTLDR" - -msgid "Loading packages..." -msgstr "Cargando paquetes..." - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "Seleccione cualquier paquete de la lista a continuación que deba instalarse adicionalmente" - -msgid "Add a custom repository" -msgstr "Agregar un repositorio personalizado" - -msgid "Change custom repository" -msgstr "Cambiar el repositorio personalizado" - -msgid "Delete custom repository" -msgstr "Eliminar repositorio personalizado" - -msgid "Repository name" -msgstr "Nombre del repositorio" - -msgid "Add a custom server" -msgstr "Agregar un servidor personalizado" - -msgid "Change custom server" -msgstr "Cambiar servidor personalizado" - -msgid "Delete custom server" -msgstr "Eliminar servidor personalizado" - -msgid "Server url" -msgstr "URL del servidor" - -msgid "Select regions" -msgstr "Seleccione regiones" - -msgid "Add custom servers" -msgstr "Agregar servidores personalizados" - -msgid "Add custom repository" -msgstr "Agregar repositorio personalizado" - -msgid "Loading mirror regions..." -msgstr "Cargando regiones espejo..." - -msgid "Mirrors and repositories" -msgstr "Espejos y repositorios" - -msgid "Selected mirror regions" -msgstr "Regiones de espejo seleccionadas" - -msgid "Custom servers" -msgstr "Servidores personalizados" - -msgid "Custom repositories" -msgstr "Repositorios personalizados" - -msgid "Only ASCII characters are supported" -msgstr "Sólo se admiten caracteres ASCII" - -msgid "Show help" -msgstr "Mostrar ayuda" - -msgid "Exit help" -msgstr "Ayuda para salir" - -msgid "Preview scroll up" -msgstr "" - -msgid "Preview scroll down" -msgstr "" - -msgid "Move up" -msgstr "Subir" - -msgid "Move down" -msgstr "Bajar" - -msgid "Move right" -msgstr "Mover a la derecha" - -msgid "Move left" -msgstr "Mover a la izquierda" - -msgid "Jump to entry" -msgstr "Saltar a la entrada" - -msgid "Skip selection (if available)" -msgstr "Saltar selección (si está disponible)" - -msgid "Reset selection (if available)" -msgstr "Restablecer selección (si está disponible)" - -msgid "Select on single select" -msgstr "Seleccionar en selección única" - -msgid "Select on multi select" -msgstr "Seleccionar en selección múltiple" - -msgid "Reset" -msgstr "Restablecer" - -msgid "Skip selection menu" -msgstr "Saltar el menú de selección" - -msgid "Start search mode" -msgstr "Iniciar modo de búsqueda" - -msgid "Exit search mode" -msgstr "Salir del modo de búsqueda" - -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "labwc necesita acceso a su asiento (colección de dispositivos de hardware, es decir, teclado, ratón, etc.)" - -msgid "Choose an option to give labwc access to your hardware" -msgstr "Elija una opción para darle a labwc acceso a su hardware" - -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.)" - -msgid "Choose an option to give niri access to your hardware" -msgstr "Elija una opción para darle a niri acceso a su hardware" - -msgid "Mark/Unmark as ESP" -msgstr "Marcar/Desmarcar como ESP" - -msgid "Package group:" -msgstr "Grupo de paquetes:" - -msgid "Exit archinstall" -msgstr "Salir de archinstall" - -msgid "Reboot system" -msgstr "Reiniciar el sistema" - -msgid "chroot into installation for post-installation configurations" -msgstr "chroot en la instalación para configuraciones posteriores a la instalación" - -msgid "Installation completed" -msgstr "Instalación completada" - -msgid "What would you like to do next?" -msgstr "¿Qué le gustaría hacer a continuación?" - -#, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "Seleccione qué modo configurar para \"{}\"" - -#, fuzzy -msgid "Incorrect credentials file decryption password" -msgstr "Contraseña de cifrado de disco" - -#, fuzzy -msgid "Incorrect password" -msgstr "Contraseña de root" - -#, fuzzy -msgid "Credentials file decryption password" -msgstr "Contraseña de cifrado de disco" - -#, fuzzy -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "¿Desea guardar los archivos de configuración en {}?" - -#, fuzzy -msgid "Credentials file encryption password" -msgstr "Contraseña de cifrado de disco" - -#, fuzzy, python-brace-format -msgid "Repositories: {}" -msgstr "Nombre del repositorio" - -#, fuzzy -msgid "New version available" -msgstr "No hay dispositivos HSM disponibles" - -#, fuzzy -msgid "Passwordless login" -msgstr "Contraseña" - -msgid "Second factor login" -msgstr "" - -msgid "Bluetooth" -msgstr "" - -#, fuzzy -msgid "Would you like to configure Bluetooth?" -msgstr "¿Quiere continuar?" - -msgid "Authentication" -msgstr "" - -msgid "Applications" -msgstr "" - -msgid "U2F login method: " -msgstr "" - -msgid "Passwordless sudo: " -msgstr "" - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "" - -msgid "Syncing the system..." -msgstr "" - -msgid "Value cannot be empty" -msgstr "" - -msgid "Snapshot type" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Snapshot type: {}" -msgstr "Tipo de entorno: {}" - -msgid "U2F login setup" -msgstr "" - -msgid "No U2F devices found" -msgstr "" - -msgid "U2F Login Method" -msgstr "" - -#, fuzzy -msgid "Enable passwordless sudo?" -msgstr "Ingrese una contraseña: " - -#, fuzzy, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "Seleccione un dispositivo FIDO2 para usar con HSM" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "" - -msgid "Starting device modifications in " -msgstr "" - -#, fuzzy -msgid "No network connection found" -msgstr "Sin configuración de red" - -#, fuzzy -msgid "Would you like to connect to a Wifi?" -msgstr "¿Quiere continuar?" - -#, fuzzy -msgid "No wifi interface found" -msgstr "Configurar interfaces" - -#, fuzzy -msgid "Select wifi network to connect to" -msgstr "Seleccione una interfaz de red para configurar" - -msgid "Scanning wifi networks..." -msgstr "" - -#, fuzzy -msgid "No wifi networks found" -msgstr "Sin configuración de red" - -msgid "Failed setting up wifi" -msgstr "" - -#, fuzzy -msgid "Enter wifi password" -msgstr "Ingrese una contraseña: " - -msgid "Ok" -msgstr "" - -#~ msgid "Add :" -#~ msgstr "Añadir :" - -#~ msgid "Value :" -#~ msgstr "Valor :" - -#, python-brace-format -#~ msgid "Edit {origkey} :" -#~ msgstr "Editar {origkey} :" - -#~ msgid "Copy to :" -#~ msgstr "Copiar a :" - -#~ msgid "Edite :" -#~ msgstr "Editar :" - -#~ msgid "Key :" -#~ msgstr "Clave :" diff --git a/examples/archinstall/archinstall/locales/et/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/et/LC_MESSAGES/base.mo deleted file mode 100644 index 24e91a7..0000000 Binary files a/examples/archinstall/archinstall/locales/et/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/et/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/et/LC_MESSAGES/base.po deleted file mode 100644 index bd635f0..0000000 --- a/examples/archinstall/archinstall/locales/et/LC_MESSAGES/base.po +++ /dev/null @@ -1,1954 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" -"Language: et\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.3\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] Siia on loodud logifail: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Esitage see probleem (ja fail) aadressil https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "Kas sa tahad katkestada?" - -msgid "And one more time for verification: " -msgstr "Ja veel kord kinnitamiseks: " - -msgid "Would you like to use swap on zram?" -msgstr "Kas soovite zramis kasutada swapi?" - -msgid "Desired hostname for the installation: " -msgstr "Installimiseks soovitud hostinimi: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "Kasutajanimi nõutud superkasutajale sudo õigustega: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "Lisa kasutajate lisamine(jäta tühjaks kui ei soovi lisa kasutajaid): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "Kas see kasutaja peaks olema superkasutaja (sudo õigustega)" - -msgid "Select a timezone" -msgstr "Vali ajatsoon" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "Kas soovite systemd-booti asemel kasutada GRUBi buudilaadijana?" - -msgid "Choose a bootloader" -msgstr "Vali buudilaadija" - -msgid "Choose an audio server" -msgstr "Vali audio server" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Paigaldatakse ainult sellised paketid nagu base, base-devel, linux, linux-firmware, efibootmgr ja valikulised profiilipaketid." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "Kui soovite veebibrauserit, näiteks firefox või chromium, saate selle määrata järgmises viipas." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "Kirjutage paigaldatavad lisapaketid (tühikutega eraldatuna, jätke tühjaks, kui soovite vahele jätta): " - -msgid "Copy ISO network configuration to installation" -msgstr "ISO-võrgu konfiguratsiooni kopeerimine paigaldusse" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "Kasutage NetworkManagerit (vajalik interneti graafiliseks konfigureerimiseks GNOME-s ja KDE-s)." - -msgid "Select one network interface to configure" -msgstr "Valige üks võrguliides konfigureerimiseks" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "Valige, millist režiimi soovite konfigureerida \"{}\" või jätke vahele, kasutada vaikimisi režiimi \"{}\"" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "Sisestage IP ja alamvõrk {} (näide: 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "Sisestage oma võrguvärava (ruuteri) IP-aadress või jätke tühjaks, kui see puudub: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "Sisestage oma DNS-serverid (tühikuga eraldatud, jätke tühjaks, kui neid ei ole): " - -msgid "Select which filesystem your main partition should use" -msgstr "Valige, millist failisüsteemi teie peamine partitsioon peaks kasutama" - -msgid "Current partition layout" -msgstr "Praegune partitsiooni paigutus" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"Valige, mida teha\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "Sisestage partitsiooni jaoks soovitud failisüsteemi tüüp" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "Sisestage alguskoht (parted ühikutes: s, GB, % jne; vaikimisi: {}): " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "Sisestage lõpu asukoht (parted ühikutes: s, GB, % jne; näiteks: {}): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} sisaldab järjekorras olevaid partitsioone, see eemaldab need, kas olete kindel?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"\n" -"Valige indeksi järgi, milliseid partitsioone kustutada" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"\n" -"Valige indeksi järgi, millise partitsiooni kuhu paigaldada" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * Partitsioonide kinnituspunktid on suhtelised installeerimise sees, näiteks boot oleks /boot." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "Valige, kuhu partitsiooni paigaldada (jätke tühjaks, et eemaldada paigalduspunkt): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"Valige, millist partitsiooni soovite vormindamiseks maskeerida" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"\n" -"Valige, millist partitsiooni soovite krüpteerituks märkida" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"\n" -"Valige, millist partitsiooni soovite märkida käivitatavaks" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"\n" -"Valige, millisele partitsioonile failisüsteemi määrata" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "Sisestage partitsiooni jaoks soovitud failisüsteemi tüüp: " - -msgid "Archinstall language" -msgstr "Archinstalli keel" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Pühkige kõik valitud kettad ja kasutage parimat võimalikku vaikimisi partitsiooni paigutust" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Valige, mida teha iga üksiku kettaga (järgneb partitsiooni kasutamine)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "Valige, mida soovite valitud plokkseadmetega teha" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "See on nimekiri eelprogrammeeritud profiilidest, need võivad lihtsustada selliste asjade nagu töölauakeskkondade paigaldamist" - -msgid "Select keyboard layout" -msgstr "Valige klaviatuuri paigutus" - -msgid "Select one of the regions to download packages from" -msgstr "Valige üks piirkondadest, kust pakette alla laadida" - -msgid "Select one or more hard drives to use and configure" -msgstr "Valige üks või mitu kõvaketast kasutamiseks ja konfigureerimiseks" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "Parima ühilduvuse saavutamiseks oma AMD riistvaraga võiksite kasutada kas kõiki avatud lähtekoodiga või AMD/ATI valikuid." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "" -"Parima ühilduvuse saavutamiseks oma Inteli riistvaraga võiksite kasutada kas kõiki avatud lähtekoodiga või Inteli valikuid.\n" -"\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "" -"Parima ühilduvuse saavutamiseks oma Nvidia riistvaraga peaksite kasutama Nvidia enda toodetud draiverit.\n" -"\n" -"\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Valige graafikadraiver või jätke tühjaks, et paigaldada kõik avatud lähtekoodiga draiverid" - -msgid "All open-source (default)" -msgstr "Kõik avatud lähtekoodiga (vaikimisi)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "Valige, milliseid tuumasid soovite kasutada või jätke vaikimisi tühjaks \"{}\"" - -msgid "Choose which locale language to use" -msgstr "Valige, millist asukoha keelt kasutada" - -msgid "Choose which locale encoding to use" -msgstr "Valige, millist asukoha kodeeringut kasutada" - -msgid "Select one of the values shown below: " -msgstr "Valige üks allpool esitatud väärtustest: " - -msgid "Select one or more of the options below: " -msgstr "Valige üks või mitu järgmistest võimalustest: " - -msgid "Adding partition...." -msgstr "Partitsiooni lisamine...." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "Partitsiooni lisamine...." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Viga: URL-i \"{}\" profiilide loetlemine andis tulemuseks:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "Viga: {}\" tulemust JSON-ina dekodeerida:" - -msgid "Keyboard layout" -msgstr "Klaviatuuri paigutus" - -msgid "Mirror region" -msgstr "Peegelregioon" - -msgid "Locale language" -msgstr "Kohalik keel" - -msgid "Locale encoding" -msgstr "Kohaliku keele kodeering" - -msgid "Drive(s)" -msgstr "Draiv(id)" - -msgid "Disk layout" -msgstr "Ketta paigutus" - -msgid "Encryption password" -msgstr "Krüpteerimise parool" - -msgid "Swap" -msgstr "Swap" - -msgid "Bootloader" -msgstr "Buudilaadija" - -msgid "Root password" -msgstr "Juur parool" - -msgid "Superuser account" -msgstr "Superkasutaja konto" - -msgid "User account" -msgstr "Kasutaja konto" - -msgid "Profile" -msgstr "Profiil" - -msgid "Audio" -msgstr "Audio" - -msgid "Kernels" -msgstr "Kernelid" - -msgid "Additional packages" -msgstr "Täiendavad paketid" - -msgid "Network configuration" -msgstr "Võrgu konfiguratsioon" - -msgid "Automatic time sync (NTP)" -msgstr "Automaatne ajasünkroonimine" - -msgid "Install ({} config(s) missing)" -msgstr "Install ({} config(id) puudu(vad)" - -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 "" -"Sa otsustasid kõvaketta valiku vahele jätta\n" -"ja kasutad mis tahes draivi seadistust, mis on paigaldatud {} (eksperimentaalne)\n" -"HOIATUS: Archinstall ei kontrolli selle seadistuse sobivust\n" -"Kas soovite jätkata?" - -msgid "Re-using partition instance: {}" -msgstr "Partitsiooni instantsi taaskasutamine: {}" - -msgid "Create a new partition" -msgstr "Uue partitsiooni loomine" - -msgid "Delete a partition" -msgstr "Kustuta paritsioon" - -msgid "Clear/Delete all partitions" -msgstr "Puhasta/Kustuta kõik partitsioonid" - -msgid "Assign mount-point for a partition" -msgstr "Määrake partitsioonile kinnituspunkt" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "Märgistage/mittemärgistage vormindatav partitsioon (kustutab andmed)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "Märgistage/mittemärgistage partitsiooni krüpteerituks" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "Märgistage/mittemärgistage partitsiooni käivitatavaks (automaatne /boot jaoks)" - -msgid "Set desired filesystem for a partition" -msgstr "Soovitud failisüsteemi määramine partitsiooni jaoks" - -msgid "Abort" -msgstr "Katkesta" - -msgid "Hostname" -msgstr "Hostinimi" - -msgid "Not configured, unavailable unless setup manually" -msgstr "Ei ole konfigureeritud, ei ole saadaval, kui seda ei ole käsitsi seadistatud" - -msgid "Timezone" -msgstr "Ajatsoon" - -msgid "Set/Modify the below options" -msgstr "Määrake/muutke järgmisi valikuid" - -msgid "Install" -msgstr "Install" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"Kasutage ESC vahelejätmiseks\n" -"\n" -"\n" -"\n" -"\n" - -msgid "Suggest partition layout" -msgstr "Soovitage partitsiooni paigutust" - -msgid "Enter a password: " -msgstr "Sisestage parool: " - -msgid "Enter a encryption password for {}" -msgstr "Sisestage {}'le krüpteerimis parool" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "Sisestage ketta krüpteerimise parool (krüpteerimise puudumisel jätke see tühjaks): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "Looge nõutav sudo õigustega superkasutaja: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "Sisestage juur parool (jätke tühjaks, et keelata root): " - -msgid "Password for user \"{}\": " -msgstr "Kasutaja \"{}\" parool: " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "Täiendavate pakettide olemasolu kontrollimine (see võib võtta paar sekundit)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "Kas soovite kasutada automaatset ajasünkroniseerimist (NTP) vaikimisi ajaserveritega?\n" - -msgid "" -"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" -"For more information, please check the Arch wiki" -msgstr "" -"NTP toimimiseks võib olla vaja riistvara aega ja muid konfiguratsioonijärgseid samme.\n" -"Lisateavet leiate Archi wikist" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "Sisestage kasutajanimi, et luua lisakasutaja (jätke tühjaks, et vahele jätta): " - -msgid "Use ESC to skip\n" -msgstr "Kasutage ESC'i et vahele jätta\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -" Valige loetelust objekt ja valige selle täitmiseks üks olemasolevatest toimingutest" - -msgid "Cancel" -msgstr "Tühista" - -msgid "Confirm and exit" -msgstr "Kinnita ja lahku" - -msgid "Add" -msgstr "Lisa" - -msgid "Copy" -msgstr "Kopeeri" - -msgid "Edit" -msgstr "Muuda" - -msgid "Delete" -msgstr "Kustuta" - -msgid "Select an action for '{}'" -msgstr "Valige tegevus '{}' jaoks" - -msgid "Copy to new key:" -msgstr "Kopeeri uude võtmesse:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "Tundmatu nic-tüüp: {}. Võimalikud väärtused on {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"See on teie valitud konfiguratsioon:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Pacman on juba käivitatud ja ootab maksimaalselt 10 minutit, kuni see lõpeb." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "Eelnev pacmani lukk ei ole kunagi väljunud. Enne archinstall'i kasutamist puhastage olemasolevad pacmani sessioonid." - -msgid "Choose which optional additional repositories to enable" -msgstr "Valige, milliseid valikulisi lisa repositooriumeid soovite lubada" - -msgid "Add a user" -msgstr "Lisa kasutaja" - -msgid "Change password" -msgstr "Muuda parool" - -msgid "Promote/Demote user" -msgstr "Edenda/alanda kasutajat" - -msgid "Delete User" -msgstr "Kustuta kasutaja" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"Uue kasutaja määramine\n" - -msgid "User Name : " -msgstr "Kasutajanimi : " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "Kas {} peaks olema superkasutaja (sudoer)?" - -msgid "Define users with sudo privilege: " -msgstr "Määrake sudo privileegiga kasutajad: " - -msgid "No network configuration" -msgstr "Puudub võrgu konfiguratsioon" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "Määrake soovitud alamköited btrfs-i partitsioonile" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"Valige, millisele partitsioonile alamkogumid määrata" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "Hallake praeguse partitsiooni btrfs-i alamköiteid" - -msgid "No configuration" -msgstr "Puudub konfiguratsioon" - -msgid "Save user configuration" -msgstr "Salvesta kasutaja konfiguratsioon" - -msgid "Save user credentials" -msgstr "Salvesta kasutaja volitused" - -msgid "Save disk layout" -msgstr "Salvesta ketta paigutus" - -msgid "Save all" -msgstr "Salvesta kõik" - -msgid "Choose which configuration to save" -msgstr "Valige milline konfiguratsioon salvestada" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "Sisestage salvestatava(te) konfiguratsiooni(de) kataloog: " - -msgid "Not a valid directory: {}" -msgstr "Ei ole sobiv kataloog: {}" - -msgid "The password you are using seems to be weak," -msgstr "Teie kasutatav salasõna näib olevat nõrk," - -msgid "are you sure you want to use it?" -msgstr "oled sa kindel et soovid seda kasutada?" - -msgid "Optional repositories" -msgstr "Valikulised repositooriumid" - -msgid "Save configuration" -msgstr "Salvesta konfiguratsioon" - -msgid "Missing configurations:\n" -msgstr "Puuduvad konfiguratsioonid:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "Tuleb määrata kas juur-parool või vähemalt 1 superkasutaja" - -msgid "Manage superuser accounts: " -msgstr "Hallake superkasutaja kontosi " - -msgid "Manage ordinary user accounts: " -msgstr "Hallake tavalisi kasutajaid: " - -msgid " Subvolume :{:16}" -msgstr " Alamköide :{:16}" - -msgid " mounted at {:16}" -msgstr " paigaldatud {:16}" - -msgid " with option {}" -msgstr " koos valikuga {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -" Täida uue alamhulga soovitud väärtused \n" - -msgid "Subvolume name " -msgstr "Alamhulga nimi " - -msgid "Subvolume mountpoint" -msgstr "Alamhulga kinnituspunkt" - -msgid "Subvolume options" -msgstr "Alamhulga valikud" - -msgid "Save" -msgstr "Salvesta" - -msgid "Subvolume name :" -msgstr "Alamhulga nimi:" - -msgid "Select a mount point :" -msgstr "Valige kinnitus punkt :" - -msgid "Select the desired subvolume options " -msgstr "Valige soovitud alamhulga valikud " - -msgid "Define users with sudo privilege, by username: " -msgstr "Määrake sudo õigustega kasutajad kasutajanime järgi: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] Siin on loodud logifail: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "Kas soovite kasutada BTRFS-i alamkogusid vaikimisi struktuuriga?" - -msgid "Would you like to use BTRFS compression?" -msgstr "Kas soovite kasutada BTRFS-i tihendamist?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "Kas soovite luua eraldi partitsiooni /home jaoks?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "Valitud ketastel ei ole automaatseks soovituseks vajalikku minimaalset mahtu\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "Minimaalne mahutavus /home partitsioonile: {}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Arch Linuxi partitsiooni minimaalne mahutavus: {}GB" - -msgid "Continue" -msgstr "Jätka" - -msgid "yes" -msgstr "jah" - -msgid "no" -msgstr "ei" - -msgid "set: {}" -msgstr "seadista: {}" - -msgid "Manual configuration setting must be a list" -msgstr "Käsitsi konfiguratsiooniseade peab olema loend" - -msgid "No iface specified for manual configuration" -msgstr "Käsitsi seadistamiseks pole iface'i määratud" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "Manuaalne nici konfigureerimine ilma automaatse DHCPta nõuab IP-aadressi" - -msgid "Add interface" -msgstr "Lisa liides" - -msgid "Edit interface" -msgstr "Muuda liidest" - -msgid "Delete interface" -msgstr "Kustutage liides" - -msgid "Select interface to add" -msgstr "Valige millist liidest lisada" - -msgid "Manual configuration" -msgstr "Manuaalne konfiguratsioon" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "Märgistada/mittemärgistada partitsiooni kompressiooniks (ainult btrfs)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "Teie kasutatav salasõna tundub olevat nõrk, kas olete kindel, et soovite seda kasutada?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "Pakub valikut töölauakeskkondi ja plaadistatavaid aknahaldureid, nt gnome, kde, sway" - -msgid "Select your desired desktop environment" -msgstr "Valige soovitud töölauakeskkonda" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "Väga lihtne paigaldus, mis võimaldab teil Arch Linuxi kohandada vastavalt oma äranägemisele." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "Annab valiku erinevate serveripakettide paigaldamiseks ja aktiveerimiseks, nt httpd, nginx, mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "Valige, milliseid servereid paigaldada, kui ühtegi ei ole, siis tehakse minimaalne paigaldus" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "Installeerib minimaalse süsteemi ning xorgi ja graafikadraiverid." - -msgid "Press Enter to continue." -msgstr "Jätkamiseks vajutage Enter." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "Kas soovite chrootida äsja loodud installatsiooni ja teostada installeerimisjärgset konfigureerimist?" - -msgid "Are you sure you want to reset this setting?" -msgstr "Kas olete kindel, et soovite seda seadistust lähtestada?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "Valige üks või mitu kasutatavat kõvaketast ja konfigureerige\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "Olemasoleva seadistuse muutmine lähtestab ketta paigutuse!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "Kui lähtestate kõvaketta valiku, lähtestab see ka praeguse kettapaigutuse. Oled sa kindel?" - -msgid "Save and exit" -msgstr "Salvesta ja lahku" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"sisaldab järjekorras olevaid partitsioone, see eemaldab need, oled sa kindel?" - -msgid "No audio server" -msgstr "Puudub audio server" - -msgid "(default)" -msgstr "(vaikimisi)" - -msgid "Use ESC to skip" -msgstr "Kasutage ESC vahelejätmiseks" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"Kasuta CTRL+C praeguse valiku lähtestamiseks\n" -"\n" - -msgid "Copy to: " -msgstr "Kopeeri: " - -msgid "Edit: " -msgstr "Muuda: " - -msgid "Key: " -msgstr "Võti: " - -msgid "Edit {}: " -msgstr "Muuda {}: " - -msgid "Add: " -msgstr "Lisa: " - -msgid "Value: " -msgstr "Väärtus: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "Saad vahele jätta ketta valimise ja partitsioneerimise ning kasutada mis tahes draivi-komplekti, mis on paigaldatud /mnt (eksperimentaalne)." - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "Valige üks ketastest või jätke vahele ja kasutage vaikimisi /mnt" - -msgid "Select which partitions to mark for formatting:" -msgstr "Valige, milliseid partitsioone soovite vormindamiseks märkida:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "Kasutage HSM-i krüpteeritud draivi avamiseks" - -msgid "Device" -msgstr "Seade" - -msgid "Size" -msgstr "Suurus" - -msgid "Free space" -msgstr "Vaba mälu" - -msgid "Bus-type" -msgstr "Bussi tüüp" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "Tuleb määrata kas root-sõna või vähemalt 1 kasutaja, kellel on sudo õigused" - -msgid "Enter username (leave blank to skip): " -msgstr "Sisestage kasutajanimi (jätke tühjaks, et vahele jätta): " - -msgid "The username you entered is invalid. Try again" -msgstr "Teie sisestatud kasutajanimi ei sobi. Proovige uuesti" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "Kas \"{}\" peaks olema superkasutaja (sudo)?" - -msgid "Select which partitions to encrypt" -msgstr "Valige, milliseid partitsioone krüpteerida" - -msgid "very weak" -msgstr "väga nõrk" - -msgid "weak" -msgstr "nõrk" - -msgid "moderate" -msgstr "keskmine" - -msgid "strong" -msgstr "tugev" - -msgid "Add subvolume" -msgstr "Lisage alamhulk" - -msgid "Edit subvolume" -msgstr "Osahulga redigeerimine" - -msgid "Delete subvolume" -msgstr "Kustuta osahulk" - -msgid "Configured {} interfaces" -msgstr "Konfigureeritud {} liidesed" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "See valik võimaldab installimise ajal valida paralleelsete allalaadimiste arvu" - -#, fuzzy -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"Sisestage lubatavate paralleelsete allalaadimiste arv.\n" -" (Sisestage väärtus vahemikus 1 kuni {max_downloads})\n" -"note:" - -#, fuzzy -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - Minimaalne väärtus : 1 ( Võimaldab 1 paralleelset allalaadimist, võimaldab 2 allalaadimist korraga )" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - Minimaalne väärtus : 1 ( Võimaldab 1 paralleelset allalaadimist, võimaldab 2 allalaadimist korraga )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - Keela/Vaikimisi : 0 ( keelab paralleelse allalaadimise, võimaldab ainult 1 allalaadimist korraga )" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "Vale sisestus! Proovige uuesti kehtiva sisendiga [1 {max_downloads} või 0 keelamiseks]." - -msgid "Parallel Downloads" -msgstr "Paralleelsed allalaadimised" - -msgid "ESC to skip" -msgstr "ESC vahelejätmiseks" - -msgid "CTRL+C to reset" -msgstr "CTRL+C lähtestamiseks" - -msgid "TAB to select" -msgstr "TAB valimiseks" - -msgid "[Default value: 0] > " -msgstr "[Vaikimisi väärtus: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "Selleks, et seda tõlget kasutada, paigaldage käsitsi fondi, mis toetab seda keelt." - -msgid "The font should be stored as {}" -msgstr "Font tuleks salvestada kujul {}" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "Archinstall vajab käivitamiseks juurkasutaja õigusi. Vaata --help." - -msgid "Select an execution mode" -msgstr "Valige täitmisrežiim" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "Ei õnnestu profiili hankida määratud url'ist: {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "Profiilidel peab olema unikaalne nimi, kuid leiti topeltnimega profiilide määratlusi: {}" - -msgid "Select one or more devices to use and configure" -msgstr "Valige üks või mitu seadet mida kasutada ja konfigureerida" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "Kui lähtestate seadme valiku, siis lähtestate sellega ka praeguse draivi paigutuse. Kas olete kindel?" - -msgid "Existing Partitions" -msgstr "Olemasolevad Jaotused" - -msgid "Select a partitioning option" -msgstr "Valige jaotuste valik" - -msgid "Enter the root directory of the mounted devices: " -msgstr "Sisestage paigaldatud seadmete juurkataloog: " - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "Minimaalne mahutavus /home partitsioonile: {}GiB\n" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "Arch Linuxi partitsiooni minimaalne mahutavus: {}GiB" - -msgid "This is a list of pre-programmed profiles_bck, they might make it easier to install things like desktop environments" -msgstr "See on nimekiri eelprogrammeeritud profiilidest_bck, need võivad lihtsustada selliste asjade nagu töölauakeskkondade paigaldamist" - -msgid "Current profile selection" -msgstr "Praegune profiilivalik" - -msgid "Remove all newly added partitions" -msgstr "Eemaldage kõik äsja lisatud partitsioonid" - -msgid "Assign mountpoint" -msgstr "Määra paigaldamis punkt" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "Märgistada/mittemärgistada vormindamiseks (kustutab andmed)" - -msgid "Mark/Unmark as bootable" -msgstr "Märgistada/mittemärgistada käivitatavak" - -msgid "Change filesystem" -msgstr "Failisüsteemi muutmine" - -msgid "Mark/Unmark as compressed" -msgstr "Märgistada/mittemärgistada kui tihendatud" - -msgid "Set subvolumes" -msgstr "Alamköite määramine" - -msgid "Delete partition" -msgstr "Kustuta partitsioon" - -msgid "Partition" -msgstr "Partitsioon" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "See partitsioon on praegu krüpteeritud, selle vormindamiseks tuleb määrata failisüsteem" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "Partitsiooni kinnituspunktid on suhtelised installeerimise sees, näiteks boot oleks /boot." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "Kui paigalduspunkt /boot on määratud, siis märgitakse partitsioon ka käivitatavaks." - -msgid "Mountpoint: " -msgstr "Paigalduspunkt: " - -msgid "Current free sectors on device {}:" -msgstr "Praegused vabad sektorid seadmes {}:" - -msgid "Total sectors: {}" -msgstr "Sektorid kokku: {}" - -msgid "Enter the start sector (default: {}): " -msgstr "Sisestage algussektor (vaikimisi: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "Sisestage partitsiooni lõppsektor (protsent või plokkide number, vaikimisi: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "See eemaldab kõik äsja lisatud partitsioonid, jätka?" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "Partitsiooni haldamine:{}" - -#, python-brace-format -msgid "Total length: {}" -msgstr "Kogupikkus: {}" - -msgid "Encryption type" -msgstr "Krüpteerimise tüüp" - -msgid "Iteration time" -msgstr "" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "" - -msgid "Higher values increase security but slow down boot time" -msgstr "" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "" - -msgid "Iteration time cannot be empty" -msgstr "" - -msgid "Iteration time must be at least 100ms" -msgstr "" - -msgid "Iteration time must be at most 120000ms" -msgstr "" - -msgid "Please enter a valid number" -msgstr "" - -msgid "Partitions" -msgstr "Partitsioonid" - -msgid "No HSM devices available" -msgstr "Puuduvad HSM seadmed" - -msgid "Partitions to be encrypted" -msgstr "Krüpteeritavad partitsioonid" - -msgid "Select disk encryption option" -msgstr "Valige ketta krüpteerimise valik" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "Valige HSM-i jaoks kasutatav FIDO2-seade" - -msgid "Use a best-effort default partition layout" -msgstr "Kasutage parimat võimalikku vaikimisi partitsiooni paigutust" - -msgid "Manual Partitioning" -msgstr "Käsitsi partitsioneerimine" - -msgid "Pre-mounted configuration" -msgstr "Eelnevalt paigaldatud konfiguratsioon" - -msgid "Unknown" -msgstr "Tundmatu" - -msgid "Partition encryption" -msgstr "Partitsiooni krüpteerimine" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr " ! Vormindamine {} " - -msgid "← Back" -msgstr "Tagasi" - -msgid "Disk encryption" -msgstr "Ketta krüpteerimine" - -msgid "Configuration" -msgstr "Konfiguratsioon" - -msgid "Password" -msgstr "Parool" - -msgid "All settings will be reset, are you sure?" -msgstr "Kõik seaded lähtestatakse, kas sa oled kindel?" - -msgid "Back" -msgstr "Tagasi" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "Palun valige millist tervitajat installida valitud profiilidele" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "Keskkonna tüüp: {}" - -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 "Sway ei toeta Nvidia enda draiverit. Tõenäoliselt tekib teil probleeme, kas teile sobib see?" - -msgid "Installed packages" -msgstr "Installeeritud paketid" - -msgid "Add profile" -msgstr "Lisa profiil" - -msgid "Edit profile" -msgstr "Muuda profiili" - -msgid "Delete profile" -msgstr "Kustuta profiil" - -msgid "Profile name: " -msgstr "Profiili nimi: " - -msgid "The profile name you entered is already in use. Try again" -msgstr "Sisestatud profiili nimi on juba kasutuses. Proovi uuesti" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "Selle profiiliga paigaldatavad paketid (tühikuga eraldatud, jäta tühjaks, et jätta vahele): " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "Selle profiiliga lubatavad teenused (tühikuga eraldatud, jäta tühjaks, kui soovid vahele jätta): " - -msgid "Should this profile be enabled for installation?" -msgstr "Kas see profiil peaks olema paigaldamiseks lubatud?" - -msgid "Create your own" -msgstr "Loo oma" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"Vali graafikadraiver või jäta tühjaks, et paigaldada kõik avatud lähtekoodiga draiverid" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway vajab juurdepääsu teie seatile (riistvaraseadmete kogum, st klaviatuur, hiir jne." - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Valige valik, et anda Sway'le juurdepääs teie riistvarale" - -msgid "Graphics driver" -msgstr "Graafika draiver" - -msgid "Greeter" -msgstr "Tervitaja" - -msgid "Please chose which greeter to install" -msgstr "Palun valige millist tervitajat installida" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "See on eelnevalt programmeeritud vaikimisi_profiilide nimekiri" - -msgid "Disk configuration" -msgstr "Ketta konfiguratsioon" - -msgid "Profiles" -msgstr "Profiilid" - -msgid "Finding possible directories to save configuration files ..." -msgstr "Võimalike kataloogide leidmine konfiguratsioonifailide salvestamiseks ..." - -msgid "Select directory (or directories) for saving configuration files" -msgstr "Konfigureerimisfailide salvestamise kataloogi (või kataloogide) valimine" - -msgid "Add a custom mirror" -msgstr "Lisa kohandatud peegel" - -msgid "Change custom mirror" -msgstr "Muuda kohandatud peeglit" - -msgid "Delete custom mirror" -msgstr "Kustuta kohandadtud peeglit" - -msgid "Enter name (leave blank to skip): " -msgstr "Sisesta nimi (jätke tühjaks, et vahele jätta): " - -msgid "Enter url (leave blank to skip): " -msgstr "Sisesta url (jätke tühjaks, et vahele jätta): " - -msgid "Select signature check option" -msgstr "Valige allkirja kontrollimise võimalus" - -msgid "Select signature option" -msgstr "Valige allkirja valik" - -msgid "Custom mirrors" -msgstr "Kohandatud peegel" - -msgid "Defined" -msgstr "Defineeritud" - -msgid "Save user configuration (including disk layout)" -msgstr "Salvesta kasutaja konfiguratsioon (kaasa arvatud plaadi paigutus)" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"Sisestage salvestatava(te) konfiguratsiooni(de) kataloog (vahekaartide täitmine lubatud)\n" -"Salvesta kataloog: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"Kas soovite salvestada {} konfiguratsioonifaili(d) järgmisesse asukohta?\n" -"\n" -"{}" - -msgid "Saving {} configuration files to {}" -msgstr "{} konfiguratsioonifailide salvestamine {}" - -msgid "Mirrors" -msgstr "Peeglid" - -msgid "Mirror regions" -msgstr "Peegel regioonid" - -#, fuzzy -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - Maksimaalne väärtus : {max_downloads} ( Võimaldab {max_downloads} paralleelset allalaadimist, lubab {max_downloads+1} allalaadimist korraga )" - -#, fuzzy -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "Vale sisestus! Proovige uuesti kehtiva sisendiga [1 {max_downloads} või 0 keelamiseks]." - -msgid "Locales" -msgstr "" - -#, fuzzy -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "Kasutage NetworkManagerit (vajalik interneti graafiliseks konfigureerimiseks GNOME-s ja KDE-s)." - -#, fuzzy -msgid "Total: {} / {}" -msgstr "Kogupikkus: {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "" - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "" - -#, fuzzy -msgid "Enter start (default: sector {}): " -msgstr "Sisestage algussektor (vaikimisi: {}): " - -#, fuzzy -msgid "Enter end (default: {}): " -msgstr "Sisestage algussektor (vaikimisi: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "" - -msgid "Path" -msgstr "" - -msgid "Manufacturer" -msgstr "" - -msgid "Product" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "Manuaalne konfiguratsioon" - -msgid "Type" -msgstr "" - -#, fuzzy -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "See valik võimaldab installimise ajal valida paralleelsete allalaadimiste arvu" - -#, fuzzy -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"Sisestage lubatavate paralleelsete allalaadimiste arv.\n" -" (Sisestage väärtus vahemikus 1 kuni {max_downloads})\n" -"note:" - -#, fuzzy, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - Minimaalne väärtus : 1 ( Võimaldab 1 paralleelset allalaadimist, võimaldab 2 allalaadimist korraga )" - -#, fuzzy -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - Keela/Vaikimisi : 0 ( keelab paralleelse allalaadimise, võimaldab ainult 1 allalaadimist korraga )" - -#, fuzzy -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "Vale sisestus! Proovige uuesti kehtiva sisendiga [1 {max_downloads} või 0 keelamiseks]." - -#, fuzzy -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway vajab juurdepääsu teie seatile (riistvaraseadmete kogum, st klaviatuur, hiir jne." - -#, fuzzy -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Valige valik, et anda Sway'le juurdepääs teie riistvarale" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "" - -#, fuzzy -msgid "Would you like to use unified kernel images?" -msgstr "Kas soovite zramis kasutada swapi?" - -msgid "Unified kernel images" -msgstr "" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "" - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "" - -#, fuzzy -msgid "Selected profiles: " -msgstr "Kustuta profiil" - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "" - -#, fuzzy -msgid "Mark/Unmark as nodatacow" -msgstr "Märgistada/mittemärgistada käivitatavak" - -#, fuzzy -msgid "Would you like to use compression or disable CoW?" -msgstr "Kas soovite kasutada BTRFS-i tihendamist?" - -msgid "Use compression" -msgstr "" - -msgid "Disable Copy-on-Write" -msgstr "" - -#, fuzzy -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "Pakub valikut töölauakeskkondi ja plaadistatavaid aknahaldureid, nt gnome, kde, sway" - -#, fuzzy, python-brace-format -msgid "Configuration type: {}" -msgstr "Konfiguratsioon" - -#, fuzzy -msgid "LVM configuration type" -msgstr "Puudub konfiguratsioon" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "" - -#, fuzzy -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "Kasutage NetworkManagerit (vajalik interneti graafiliseks konfigureerimiseks GNOME-s ja KDE-s)." - -#, fuzzy -msgid "Select a LVM option" -msgstr "Vali ajatsoon" - -#, fuzzy -msgid "Partitioning" -msgstr "Partitsioon" - -msgid "Logical Volume Management (LVM)" -msgstr "" - -msgid "Physical volumes" -msgstr "" - -msgid "Volumes" -msgstr "" - -#, fuzzy -msgid "LVM volumes" -msgstr "Alamköite määramine" - -#, fuzzy -msgid "LVM volumes to be encrypted" -msgstr "Krüpteeritavad partitsioonid" - -#, fuzzy -msgid "Select which LVM volumes to encrypt" -msgstr "Valige, milliseid partitsioone krüpteerida" - -#, fuzzy -msgid "Default layout" -msgstr "Ketta paigutus" - -#, fuzzy -msgid "No Encryption" -msgstr "Krüpteerimise tüüp" - -msgid "LUKS" -msgstr "" - -msgid "LVM on LUKS" -msgstr "" - -msgid "LUKS on LVM" -msgstr "" - -#, fuzzy -msgid "Yes" -msgstr "jah" - -msgid "No" -msgstr "" - -#, fuzzy -msgid "Archinstall help" -msgstr "Archinstalli keel" - -#, fuzzy -msgid " (default)" -msgstr "(vaikimisi)" - -msgid "Press Ctrl+h for help" -msgstr "" - -#, fuzzy -msgid "Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Valige valik, et anda Sway'le juurdepääs teie riistvarale" - -msgid "Seat access" -msgstr "" - -#, fuzzy -msgid "Mountpoint" -msgstr "Paigalduspunkt: " - -msgid "HSM" -msgstr "" - -#, fuzzy -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "Sisestage ketta krüpteerimise parool (krüpteerimise puudumisel jätke see tühjaks): " - -#, fuzzy -msgid "Disk encryption password" -msgstr "Krüpteerimise parool" - -#, fuzzy -msgid "Partition - New" -msgstr "Partitsioon" - -#, fuzzy -msgid "Filesystem" -msgstr "Failisüsteemi muutmine" - -msgid "Invalid size" -msgstr "" - -#, fuzzy -msgid "Start (default: sector {}): " -msgstr "Sisestage algussektor (vaikimisi: {}): " - -#, fuzzy -msgid "End (default: {}): " -msgstr "Sisestage algussektor (vaikimisi: {}): " - -#, fuzzy -msgid "Subvolume name" -msgstr "Alamhulga nimi " - -#, fuzzy -msgid "Disk configuration type" -msgstr "Ketta konfiguratsioon" - -msgid "Root mount directory" -msgstr "" - -#, fuzzy -msgid "Select language" -msgstr "Kohalik keel" - -#, fuzzy -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "Kirjutage paigaldatavad lisapaketid (tühikutega eraldatuna, jätke tühjaks, kui soovite vahele jätta): " - -msgid "Invalid download number" -msgstr "" - -msgid "Number downloads" -msgstr "" - -#, fuzzy -msgid "The username you entered is invalid" -msgstr "Teie sisestatud kasutajanimi ei sobi. Proovige uuesti" - -#, fuzzy -msgid "Username" -msgstr "Kasutajanimi : " - -#, fuzzy, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "Kas \"{}\" peaks olema superkasutaja (sudo)?" - -#, fuzzy -msgid "Interfaces" -msgstr "Lisa liides" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "" - -msgid "Modes" -msgstr "" - -msgid "IP address" -msgstr "" - -#, fuzzy -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "Sisestage oma võrguvärava (ruuteri) IP-aadress või jätke tühjaks, kui see puudub: " - -msgid "Gateway address" -msgstr "" - -#, fuzzy -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "Sisestage oma DNS-serverid (tühikuga eraldatud, jätke tühjaks, kui neid ei ole): " - -#, fuzzy -msgid "DNS servers" -msgstr "Puudub audio server" - -#, fuzzy -msgid "Configure interfaces" -msgstr "Konfigureeritud {} liidesed" - -#, fuzzy -msgid "Kernel" -msgstr "Kernelid" - -msgid "UEFI is not detected and some options are disabled" -msgstr "" - -msgid "Info" -msgstr "" - -#, fuzzy -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "Sway ei toeta Nvidia enda draiverit. Tõenäoliselt tekib teil probleeme, kas teile sobib see?" - -#, fuzzy -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "Sway ei toeta Nvidia enda draiverit. Tõenäoliselt tekib teil probleeme, kas teile sobib see?" - -#, fuzzy -msgid "Main profile" -msgstr "Muuda profiili" - -#, fuzzy -msgid "Confirm password" -msgstr "Muuda parool" - -msgid "The confirmation password did not match, please try again" -msgstr "" - -#, fuzzy -msgid "Not a valid directory" -msgstr "Ei ole sobiv kataloog: {}" - -#, fuzzy -msgid "Would you like to continue?" -msgstr "Kas soovite kasutada BTRFS-i tihendamist?" - -msgid "Directory" -msgstr "" - -#, fuzzy -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "" -"Sisestage salvestatava(te) konfiguratsiooni(de) kataloog (vahekaartide täitmine lubatud)\n" -"Salvesta kataloog: " - -#, fuzzy, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "" -"Kas soovite salvestada {} konfiguratsioonifaili(d) järgmisesse asukohta?\n" -"\n" -"{}" - -msgid "Enabled" -msgstr "" - -msgid "Disabled" -msgstr "" - -#, fuzzy -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Esitage see probleem (ja fail) aadressil https://github.com/archlinux/archinstall/issues" - -#, fuzzy -msgid "Mirror name" -msgstr "Peegelregioon" - -msgid "Url" -msgstr "" - -#, fuzzy -msgid "Select signature check" -msgstr "Valige allkirja kontrollimise võimalus" - -#, fuzzy -msgid "Select execution mode" -msgstr "Valige täitmisrežiim" - -msgid "Press ? for help" -msgstr "" - -#, fuzzy -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Valige valik, et anda Sway'le juurdepääs teie riistvarale" - -#, fuzzy -msgid "Additional repositories" -msgstr "Valikulised repositooriumid" - -msgid "NTP" -msgstr "" - -msgid "Swap on zram" -msgstr "" - -msgid "Name" -msgstr "" - -#, fuzzy -msgid "Signature check" -msgstr "Valige allkirja kontrollimise võimalus" - -#, fuzzy, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "Praegused vabad sektorid seadmes {}:" - -#, fuzzy, python-brace-format -msgid "Size: {} / {}" -msgstr "Kogupikkus: {}" - -#, fuzzy, python-brace-format -msgid "Size (default: {}): " -msgstr "Sisestage algussektor (vaikimisi: {}): " - -#, fuzzy -msgid "HSM device" -msgstr "Seade" - -msgid "Some packages could not be found in the repository" -msgstr "" - -#, fuzzy -msgid "User" -msgstr "Kasutajanimi : " - -msgid "The specified configuration will be applied" -msgstr "" - -msgid "Wipe" -msgstr "" - -#, fuzzy -msgid "Mark/Unmark as XBOOTLDR" -msgstr "Märgistada/mittemärgistada käivitatavak" - -#, fuzzy -msgid "Loading packages..." -msgstr "Täiendavad paketid" - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "" - -#, fuzzy -msgid "Add a custom repository" -msgstr "Lisa kohandatud peegel" - -#, fuzzy -msgid "Change custom repository" -msgstr "Muuda kohandatud peeglit" - -#, fuzzy -msgid "Delete custom repository" -msgstr "Kustuta kohandadtud peeglit" - -#, fuzzy -msgid "Repository name" -msgstr "Peegelregioon" - -#, fuzzy -msgid "Add a custom server" -msgstr "Lisa kohandatud peegel" - -#, fuzzy -msgid "Change custom server" -msgstr "Muuda kohandatud peeglit" - -#, fuzzy -msgid "Delete custom server" -msgstr "Kustuta kohandadtud peeglit" - -msgid "Server url" -msgstr "" - -#, fuzzy -msgid "Select regions" -msgstr "Valige allkirja valik" - -#, fuzzy -msgid "Add custom servers" -msgstr "Lisa kohandatud peegel" - -#, fuzzy -msgid "Add custom repository" -msgstr "Lisa kohandatud peegel" - -#, fuzzy -msgid "Loading mirror regions..." -msgstr "Peegel regioonid" - -#, fuzzy -msgid "Mirrors and repositories" -msgstr "Valikulised repositooriumid" - -#, fuzzy -msgid "Selected mirror regions" -msgstr "Peegel regioonid" - -#, fuzzy -msgid "Custom servers" -msgstr "Kohandatud peegel" - -#, fuzzy -msgid "Custom repositories" -msgstr "Valikulised repositooriumid" - -msgid "Only ASCII characters are supported" -msgstr "" - -msgid "Show help" -msgstr "" - -msgid "Exit help" -msgstr "" - -msgid "Preview scroll up" -msgstr "" - -msgid "Preview scroll down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move right" -msgstr "" - -msgid "Move left" -msgstr "" - -msgid "Jump to entry" -msgstr "" - -msgid "Skip selection (if available)" -msgstr "" - -msgid "Reset selection (if available)" -msgstr "" - -#, fuzzy -msgid "Select on single select" -msgstr "Valige allkirja kontrollimise võimalus" - -#, fuzzy -msgid "Select on multi select" -msgstr "Vali ajatsoon" - -msgid "Reset" -msgstr "" - -#, fuzzy -msgid "Skip selection menu" -msgstr "Valige täitmisrežiim" - -msgid "Start search mode" -msgstr "" - -msgid "Exit search mode" -msgstr "" - -#, fuzzy -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway vajab juurdepääsu teie seatile (riistvaraseadmete kogum, st klaviatuur, hiir jne." - -#, fuzzy -msgid "Choose an option to give labwc access to your hardware" -msgstr "" -"\n" -"\n" -"Valige valik, et anda Sway'le juurdepääs teie riistvarale" - -#, fuzzy -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway vajab juurdepääsu teie seatile (riistvaraseadmete kogum, st klaviatuur, hiir jne." - -#, fuzzy -msgid "Choose an option to give niri access to your hardware" -msgstr "" -"\n" -"\n" -"Valige valik, et anda Sway'le juurdepääs teie riistvarale" - -#, fuzzy -msgid "Mark/Unmark as ESP" -msgstr "Märgistada/mittemärgistada käivitatavak" - -msgid "Package group:" -msgstr "" - -#, fuzzy -msgid "Exit archinstall" -msgstr "Archinstalli keel" - -#, fuzzy -msgid "Reboot system" -msgstr "Failisüsteemi muutmine" - -#, fuzzy -msgid "chroot into installation for post-installation configurations" -msgstr "Kas soovite chrootida äsja loodud installatsiooni ja teostada installeerimisjärgset konfigureerimist?" - -msgid "Installation completed" -msgstr "" - -#, fuzzy -msgid "What would you like to do next?" -msgstr "Kas soovite kasutada BTRFS-i tihendamist?" - -#, fuzzy, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "Valige, millist režiimi soovite konfigureerida \"{}\" või jätke vahele, kasutada vaikimisi režiimi \"{}\"" - -#, fuzzy -msgid "Incorrect credentials file decryption password" -msgstr "Krüpteerimise parool" - -#, fuzzy -msgid "Incorrect password" -msgstr "Juur parool" - -#, fuzzy -msgid "Credentials file decryption password" -msgstr "Krüpteerimise parool" - -#, fuzzy -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "" -"Kas soovite salvestada {} konfiguratsioonifaili(d) järgmisesse asukohta?\n" -"\n" -"{}" - -#, fuzzy -msgid "Credentials file encryption password" -msgstr "Krüpteerimise parool" - -#, fuzzy, python-brace-format -msgid "Repositories: {}" -msgstr "Peegelregioon" - -#, fuzzy -msgid "New version available" -msgstr "Puuduvad HSM seadmed" - -#, fuzzy -msgid "Passwordless login" -msgstr "Parool" - -msgid "Second factor login" -msgstr "" - -msgid "Bluetooth" -msgstr "" - -#, fuzzy -msgid "Would you like to configure Bluetooth?" -msgstr "Kas soovite kasutada BTRFS-i tihendamist?" - -msgid "Authentication" -msgstr "" - -msgid "Applications" -msgstr "" - -msgid "U2F login method: " -msgstr "" - -msgid "Passwordless sudo: " -msgstr "" - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "" - -msgid "Syncing the system..." -msgstr "" - -msgid "Value cannot be empty" -msgstr "" - -msgid "Snapshot type" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Snapshot type: {}" -msgstr "Keskkonna tüüp: {}" - -msgid "U2F login setup" -msgstr "" - -msgid "No U2F devices found" -msgstr "" - -msgid "U2F Login Method" -msgstr "" - -#, fuzzy -msgid "Enable passwordless sudo?" -msgstr "Sisestage parool: " - -#, fuzzy, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "Valige HSM-i jaoks kasutatav FIDO2-seade" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "" - -msgid "Starting device modifications in " -msgstr "" - -#, fuzzy -msgid "No network connection found" -msgstr "Puudub võrgu konfiguratsioon" - -#, fuzzy -msgid "Would you like to connect to a Wifi?" -msgstr "Kas soovite kasutada BTRFS-i tihendamist?" - -#, fuzzy -msgid "No wifi interface found" -msgstr "Konfigureeritud {} liidesed" - -#, fuzzy -msgid "Select wifi network to connect to" -msgstr "Valige üks võrguliides konfigureerimiseks" - -msgid "Scanning wifi networks..." -msgstr "" - -#, fuzzy -msgid "No wifi networks found" -msgstr "Puudub võrgu konfiguratsioon" - -msgid "Failed setting up wifi" -msgstr "" - -#, fuzzy -msgid "Enter wifi password" -msgstr "Sisestage parool: " - -msgid "Ok" -msgstr "" diff --git a/examples/archinstall/archinstall/locales/fi/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/fi/LC_MESSAGES/base.mo deleted file mode 100644 index 6900a45..0000000 Binary files a/examples/archinstall/archinstall/locales/fi/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/fi/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/fi/LC_MESSAGES/base.po deleted file mode 100644 index fca6159..0000000 --- a/examples/archinstall/archinstall/locales/fi/LC_MESSAGES/base.po +++ /dev/null @@ -1,1924 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Kimmo Kujansuu \n" -"Language-Team: \n" -"Language: fi\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.3\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] Lokitiedosto luotiin tähän: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Lähetä tämä ongelma (ja tiedosto) osoitteeseen https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "Haluatko todella poistua?" - -msgid "And one more time for verification: " -msgstr "Ja vielä kerran vahvistukseksi: " - -msgid "Would you like to use swap on zram?" -msgstr "Haluatko käyttää swap:ia zram:ssa?" - -msgid "Desired hostname for the installation: " -msgstr "Valitse hostname asennukselle: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "Käyttäjänimi superkäyttäjälle, jolla on sudo-oikeudet: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "Muut asennettavat käyttäjät (jätä tyhjäksi, jos ei muita käyttäjiä): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "Pitäisikö tämän käyttäjän olla superkäyttäjä (sudoer)?" - -msgid "Select a timezone" -msgstr "Valitse aikavyöhyke" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "Haluatko käyttää GRUB:ia lataimena systemd-bootin sijaan?" - -msgid "Choose a bootloader" -msgstr "Valitse käynnistyslatain" - -msgid "Choose an audio server" -msgstr "Valitse audiopalvelin" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Vain paketit, kuten base, base-devel, linux, linux-firmware, efibootmgr ja valinnaiset profiili-paketit, asennetaan." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "Jos haluat selaimen, kuten firefox tai chromium, voit valita sen seuraavassa kohdassa." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "Kirjoita asennettavat lisäpaketit (välilyönnillä erotettuna, ohita vaihe jättämällä tyhjäksi): " - -msgid "Copy ISO network configuration to installation" -msgstr "Kopioi ISO verkkoasetukset asennukseen" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "Käytä NetworkManager ohjelmaa (Internetin graafinen määritys GNOME ja KDE)" - -msgid "Select one network interface to configure" -msgstr "Valitse yksi määritettävä verkkoliitäntä" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "Valitse, mikä tila määritetään \"{}\", tai ohita ja käytä \"{}\" oletusta." - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "Anna IP-osoite ja aliverkko {} (esim. 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "Anna yhdyskäytävän (reitittimen) IP-osoite tai jätä tyhjäksi: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "Anna DNS-osoitteet (välilyönti erottaa kaksi osoitetta toisistaan, tyhjä ei mitään): " - -msgid "Select which filesystem your main partition should use" -msgstr "Valitse, mitä tiedostojärjestelmä pääosiolle" - -msgid "Current partition layout" -msgstr "Tämänhetkinen osion asettelu" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"Valitse mitä haluat tehdä\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "Anna osiolle haluttu tiedostojärjestelmän tyyppi" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "Anna aloituspaikka (yksiköt: s, GB, %, etc. ; oletus: {}): " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "Anna lopetuspaikka (yksiköt: s, GB, %, etc. ; ex: {}): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} sisältää jonossa olevat osiot, tämä poistaa ne, oletko varma?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"Valitse indeksin perusteella, mitkä osiot haluat poistaa" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"Valitse indeksin perusteella, mikä osio liitetään mihin" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * Osioiden liitoskohdat ovat suhteessa asennuksen sisäpuolelle, käynnistys olisi esimerkiksi /boot." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "Valitse, mihin osio asennetaan (jätä tyhjäksi, jos haluat poistaa liitoskohdan): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"Valitse, mikä osio merkitään alustusta varten" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"Valitse, mikä osio merkitään salattavaksi" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"Valitse, mikä osio merkitään käynnistyväksi" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"Valitse, mikä osio merkitään tiedostojärjestelmää varten" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "Anna osiolle haluttu tiedostojärjestelmän tyyppi: " - -msgid "Archinstall language" -msgstr "Archinstall kieli" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Pyyhi kaikki valitut asemat ja käytä parasta mahdollista oletusosion asettelua" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Valitse, mitä tehdään kullekin yksittäiselle asemalle (ja osion käytölle)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "Valitse, mitä haluat tehdä valituilla lohkoilla" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "Tämä on lista valmiista profiileista, jotka saattavat helpottaa esimerkiksi työpöytäympäristön asentamista" - -msgid "Select keyboard layout" -msgstr "Valitse näppäimistön asettelu" - -msgid "Select one of the regions to download packages from" -msgstr "Valitse yksi alueista, joista paketit ladataan" - -msgid "Select one or more hard drives to use and configure" -msgstr "Valitse yksi tai useampi kiintolevy käytettäväksi ja määritettäväksi" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "Saat parhaan yhteensopivuuden AMD:n kanssa käyttämällä joko avoimen lähdekoodin vaihtoehtoja tai AMD/ATI valmistajan vaihtoehtoja." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "Saat parhaan yhteensopivuuden Intelin kanssa käyttämällä joko avoimen lähdekoodin vaihtoehtoja tai Intel valmistajan vaihtoehtoja.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Saat parhaan yhteensopivuuden Nvidian kanssa käyttämällä Nvidia valmistajan omaa ohjainta.\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Valitse näytönohjaimen ohjain tai jätä tyhjäksi niin kaikki asennetaan avoimen lähdekoodin ohjaimilla" - -msgid "All open-source (default)" -msgstr "Kaikki avoimet lähdekoodit (oletus)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "Valitse käytettävät kernelit tai jätä tyhjäksi oletuksena \"{}\"" - -msgid "Choose which locale language to use" -msgstr "Valitse käytettävä kieli" - -msgid "Choose which locale encoding to use" -msgstr "Valitse käytettävä kielialueen koodaus" - -msgid "Select one of the values shown below: " -msgstr "Valitse jokin alla olevista arvoista: " - -msgid "Select one or more of the options below: " -msgstr "Valitse yksi tai useampi alla olevista: " - -msgid "Adding partition...." -msgstr "Lisätään osiota...." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "Sinun on annettava kelvollinen fs-tyyppi jatkaaksesi. Katso kelvolliset fs-tyypit kohdasta \"man parted\"." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Virhe: Profiilien luettelointi URL \"{}\" johti:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "Virhe: Tulosta \"{}\" ei voitu purkaa JSON-muodossa:" - -msgid "Keyboard layout" -msgstr "Näppäimistö" - -msgid "Mirror region" -msgstr "Pakettivarasto" - -msgid "Locale language" -msgstr "Kieli" - -msgid "Locale encoding" -msgstr "Kieli-koodaus" - -msgid "Drive(s)" -msgstr "Levyasemat" - -msgid "Disk layout" -msgstr "Levyn asettelu" - -msgid "Encryption password" -msgstr "Salauksen salasana" - -msgid "Swap" -msgstr "Swap" - -msgid "Bootloader" -msgstr "Käynnistyksenlataaja" - -msgid "Root password" -msgstr "Root salasana" - -msgid "Superuser account" -msgstr "Superkäyttäjätili" - -msgid "User account" -msgstr "Käyttäjätili" - -msgid "Profile" -msgstr "Profiili" - -msgid "Audio" -msgstr "Audio" - -msgid "Kernels" -msgstr "Kernelit" - -msgid "Additional packages" -msgstr "Lisäpaketit" - -msgid "Network configuration" -msgstr "Verkkoasetukset" - -msgid "Automatic time sync (NTP)" -msgstr "Autom. kellonajan synkronointi (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "Asenna ({} asetusta puuttuu)" - -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 "" -"Päätit ohittaa kiintolevyn valinnan ja käyttää\n" -"mitä tahansa asema-asetusta {} (kokeellinen)\n" -"VAROITUS: Archinstall ei voi tarkista asennuksen sopivuutta\n" -"Haluatko jatkaa?" - -msgid "Re-using partition instance: {}" -msgstr "Käytetään osiointi esimerkkiä: {}" - -msgid "Create a new partition" -msgstr "Luo uusi osio" - -msgid "Delete a partition" -msgstr "Poista osio" - -msgid "Clear/Delete all partitions" -msgstr "Tyhjennä/poista kaikki osiot" - -msgid "Assign mount-point for a partition" -msgstr "Määritä osion liitoskohta" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "Merkitse/poista osion alustaminen (pyyhkii tiedot)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "Merkitse/poista osio salataan merkintä" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "Merkitse/poista osion merkintä käynnistyväksi (automaattinen /boot)" - -msgid "Set desired filesystem for a partition" -msgstr "Aseta osiolle haluttu tiedostojärjestelmä" - -msgid "Abort" -msgstr "Keskeytä" - -msgid "Hostname" -msgstr "Hostname \"kone-nimi\"" - -msgid "Not configured, unavailable unless setup manually" -msgstr "Ei määritetty, ei käytettävissä, ellei asennusta ole käsin määritetty" - -msgid "Timezone" -msgstr "Aikavyöhyke" - -msgid "Set/Modify the below options" -msgstr "Aseta/muokkaa alla olevia asetuksia" - -msgid "Install" -msgstr "Asenna" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"Ohita painamalla ESC\n" -"\n" - -msgid "Suggest partition layout" -msgstr "Ehdota osion asettelua" - -msgid "Enter a password: " -msgstr "Anna salasana: " - -msgid "Enter a encryption password for {}" -msgstr "Anna salauksen salasana {}" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "Anna levyn salauksen salasana (jätä tyhjäksi, jos et salaa): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "Luo vaadittu superkäyttäjä, jolla on sudo-oikeudet: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "Anna root-salasana (jätä tyhjäksi niin root poistetaan käytöstä): " - -msgid "Password for user \"{}\": " -msgstr "Salasana käyttäjälle \"{}\": " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "Varmistetaan, että lisäpaketit ovat olemassa (saattaa kestää muutaman sekunnin)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "Haluatko käyttää automaattista ajan synkronointia oletus (NTP) aikapalvelinten kanssa?\n" - -msgid "" -"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" -"For more information, please check the Arch wiki" -msgstr "" -"NTP:n toiminta saattaa vaatia laitteistolle muita määrityksen jälkeisiä vaiheita.\n" -"Katso lisätietoja Arch-wiki" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "Luo uusi käyttäjä antamalla käyttäjänimi (jätä tyhjäksi ja ohita): " - -msgid "Use ESC to skip\n" -msgstr "Ohita painamalla ESC\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -"Valitse suoritettava toiminto luettelosta" - -msgid "Cancel" -msgstr "Peruuta" - -msgid "Confirm and exit" -msgstr "Vahvista ja poistu" - -msgid "Add" -msgstr "Lisää" - -msgid "Copy" -msgstr "Kopioi" - -msgid "Edit" -msgstr "Muokkaa" - -msgid "Delete" -msgstr "Poista" - -msgid "Select an action for '{}'" -msgstr "Valitse toiminta \"{}\"" - -msgid "Copy to new key:" -msgstr "Kopioi uuteen avaimeen:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "Tuntematon verkkokortin tyyppi: {}. Mahdolliset arvot ovat {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"Tämä on sinun valitsema kokoonpano:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Pacman on jo käynnissä, odota enintään 10 minuuttia sen päättymistä." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "Aiempi pacman-lukko ei ole poistunut. Lopeta kaikki olemassa olevat pacman-istunnot ennen archinstall ohjelman käyttöä." - -msgid "Choose which optional additional repositories to enable" -msgstr "Valitse, valinnaiset lisävarastot jotka otetaan käyttöön" - -msgid "Add a user" -msgstr "Lisää käyttäjä" - -msgid "Change password" -msgstr "Vaihda salasana" - -msgid "Promote/Demote user" -msgstr "Korota/alenna käyttäjä" - -msgid "Delete User" -msgstr "Poista käyttäjä" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"Määritä uusi käyttäjä\n" - -msgid "User Name : " -msgstr "Käyttäjänimi : " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "Pitäisikö {} olla superkäyttäjä (sudoer)?" - -msgid "Define users with sudo privilege: " -msgstr "Määritä käyttäjät, joilla on sudo-oikeudet: " - -msgid "No network configuration" -msgstr "Ei verkkoasetuksia" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "Aseta haluamasi alitaltiot btrfs-osioon" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"Valitse, mille osioille alitaltiot asetetaan" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "Hallitse nykyisen osion btrfs-alitaltioita" - -msgid "No configuration" -msgstr "Ei määritystä" - -msgid "Save user configuration" -msgstr "Tallenna käyttäjän määritykset" - -msgid "Save user credentials" -msgstr "Tallenna käyttäjän tunnistetiedot" - -msgid "Save disk layout" -msgstr "Tallenna levyasettelu" - -msgid "Save all" -msgstr "Tallenna kaikki" - -msgid "Choose which configuration to save" -msgstr "Valitse tallennettavat määritykset" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "Anna hakemisto tallennettaville määrityksille: " - -msgid "Not a valid directory: {}" -msgstr "Hakemisto ei ole kelvollinen: {}" - -msgid "The password you are using seems to be weak," -msgstr "Käyttämäsi salasana vaikuttaa heikolta," - -msgid "are you sure you want to use it?" -msgstr "oletko varma että haluat käyttää sitä?" - -msgid "Optional repositories" -msgstr "Valinnaiset arkistot" - -msgid "Save configuration" -msgstr "Tallenna määritykset" - -msgid "Missing configurations:\n" -msgstr "Puuttuvat määritykset:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "Joko root-salasana tai vähintään yksi pääkäyttäjä on määritettävä" - -msgid "Manage superuser accounts: " -msgstr "Hallitse superkäyttäjätilejä: " - -msgid "Manage ordinary user accounts: " -msgstr "Hallitse tavallisia käyttäjätilejä: " - -msgid " Subvolume :{:16}" -msgstr " Alitaltio :{:16}" - -msgid " mounted at {:16}" -msgstr " liitetty {:16}" - -msgid " with option {}" -msgstr " valinnalla {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -" Täytä halutut arvot uudelle alitaltiolle \n" - -msgid "Subvolume name " -msgstr "Alitaltion nimi " - -msgid "Subvolume mountpoint" -msgstr "Alitaltion liitoskohta" - -msgid "Subvolume options" -msgstr "Alitaltion valinnat" - -msgid "Save" -msgstr "Tallenna" - -msgid "Subvolume name :" -msgstr "Alitaltion nimi :" - -msgid "Select a mount point :" -msgstr "Valitse liitoskohta :" - -msgid "Select the desired subvolume options " -msgstr "Valitse alitaltion asetukset " - -msgid "Define users with sudo privilege, by username: " -msgstr "Määritä käyttäjät, joilla on sudo-oikeudet, käyttäjänimen mukaan: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] Lokitiedosto on luotu tähän: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "Haluatko käyttää BTRFS-alitaltioita oletusrakenteena?" - -msgid "Would you like to use BTRFS compression?" -msgstr "Haluatko käyttää BTRFS-pakkausta?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "Haluatko luoda erillisen osion /home ?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "Valituilla asemilla ei ole automaattiseen ehdotukseen vaadittavaa vähimmäistilaa\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "Minimi tila /home osiolle: {}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Minimi tila Arch Linux osiolle: {}GB" - -msgid "Continue" -msgstr "Jatka" - -msgid "yes" -msgstr "kyllä" - -msgid "no" -msgstr "ei" - -msgid "set: {}" -msgstr "aseta: {}" - -msgid "Manual configuration setting must be a list" -msgstr "Manuaaliset asetukset on oltava lista muodossa" - -msgid "No iface specified for manual configuration" -msgstr "Manuaalista määritystä varten iface on tekemättä" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "Manuaalinen verkkokortin määritys ilman autom. DHCP:tä vaatii IP-osoitteen" - -msgid "Add interface" -msgstr "Lisää liitäntä" - -msgid "Edit interface" -msgstr "Muokkaa liitäntää" - -msgid "Delete interface" -msgstr "Poista liitäntä" - -msgid "Select interface to add" -msgstr "Valitse lisättävä liitäntä" - -msgid "Manual configuration" -msgstr "Käsin määrittely" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "Merkitse/poista osio pakatuksi (vain btrfs)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "Käyttämäsi salasana vaikuttaa heikolta, haluatko käyttää sitä?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "Tarjoaa valikoiman erilaisia työpöytiä ja ikkunointia esim. gnome, kde, sway" - -msgid "Select your desired desktop environment" -msgstr "Valitse haluamasi työpöytä" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "Hyvin kevyt asennus, jonka avulla voit mukauttaa Arch Linuxia haluamallasi tavalla." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "Tarjoaa valikoiman erilaisia palvelinpaketteja ja saatavilla käyttöön esim. httpd, nginx, mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "Valitse mitkä palvelimet asennetaan. Jos ei yhtään, tehdään pienin mahdollinen asennus" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "Asentaa minimaalisen järjestelmän sekä xorg ja ohjaimet näytönohjaimelle." - -msgid "Press Enter to continue." -msgstr "Paina ENTER ja jatka." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "Haluatko chroot:in uuteen asennukseen ja suorittaa asennuksen jälkeiset asetukset?" - -msgid "Are you sure you want to reset this setting?" -msgstr "Haluatko varmasti nollata tämän asetuksen?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "Valitse yksi tai useampi kiintolevy määritettäväksi\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "Kaikki muutokset olemassa olevaan asetukseen nollaavat levyasettelun!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "Jos nollaat kiintolevyn valinnan, tämä nollaa myös nykyisen levyasettelun. Oletko varma?" - -msgid "Save and exit" -msgstr "Tallenna ja poistu" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"sisältää jonossa olevia osioita, tämä poistaa ne, oletko varma?" - -msgid "No audio server" -msgstr "Ei audiopalvelinta" - -msgid "(default)" -msgstr "(oletus)" - -msgid "Use ESC to skip" -msgstr "Ohita painamalla ESC" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"CTRL+C nollaa nykyisen valinnan\n" -"\n" - -msgid "Copy to: " -msgstr "Kopioi…: " - -msgid "Edit: " -msgstr "Muokkaa: " - -msgid "Key: " -msgstr "Avain: " - -msgid "Edit {}: " -msgstr "Muokkaa {}: " - -msgid "Add: " -msgstr "Lisää: " - -msgid "Value: " -msgstr "Arvo: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "Voit ohittaa aseman valinnan, sekä osioinnin ja käyttää mitä tahansa asemaa, joka on kytketty /mnt hakemistossa (kokeellinen)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "Valitse jokin levyistä tai ohita ja käytä /mnt oletuksena" - -msgid "Select which partitions to mark for formatting:" -msgstr "Valitse alustettavat osiot:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "Käytä HSM:ää avataksesi salatun aseman" - -msgid "Device" -msgstr "Laite" - -msgid "Size" -msgstr "Koko" - -msgid "Free space" -msgstr "Vapaata tilaa" - -msgid "Bus-type" -msgstr "Väylän tyyppi" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "Joko root-salasana tai vähintään yksi käyttäjä, jolla on sudo-oikeudet, on määritettävä" - -msgid "Enter username (leave blank to skip): " -msgstr "Anna käyttäjänimi (jätä tyhjäksi ja ohita): " - -msgid "The username you entered is invalid. Try again" -msgstr "Antamasi käyttäjänimi ei kelpaa. Yritä uudelleen" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "Pitäisikö \"{}\" olla superkäyttäjä (sudo)?" - -msgid "Select which partitions to encrypt" -msgstr "Valitse salattavat osiot" - -msgid "very weak" -msgstr "hyvin heikko" - -msgid "weak" -msgstr "heikko" - -msgid "moderate" -msgstr "kohtalainen" - -msgid "strong" -msgstr "vahva" - -msgid "Add subvolume" -msgstr "Lisää alitaltio" - -msgid "Edit subvolume" -msgstr "Muokkaa alitaltiota" - -msgid "Delete subvolume" -msgstr "Poista alitaltio" - -msgid "Configured {} interfaces" -msgstr "Määritetty {} liittymää" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "Tämä valinta mahdollistaa asennuksen aikana tapahtuvien rinnakkaisten latausten määrän" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"Anna rinnakkaisten latausten määrä.\n" -" (anna arvo väliltä 1 - {})\n" -"Huomaa:" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - Suurin arvo : {} ( sallii {} rinnakkaista latausta, sallii {} latausta kerralla )" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - Pienin arvo : 1 ( sallii 1 rinnakkaisen latauksen, sallii {} 2 latausta kerralla )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - Pois/oletus : 0 ( ei salli rinnakkaisia latauksia, sallii vain 1 latauksen kerralla )" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "Virheellinen arvo! Yritä uudelleen kelvollisella arvolla [1 - {max_downloads}, tai 0 on poistettu]" - -msgid "Parallel Downloads" -msgstr "Rinnakkaiset lataukset" - -msgid "ESC to skip" -msgstr "Ohita painamalla ESC" - -msgid "CTRL+C to reset" -msgstr "CTRL+C nollaa" - -msgid "TAB to select" -msgstr "TAB valitsee" - -msgid "[Default value: 0] > " -msgstr "[oletusarvo: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "Jotta voit käyttää tätä käännöstä, asenna käsin fontti, joka tukee tätä kieltä." - -msgid "The font should be stored as {}" -msgstr "Fontti tulee tallentaa {}" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "Archinstall vaatii toimiakseen root oikeudet. Katso --help ja saat lisätietoja." - -msgid "Select an execution mode" -msgstr "Valitse suoritustila" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "Profiilia ei voi hakea määritetystä URL-osoitteesta: {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "Profiilin nimi on oltava yksilöllinen, mutta määrityksistä löytyy päällekkäinen nimi: {}" - -msgid "Select one or more devices to use and configure" -msgstr "Valitse yksi tai useampi laite määritettäväksi" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "Jos nollaat laitevalinnan, tämä nollaa myös nykyisen levyasettelun. Oletko varma?" - -msgid "Existing Partitions" -msgstr "Olemassa olevat osiot" - -msgid "Select a partitioning option" -msgstr "Valitse osiointivaihtoehto" - -msgid "Enter the root directory of the mounted devices: " -msgstr "Anna root hahemisto liitetylle laitteelle: " - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "Minimi tila /home osiolle: {}GiB\n" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "Minimi tila Arch Linux osiolle: {}GiB" - -msgid "This is a list of pre-programmed profiles_bck, they might make it easier to install things like desktop environments" -msgstr "Lista esiohjelmoiduista profiles_bck paketeista, joka voivat helpottaa asioita, kuten työpöydän asentamista" - -msgid "Current profile selection" -msgstr "Nykyinen profiilivalinta" - -msgid "Remove all newly added partitions" -msgstr "Poista kaikki juuri lisätyt osiot" - -msgid "Assign mountpoint" -msgstr "Määritä liitoskohta" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "Merkitse/poista osion alustaminen (pyyhkii tiedot)" - -msgid "Mark/Unmark as bootable" -msgstr "Merkitse/poista käynnistyvä" - -msgid "Change filesystem" -msgstr "Vaihda tiedostojärjestelmä" - -msgid "Mark/Unmark as compressed" -msgstr "Merkitse/poista pakatuksi" - -msgid "Set subvolumes" -msgstr "Aseta alitaltiot" - -msgid "Delete partition" -msgstr "Poista osio" - -msgid "Partition" -msgstr "Osio" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "Tämä osio on tällä hetkellä salattu, joten sen alustamiseksi on määritettävä tiedostojärjestelmä" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "Osioiden liitoskohdat ovat suhteessa asennuksen sisäpuolelle, käynnistys olisi esimerkiksi /boot." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "Jos liitoskohta /boot on asetettu, myös osio merkitään käynnistettäväksi." - -msgid "Mountpoint: " -msgstr "Liitoskohta: " - -msgid "Current free sectors on device {}:" -msgstr "Laitteen nykyiset vapaat sektorit {}:" - -msgid "Total sectors: {}" -msgstr "Sektoreita kaikkiaan: {}" - -msgid "Enter the start sector (default: {}): " -msgstr "Anna aloitussektori (oletus: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "Anna osion loppusektori (prosenttina tai lohkonumerona, oletus:: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "Tämä poistaa kaikki juuri lisätyt osiot, jatkaako?" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "Osioiden hallinta: {}" - -#, python-brace-format -msgid "Total length: {}" -msgstr "Kokonaispituus: {}" - -msgid "Encryption type" -msgstr "Salaustyyppi" - -msgid "Iteration time" -msgstr "" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "" - -msgid "Higher values increase security but slow down boot time" -msgstr "" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "" - -msgid "Iteration time cannot be empty" -msgstr "" - -msgid "Iteration time must be at least 100ms" -msgstr "" - -msgid "Iteration time must be at most 120000ms" -msgstr "" - -msgid "Please enter a valid number" -msgstr "" - -msgid "Partitions" -msgstr "Osiot" - -msgid "No HSM devices available" -msgstr "Ei HSM-laitteita saatavilla" - -msgid "Partitions to be encrypted" -msgstr "Salattavat osiot" - -msgid "Select disk encryption option" -msgstr "Valitse levyn salausasetus" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "Valitse HSM:ään käytettävä FIDO2-laite" - -msgid "Use a best-effort default partition layout" -msgstr "Käytä parasta mahdollista oletusosion asettelua" - -msgid "Manual Partitioning" -msgstr "Osiointi käsin" - -msgid "Pre-mounted configuration" -msgstr "Valmiiksi liitetty kokoonpano" - -msgid "Unknown" -msgstr "Tuntematon" - -msgid "Partition encryption" -msgstr "Osion salaus" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr " ! Alustetaan {} " - -msgid "← Back" -msgstr "← Takaisin" - -msgid "Disk encryption" -msgstr "Levyn salaus" - -msgid "Configuration" -msgstr "Asetukset" - -msgid "Password" -msgstr "Salasana" - -msgid "All settings will be reset, are you sure?" -msgstr "Kaikki asetukset nollataan, oletko varma?" - -msgid "Back" -msgstr "Takaisin" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "Valitse asennettava käyttöliittymä valituille profiileille: {}" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "Ympäristötyyppi: {}" - -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 "Sway ei tue patentoitua Nvidia-ohjainta. Todennäköistä, että kohtaat joitain ongelmia, kelpaako se silti sinulle?" - -msgid "Installed packages" -msgstr "Asennetut paketit" - -msgid "Add profile" -msgstr "Lisää profiili" - -msgid "Edit profile" -msgstr "Muokkaa profiilia" - -msgid "Delete profile" -msgstr "Poista profiili" - -msgid "Profile name: " -msgstr "Profiilinimi: " - -msgid "The profile name you entered is already in use. Try again" -msgstr "Antamasi profiilinimi on jo käytössä. Yritä uudelleen" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "Tällä profiililla asennettavat paketit (välilyönnillä erotettuna, ohita jättämällä tyhjäksi): " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "Palvelut, jotka otetaan käyttöön tällä profiililla (välilyönnillä erotettuna, ohita jättämällä tyhjäksi): " - -msgid "Should this profile be enabled for installation?" -msgstr "Pitäisikö tämä profiili ottaa käyttöön asennusta varten?" - -msgid "Create your own" -msgstr "Luo sinun oma" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"Valitse näytönohjaimen ohjain tai jätä tyhjäksi niin kaikki asennetaan avoimen lähdekoodin ohjaimilla" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway tarvitsee pääsyn istuntoon (kokoelma laitteistoja, kuten näppäimistö, hiiri jne.)" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Valitse asetus antaaksesi Swaylle pääsyn laitteistoosi" - -msgid "Graphics driver" -msgstr "Näytönohjaimen ohjain" - -msgid "Greeter" -msgstr "Käyttöliittymä" - -msgid "Please chose which greeter to install" -msgstr "Valitse asennettava käyttöliittymä" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "Tämä on lista esiohjelmoiduista default_profiles" - -msgid "Disk configuration" -msgstr "Kiintolevyn määritys" - -msgid "Profiles" -msgstr "Profiilit" - -msgid "Finding possible directories to save configuration files ..." -msgstr "Etsitään hakemistoja asetustiedostojen tallentamiseen ..." - -msgid "Select directory (or directories) for saving configuration files" -msgstr "Valitse hakemisto (tai hakemistot) asetustiedostojen tallentamiseen" - -msgid "Add a custom mirror" -msgstr "Lisää mukautettu peilipaikka" - -msgid "Change custom mirror" -msgstr "Vaihda mukautettu peilipaikka" - -msgid "Delete custom mirror" -msgstr "Poista mukautettu peilipaikka" - -msgid "Enter name (leave blank to skip): " -msgstr "Anna nimi (jätä tyhjäksi ja ohita): " - -msgid "Enter url (leave blank to skip): " -msgstr "Anna url (jätä tyhjäksi ja ohita): " - -msgid "Select signature check option" -msgstr "Valitse allekirjoituksen tarkistusvaihtoehto" - -msgid "Select signature option" -msgstr "Valitse allekirjoituksen asetus" - -msgid "Custom mirrors" -msgstr "Mukautetut peilipaikat" - -msgid "Defined" -msgstr "Määritelty" - -msgid "Save user configuration (including disk layout)" -msgstr "Tallenna käyttäjän asetukset (myös levyasettelu)" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"Anna hakemisto tallennettaville määrityksille (välilehden viimeistely käytössä)\n" -"Tallennushakemisto: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"Haluatko tallentaa {} asetustiedostoa seuraavaan paikkaan?\n" -"\n" -"{}" - -msgid "Saving {} configuration files to {}" -msgstr "Tallennetaan {} määritystiedostoa {}" - -msgid "Mirrors" -msgstr "Peilipaikat" - -msgid "Mirror regions" -msgstr "Peilipaikan maa" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - Suurin arvo : {} ( sallii {} rinnakkaista latausta, sallii {max_downloads+1} latausta kerralla )" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "Virheellinen arvo! Yritä uudelleen kelvollisella arvolla [1 - {}, tai 0 on poistettu]" - -msgid "Locales" -msgstr "Alueet" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "Käytä NetworkManager -ohjelmaa (Internetin määritys graafisesti GNOME ja KDE)" - -msgid "Total: {} / {}" -msgstr "Yhteensä: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "Kaikki annetut arvot voidaan liittää käyttäen yksikköjä: B, KB, KiB, MB, MiB..." - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "Jos yksikköä ei ole annettu, arvo tulkitaan sektoreiksi" - -msgid "Enter start (default: sector {}): " -msgstr "Anna alku (oletus: sektori {}): " - -msgid "Enter end (default: {}): " -msgstr "Anna loppu (oletus: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "Fido2-laitteita ei voida määrittää. Onko libfido2 asennettu?" - -msgid "Path" -msgstr "Polku" - -msgid "Manufacturer" -msgstr "Valmistaja" - -msgid "Product" -msgstr "Tuote" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "Virheellinen määritys: {error}" - -msgid "Type" -msgstr "Tyyppi" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "Tämä valinta mahdollistaa asennuksen aikana tapahtuvien rinnakkaisten latausten määrän" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"Anna rinnakkaisten latausten määrä.\n" -"\n" -"Huomaa:\n" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - Suurin suositeltu arvo : {} ( sallii {} rinnakkaista latausta kerralla )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - Pois/oletus : 0 ( ei salli rinnakkaisia latauksia, sallii vain 1 latauksen kerralla )\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "Virheellinen arvo! Yritä uudelleen kelvollisella arvolla [tai 0 on poistettu]" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Hyprland tarvitsee pääsyn istuntoon (kokoelma laitteistoja, kuten näppäimistö, hiiri jne.)" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Valitse asetus antaaksesi Hyprlandille pääsyn laitteistoosi" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "Kaikki annetut arvot voidaan liittää käyttäen yksikköjä: B, KB, KiB, MB, MiB..." - -msgid "Would you like to use unified kernel images?" -msgstr "Haluatko käyttää Unified Kernel Images, joka voidaan käynnistää suoraan UEFI-ohjelmistosta?" - -msgid "Unified kernel images" -msgstr "UKI Unified Kernel Images" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "Odotetaan ajan synkronoinnin (timedatectl show) päättymistä." - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Ajan synkronointi ei ole valmis, kun odotat voit tarkistaa kiertotapoja: https://archinstall.readthedocs.io/" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "Autom. ajan synkronoinnin odottaminen ohitetaan (voi aiheuttaa ongelmia, jos aikaa ei ole synkronoitu asennuksen aikana)" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "Odotetaan Arch Linux avainten synkronoinnin valmistumista (archlinux-keyring-wkd-sync)." - -msgid "Selected profiles: " -msgstr "Valitut profiilit: " - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Ajan synkronointi ei ole valmis, kun odotat voit tarkistaa kiertotapoja: https://archinstall.readthedocs.io/" - -msgid "Mark/Unmark as nodatacow" -msgstr "Merkitse/poista nodatacow merkintä" - -msgid "Would you like to use compression or disable CoW?" -msgstr "Haluatko käyttää pakkausta vai poistaa CoW:n käytöstä?" - -msgid "Use compression" -msgstr "Käytä pakkausta" - -msgid "Disable Copy-on-Write" -msgstr "Poista kopiointi kirjoittamisen yhteydessä" - -#, fuzzy -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "Tarjoaa valikoiman erilaisia työpöytiä ja ikkunointia esim. gnome, kde, sway" - -#, fuzzy, python-brace-format -msgid "Configuration type: {}" -msgstr "Asetukset" - -#, fuzzy -msgid "LVM configuration type" -msgstr "Ei määritystä" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "" - -#, fuzzy -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "Käytä NetworkManager -ohjelmaa (Internetin määritys graafisesti GNOME ja KDE)" - -#, fuzzy -msgid "Select a LVM option" -msgstr "Valitse aikavyöhyke" - -#, fuzzy -msgid "Partitioning" -msgstr "Osio" - -msgid "Logical Volume Management (LVM)" -msgstr "" - -msgid "Physical volumes" -msgstr "" - -msgid "Volumes" -msgstr "" - -#, fuzzy -msgid "LVM volumes" -msgstr "Aseta alitaltiot" - -#, fuzzy -msgid "LVM volumes to be encrypted" -msgstr "Salattavat osiot" - -#, fuzzy -msgid "Select which LVM volumes to encrypt" -msgstr "Valitse salattavat osiot" - -#, fuzzy -msgid "Default layout" -msgstr "Levyn asettelu" - -#, fuzzy -msgid "No Encryption" -msgstr "Salaustyyppi" - -msgid "LUKS" -msgstr "" - -msgid "LVM on LUKS" -msgstr "" - -msgid "LUKS on LVM" -msgstr "" - -#, fuzzy -msgid "Yes" -msgstr "kyllä" - -msgid "No" -msgstr "" - -#, fuzzy -msgid "Archinstall help" -msgstr "Archinstall kieli" - -#, fuzzy -msgid " (default)" -msgstr "(oletus)" - -msgid "Press Ctrl+h for help" -msgstr "" - -#, fuzzy -msgid "Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Valitse asetus antaaksesi Swaylle pääsyn laitteistoosi" - -msgid "Seat access" -msgstr "" - -#, fuzzy -msgid "Mountpoint" -msgstr "Liitoskohta: " - -msgid "HSM" -msgstr "" - -#, fuzzy -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "Anna levyn salauksen salasana (jätä tyhjäksi, jos et salaa): " - -#, fuzzy -msgid "Disk encryption password" -msgstr "Salauksen salasana" - -#, fuzzy -msgid "Partition - New" -msgstr "Osio" - -#, fuzzy -msgid "Filesystem" -msgstr "Vaihda tiedostojärjestelmä" - -msgid "Invalid size" -msgstr "" - -#, fuzzy -msgid "Start (default: sector {}): " -msgstr "Anna alku (oletus: sektori {}): " - -#, fuzzy -msgid "End (default: {}): " -msgstr "Anna loppu (oletus: {}): " - -#, fuzzy -msgid "Subvolume name" -msgstr "Alitaltion nimi " - -#, fuzzy -msgid "Disk configuration type" -msgstr "Kiintolevyn määritys" - -msgid "Root mount directory" -msgstr "" - -#, fuzzy -msgid "Select language" -msgstr "Kieli" - -#, fuzzy -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "Kirjoita asennettavat lisäpaketit (välilyönnillä erotettuna, ohita vaihe jättämällä tyhjäksi): " - -msgid "Invalid download number" -msgstr "" - -msgid "Number downloads" -msgstr "" - -#, fuzzy -msgid "The username you entered is invalid" -msgstr "Antamasi käyttäjänimi ei kelpaa. Yritä uudelleen" - -#, fuzzy -msgid "Username" -msgstr "Käyttäjänimi : " - -#, fuzzy, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "Pitäisikö \"{}\" olla superkäyttäjä (sudo)?" - -#, fuzzy -msgid "Interfaces" -msgstr "Lisää liitäntä" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "" - -msgid "Modes" -msgstr "" - -msgid "IP address" -msgstr "" - -#, fuzzy -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "Anna yhdyskäytävän (reitittimen) IP-osoite tai jätä tyhjäksi: " - -msgid "Gateway address" -msgstr "" - -#, fuzzy -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "Anna DNS-osoitteet (välilyönti erottaa kaksi osoitetta toisistaan, tyhjä ei mitään): " - -#, fuzzy -msgid "DNS servers" -msgstr "Ei audiopalvelinta" - -#, fuzzy -msgid "Configure interfaces" -msgstr "Määritetty {} liittymää" - -#, fuzzy -msgid "Kernel" -msgstr "Kernelit" - -msgid "UEFI is not detected and some options are disabled" -msgstr "" - -msgid "Info" -msgstr "" - -#, fuzzy -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "Sway ei tue patentoitua Nvidia-ohjainta. Todennäköistä, että kohtaat joitain ongelmia, kelpaako se silti sinulle?" - -#, fuzzy -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "Sway ei tue patentoitua Nvidia-ohjainta. Todennäköistä, että kohtaat joitain ongelmia, kelpaako se silti sinulle?" - -#, fuzzy -msgid "Main profile" -msgstr "Muokkaa profiilia" - -#, fuzzy -msgid "Confirm password" -msgstr "Vaihda salasana" - -msgid "The confirmation password did not match, please try again" -msgstr "" - -#, fuzzy -msgid "Not a valid directory" -msgstr "Hakemisto ei ole kelvollinen: {}" - -#, fuzzy -msgid "Would you like to continue?" -msgstr "Haluatko käyttää BTRFS-pakkausta?" - -msgid "Directory" -msgstr "" - -#, fuzzy -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "" -"Anna hakemisto tallennettaville määrityksille (välilehden viimeistely käytössä)\n" -"Tallennushakemisto: " - -#, fuzzy, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "" -"Haluatko tallentaa {} asetustiedostoa seuraavaan paikkaan?\n" -"\n" -"{}" - -msgid "Enabled" -msgstr "" - -msgid "Disabled" -msgstr "" - -#, fuzzy -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Lähetä tämä ongelma (ja tiedosto) osoitteeseen https://github.com/archlinux/archinstall/issues" - -#, fuzzy -msgid "Mirror name" -msgstr "Pakettivarasto" - -msgid "Url" -msgstr "" - -#, fuzzy -msgid "Select signature check" -msgstr "Valitse allekirjoituksen tarkistusvaihtoehto" - -#, fuzzy -msgid "Select execution mode" -msgstr "Valitse suoritustila" - -msgid "Press ? for help" -msgstr "" - -#, fuzzy -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Valitse asetus antaaksesi Hyprlandille pääsyn laitteistoosi" - -#, fuzzy -msgid "Additional repositories" -msgstr "Valinnaiset arkistot" - -msgid "NTP" -msgstr "" - -msgid "Swap on zram" -msgstr "" - -msgid "Name" -msgstr "" - -#, fuzzy -msgid "Signature check" -msgstr "Valitse allekirjoituksen tarkistusvaihtoehto" - -#, fuzzy, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "Laitteen nykyiset vapaat sektorit {}:" - -#, fuzzy, python-brace-format -msgid "Size: {} / {}" -msgstr "Yhteensä: {} / {}" - -#, fuzzy, python-brace-format -msgid "Size (default: {}): " -msgstr "Anna loppu (oletus: {}): " - -#, fuzzy -msgid "HSM device" -msgstr "Laite" - -msgid "Some packages could not be found in the repository" -msgstr "" - -#, fuzzy -msgid "User" -msgstr "Käyttäjänimi : " - -msgid "The specified configuration will be applied" -msgstr "" - -msgid "Wipe" -msgstr "" - -#, fuzzy -msgid "Mark/Unmark as XBOOTLDR" -msgstr "Merkitse/poista käynnistyvä" - -#, fuzzy -msgid "Loading packages..." -msgstr "Lisäpaketit" - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "" - -#, fuzzy -msgid "Add a custom repository" -msgstr "Lisää mukautettu peilipaikka" - -#, fuzzy -msgid "Change custom repository" -msgstr "Vaihda mukautettu peilipaikka" - -#, fuzzy -msgid "Delete custom repository" -msgstr "Poista mukautettu peilipaikka" - -#, fuzzy -msgid "Repository name" -msgstr "Pakettivarasto" - -#, fuzzy -msgid "Add a custom server" -msgstr "Lisää mukautettu peilipaikka" - -#, fuzzy -msgid "Change custom server" -msgstr "Vaihda mukautettu peilipaikka" - -#, fuzzy -msgid "Delete custom server" -msgstr "Poista mukautettu peilipaikka" - -msgid "Server url" -msgstr "" - -#, fuzzy -msgid "Select regions" -msgstr "Valitse allekirjoituksen asetus" - -#, fuzzy -msgid "Add custom servers" -msgstr "Lisää mukautettu peilipaikka" - -#, fuzzy -msgid "Add custom repository" -msgstr "Lisää mukautettu peilipaikka" - -#, fuzzy -msgid "Loading mirror regions..." -msgstr "Peilipaikan maa" - -#, fuzzy -msgid "Mirrors and repositories" -msgstr "Valinnaiset arkistot" - -#, fuzzy -msgid "Selected mirror regions" -msgstr "Peilipaikan maa" - -#, fuzzy -msgid "Custom servers" -msgstr "Mukautetut peilipaikat" - -#, fuzzy -msgid "Custom repositories" -msgstr "Valinnaiset arkistot" - -msgid "Only ASCII characters are supported" -msgstr "" - -msgid "Show help" -msgstr "" - -msgid "Exit help" -msgstr "" - -msgid "Preview scroll up" -msgstr "" - -msgid "Preview scroll down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move right" -msgstr "" - -msgid "Move left" -msgstr "" - -msgid "Jump to entry" -msgstr "" - -msgid "Skip selection (if available)" -msgstr "" - -msgid "Reset selection (if available)" -msgstr "" - -#, fuzzy -msgid "Select on single select" -msgstr "Valitse allekirjoituksen tarkistusvaihtoehto" - -#, fuzzy -msgid "Select on multi select" -msgstr "Valitse aikavyöhyke" - -msgid "Reset" -msgstr "" - -#, fuzzy -msgid "Skip selection menu" -msgstr "Valitse suoritustila" - -msgid "Start search mode" -msgstr "" - -msgid "Exit search mode" -msgstr "" - -#, fuzzy -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway tarvitsee pääsyn istuntoon (kokoelma laitteistoja, kuten näppäimistö, hiiri jne.)" - -#, fuzzy -msgid "Choose an option to give labwc access to your hardware" -msgstr "" -"\n" -"\n" -"Valitse asetus antaaksesi Swaylle pääsyn laitteistoosi" - -#, fuzzy -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway tarvitsee pääsyn istuntoon (kokoelma laitteistoja, kuten näppäimistö, hiiri jne.)" - -#, fuzzy -msgid "Choose an option to give niri access to your hardware" -msgstr "" -"\n" -"\n" -"Valitse asetus antaaksesi Swaylle pääsyn laitteistoosi" - -#, fuzzy -msgid "Mark/Unmark as ESP" -msgstr "Merkitse/poista käynnistyvä" - -msgid "Package group:" -msgstr "" - -#, fuzzy -msgid "Exit archinstall" -msgstr "Archinstall kieli" - -#, fuzzy -msgid "Reboot system" -msgstr "Vaihda tiedostojärjestelmä" - -#, fuzzy -msgid "chroot into installation for post-installation configurations" -msgstr "Haluatko chroot:in uuteen asennukseen ja suorittaa asennuksen jälkeiset asetukset?" - -msgid "Installation completed" -msgstr "" - -#, fuzzy -msgid "What would you like to do next?" -msgstr "Haluatko käyttää BTRFS-pakkausta?" - -#, fuzzy, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "Valitse, mikä tila määritetään \"{}\", tai ohita ja käytä \"{}\" oletusta." - -#, fuzzy -msgid "Incorrect credentials file decryption password" -msgstr "Salauksen salasana" - -#, fuzzy -msgid "Incorrect password" -msgstr "Root salasana" - -#, fuzzy -msgid "Credentials file decryption password" -msgstr "Salauksen salasana" - -#, fuzzy -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "" -"Haluatko tallentaa {} asetustiedostoa seuraavaan paikkaan?\n" -"\n" -"{}" - -#, fuzzy -msgid "Credentials file encryption password" -msgstr "Salauksen salasana" - -#, fuzzy, python-brace-format -msgid "Repositories: {}" -msgstr "Pakettivarasto" - -#, fuzzy -msgid "New version available" -msgstr "Ei HSM-laitteita saatavilla" - -#, fuzzy -msgid "Passwordless login" -msgstr "Salasana" - -msgid "Second factor login" -msgstr "" - -msgid "Bluetooth" -msgstr "" - -#, fuzzy -msgid "Would you like to configure Bluetooth?" -msgstr "Haluatko käyttää BTRFS-pakkausta?" - -msgid "Authentication" -msgstr "" - -msgid "Applications" -msgstr "" - -msgid "U2F login method: " -msgstr "" - -msgid "Passwordless sudo: " -msgstr "" - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "" - -msgid "Syncing the system..." -msgstr "" - -msgid "Value cannot be empty" -msgstr "" - -msgid "Snapshot type" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Snapshot type: {}" -msgstr "Ympäristötyyppi: {}" - -msgid "U2F login setup" -msgstr "" - -msgid "No U2F devices found" -msgstr "" - -msgid "U2F Login Method" -msgstr "" - -#, fuzzy -msgid "Enable passwordless sudo?" -msgstr "Anna salasana: " - -#, fuzzy, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "Valitse HSM:ään käytettävä FIDO2-laite" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "" - -msgid "Starting device modifications in " -msgstr "" - -#, fuzzy -msgid "No network connection found" -msgstr "Ei verkkoasetuksia" - -#, fuzzy -msgid "Would you like to connect to a Wifi?" -msgstr "Haluatko käyttää BTRFS-pakkausta?" - -#, fuzzy -msgid "No wifi interface found" -msgstr "Määritetty {} liittymää" - -#, fuzzy -msgid "Select wifi network to connect to" -msgstr "Valitse yksi määritettävä verkkoliitäntä" - -msgid "Scanning wifi networks..." -msgstr "" - -#, fuzzy -msgid "No wifi networks found" -msgstr "Ei verkkoasetuksia" - -msgid "Failed setting up wifi" -msgstr "" - -#, fuzzy -msgid "Enter wifi password" -msgstr "Anna salasana: " - -msgid "Ok" -msgstr "" diff --git a/examples/archinstall/archinstall/locales/fr/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/fr/LC_MESSAGES/base.mo deleted file mode 100644 index b9c318e..0000000 Binary files a/examples/archinstall/archinstall/locales/fr/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/fr/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/fr/LC_MESSAGES/base.po deleted file mode 100644 index 76f694e..0000000 --- a/examples/archinstall/archinstall/locales/fr/LC_MESSAGES/base.po +++ /dev/null @@ -1,1834 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2025-04-11 23:02+0200\n" -"Last-Translator: Roxfr \n" -"Language-Team: \n" -"Language: fr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.6\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] Un fichier journal a été créé ici : {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Veuillez soumettre ce problème (et le fichier) à https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "Voulez-vous vraiment abandonner ?" - -msgid "And one more time for verification: " -msgstr "Et encore une fois pour vérification : " - -msgid "Would you like to use swap on zram?" -msgstr "Souhaitez-vous utiliser le swap sur zram ?" - -msgid "Desired hostname for the installation: " -msgstr "Nom d'hôte souhaité pour l'installation : " - -msgid "Username for required superuser with sudo privileges: " -msgstr "Nom d'utilisateur pour le superutilisateur requis avec les privilèges sudo : " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "Utilisateur supplémentaire à installer (laisser vide pour aucun utilisateur) : " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "Cet utilisateur doit-il être un superutilisateur (sudoer) ?" - -msgid "Select a timezone" -msgstr "Sélectionner un fuseau horaire" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "Souhaitez-vous utiliser GRUB comme chargeur de démarrage au lieu de systemd-boot ?" - -msgid "Choose a bootloader" -msgstr "Choisir un chargeur de démarrage" - -msgid "Choose an audio server" -msgstr "Choisir un serveur audio" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Seuls les paquets tels que base, base-devel, linux, linux-firmware, efibootmgr et les paquets de profil optionnels sont installés." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "Si vous désirez un navigateur Web, tel que firefox ou chrome, vous pouvez le spécifier dans l'invite suivante." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "Saisir les paquets supplémentaires à installer (séparés par des espaces, vide pour ignorer) : " - -msgid "Copy ISO network configuration to installation" -msgstr "Copier la configuration réseau ISO dans l'installation" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "Utiliser NetworkManager (nécessaire pour configurer graphiquement Internet dans GNOME et KDE)" - -msgid "Select one network interface to configure" -msgstr "Sélectionner une interface réseau à configurer" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "Sélectionner le mode à configurer pour \"{}\" ou ignorer pour utiliser le mode par défaut \"{}\"" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "Entrer l'IP et le sous-réseau pour {} (exemple : 192.168.0.5/24) : " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "Entrer l'adresse IP de votre passerelle (routeur) ou laisser vide pour aucune : " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "Entrer vos serveurs DNS (séparés par des espaces, vide pour aucun) : " - -msgid "Select which filesystem your main partition should use" -msgstr "Sélectionner le système de fichiers que votre partition principale doit utiliser" - -msgid "Current partition layout" -msgstr "Disposition actuelle des partitions" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"Sélectionner quoi faire avec\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "Entrer un type de système de fichiers souhaité pour la partition" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "Entrer l'emplacement de départ (en unités séparées : s, Go, %, etc. ; par défaut : {}) : " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "Entrer l'emplacement de fin (en unités séparées : s, Go, %, etc. ; ex : {}) : " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} contient des partitions en file d'attente, cela les supprimera, êtes-vous sûr ?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"Sélectionner par index les partitions à supprimer" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"Sélectionner par index où et quelle partition montée" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * Les points de montage de la partition sont relatifs à l'intérieur de l'installation, le démarrage serait /boot par exemple." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "Sélectionner où monter la partition (laisser vide pour supprimer le point de montage) : " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"Sélectionner la partition à masquer pour le formatage" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"Sélectionner la partition à marquer comme encrypté" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"Sélectionner la partition à marquer comme amorçable" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"Sélectionner la partition sur laquelle définir un système de fichiers" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "Entrer un type de système de fichiers souhaité pour la partition : " - -msgid "Archinstall language" -msgstr "Langue d'Archinstall" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Effacer tous les lecteurs sélectionnés et utiliser une disposition de partition par défaut optimale" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Sélectionner ce qu'il faut faire avec chaque lecteur individuel (suivi de l'utilisation de la partition)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "Sélectionner ce que vous souhaitez faire avec les périphériques de bloc sélectionnés" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "Ceci est une liste préprogrammée de profiles, ils pourraient faciliter l'installation d'outils comme les environnements de bureau" - -msgid "Select keyboard layout" -msgstr "Sélectionner la disposition du clavier" - -msgid "Select one of the regions to download packages from" -msgstr "Sélectionner l'une des régions depuis lesquelles télécharger les paquets" - -msgid "Select one or more hard drives to use and configure" -msgstr "Sélectionner un ou plusieurs disques durs à utiliser et à configurer" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "Pour une meilleure compatibilité avec votre matériel AMD, vous pouvez utiliser les options entièrement open source ou AMD / ATI." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "Pour une compatibilité optimale avec votre matériel Intel, vous pouvez utiliser les options entièrement open source ou Intel.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Pour une meilleure compatibilité avec votre matériel Nvidia, vous pouvez utiliser le pilote propriétaire Nvidia.\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Sélectionner un pilote graphique ou laisser vide pour installer tous les pilotes open-source" - -msgid "All open-source (default)" -msgstr "Tout open-source (par défaut)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "Choisir les noyaux à utiliser ou laisser vide pour \"{}\" par défaut" - -msgid "Choose which locale language to use" -msgstr "Choisir la langue locale à utiliser" - -msgid "Choose which locale encoding to use" -msgstr "Choisir quel encodage de paramètres régionaux utiliser" - -msgid "Select one of the values shown below: " -msgstr "Sélectionner l'une des valeurs ci-dessous : " - -msgid "Select one or more of the options below: " -msgstr "Sélectionner une ou plusieurs des options ci-dessous : " - -msgid "Adding partition...." -msgstr "Ajout de la partition...." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "Vous devez entrer un type de fs valide pour continuer. Voir `man parted` pour les types de fs valides." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Erreur : la liste des profils sur l'URL \"{}\" a entraîné :" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "Erreur : Impossible de décoder le résultat \"{}\" en tant que JSON :" - -msgid "Keyboard layout" -msgstr "Disposition du clavier" - -msgid "Mirror region" -msgstr "Région miroir" - -msgid "Locale language" -msgstr "Langue locale" - -msgid "Locale encoding" -msgstr "Encodage des paramètres régionaux" - -msgid "Drive(s)" -msgstr "Disques" - -msgid "Disk layout" -msgstr "Disposition du disque" - -msgid "Encryption password" -msgstr "Mot de passe de chiffrement" - -msgid "Swap" -msgstr "Swap" - -msgid "Bootloader" -msgstr "Chargeur de démarrage" - -msgid "Root password" -msgstr "Mot de passe root" - -msgid "Superuser account" -msgstr "Compte superutilisateur" - -msgid "User account" -msgstr "Compte utilisateur" - -msgid "Profile" -msgstr "Profil" - -msgid "Audio" -msgstr "Audio" - -msgid "Kernels" -msgstr "Noyaux" - -msgid "Additional packages" -msgstr "Paquets supplémentaires" - -msgid "Network configuration" -msgstr "Configurer le réseau" - -msgid "Automatic time sync (NTP)" -msgstr "Synchronisation automatique de l'heure (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "Installer ({} configuration(s) manquante(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 "" -"Vous avez décidé d'ignorer la sélection du disque dur\n" -"et vous utiliserez la configuration de disque montée sur {} (expérimental)\n" -"ATTENTION : Archinstall ne vérifiera pas l'adéquation de cette configuration\n" -"Souhaitez-vous continuer ?" - -msgid "Re-using partition instance: {}" -msgstr "Réutilisation de l'instance de partition : {}" - -msgid "Create a new partition" -msgstr "Créer une nouvelle partition" - -msgid "Delete a partition" -msgstr "Supprimer une partition" - -msgid "Clear/Delete all partitions" -msgstr "Effacer/Supprimer toutes les partitions" - -msgid "Assign mount-point for a partition" -msgstr "Attribuer un point de montage pour une partition" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "Marquer/Démarquer une partition à formater (efface les données)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "Marquer/Démarquer une partition comme encrypté" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "Marquer/Démarquer une partition comme amorçable (automatique pour /boot)" - -msgid "Set desired filesystem for a partition" -msgstr "Définir le système de fichiers souhaité pour une partition" - -msgid "Abort" -msgstr "Abandonner" - -msgid "Hostname" -msgstr "Nom d'hôte" - -msgid "Not configured, unavailable unless setup manually" -msgstr "Non configuré, indisponible sauf configuration manuelle" - -msgid "Timezone" -msgstr "Fuseau horaire" - -msgid "Set/Modify the below options" -msgstr "Définir/Modifier les options ci-dessous" - -msgid "Install" -msgstr "Installer" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"Utiliser ESC pour ignorer\n" -"\n" - -msgid "Suggest partition layout" -msgstr "Suggérer la disposition des partitions" - -msgid "Enter a password: " -msgstr "Entrer un mot de passe : " - -msgid "Enter a encryption password for {}" -msgstr "Entrer un mot de passe de chiffrement pour {}" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "Entrer le mot de passe de chiffrement du disque (laisser vide pour aucun chiffrement) : " - -msgid "Create a required super-user with sudo privileges: " -msgstr "Créer un super-utilisateur requis avec les privilèges sudo : " - -msgid "Enter root password (leave blank to disable root): " -msgstr "Entrer le mot de passe root (laisser vide pour désactiver root) : " - -msgid "Password for user \"{}\": " -msgstr "Mot de passe pour l'utilisateur \"{}\" : " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "Vérifier que des paquets supplémentaires existent (cela peut prendre quelques secondes)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "Souhaitez-vous utiliser la synchronisation automatique de l'heure (NTP) avec les serveurs de temps par défaut ?\n" - -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 "" -"Le temps matériel et d'autres étapes de post-configuration peuvent être nécessaires pour que NTP fonctionne.\n" -"Pour plus d'informations, veuillez consulter le wiki Arch" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "Entrer un nom d'utilisateur pour créer un utilisateur supplémentaire (laisser vide pour ignorer) : " - -msgid "Use ESC to skip\n" -msgstr "Utiliser ESC pour ignorer\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -"Choisir un objet dans la liste et sélectionner l'une des actions disponibles pour qu'il s'exécute" - -msgid "Cancel" -msgstr "Annuler" - -msgid "Confirm and exit" -msgstr "Confirmer et quitter" - -msgid "Add" -msgstr "Ajouter" - -msgid "Copy" -msgstr "Copier" - -msgid "Edit" -msgstr "Modifier" - -msgid "Delete" -msgstr "Supprimer" - -msgid "Select an action for '{}'" -msgstr "Sélectionner une action pour '{}'" - -msgid "Copy to new key:" -msgstr "Copier vers une nouvelle clé :" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "Type de carte réseau inconnu : {}. Les valeurs possibles sont {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"Voici la configuration choisie :" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Pacman est déjà en cours d'exécution, attendez au maximum 10 minutes pour qu'il se termine." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "Le verrou pacman préexistant n'a jamais été fermé. Veuillez nettoyer toutes les sessions pacman existantes avant d'utiliser archinstall." - -msgid "Choose which optional additional repositories to enable" -msgstr "Choisir les dépôts supplémentaires en option à activer" - -msgid "Add a user" -msgstr "Ajouter un utilisateur" - -msgid "Change password" -msgstr "Changer le mot de passe" - -msgid "Promote/Demote user" -msgstr "Promouvoir/Rétrograder l'utilisateur" - -msgid "Delete User" -msgstr "Supprimer l'utilisateur" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"Définir un nouveau utilisateur\n" - -msgid "User Name : " -msgstr "Nom d'utilisateur : " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "Cet utilisateur {} doit-il être un superutilisateur (sudoer) ?" - -msgid "Define users with sudo privilege: " -msgstr "Définir les utilisateurs avec le privilège sudo : " - -msgid "No network configuration" -msgstr "Aucune configuration réseau" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "Définir les sous-volumes souhaités sur une partition btrfs" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"Sélectionner la partition sur laquelle définir les sous-volumes" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "Gérer les sous-volumes btrfs pour la partition actuelle" - -msgid "No configuration" -msgstr "Aucune configuration" - -msgid "Save user configuration" -msgstr "Enregistrer la configuration utilisateur" - -msgid "Save user credentials" -msgstr "Enregistrer les informations d'identification de l'utilisateur" - -msgid "Save disk layout" -msgstr "Enregistrer la disposition du disque" - -msgid "Save all" -msgstr "Tout enregistrer" - -msgid "Choose which configuration to save" -msgstr "Choisir la configuration à enregistrer" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "Saisir un répertoire pour la ou les configuration(s) à enregistrer : " - -msgid "Not a valid directory: {}" -msgstr "Répertoire non valide : {}" - -msgid "The password you are using seems to be weak," -msgstr "Le mot de passe que vous utilisez semble faible," - -msgid "are you sure you want to use it?" -msgstr "êtes-vous sûr de vouloir l'utiliser ?" - -msgid "Optional repositories" -msgstr "Dépôts supplémentaires" - -msgid "Save configuration" -msgstr "Enregistrer la configuration" - -msgid "Missing configurations:\n" -msgstr "Configurations manquantes :\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "Le mot de passe root ou au moins 1 superutilisateur doit être spécifié" - -msgid "Manage superuser accounts: " -msgstr "Gérer les comptes de superutilisateur : " - -msgid "Manage ordinary user accounts: " -msgstr "Gérer les comptes d'utilisateurs ordinaires : " - -msgid " Subvolume :{:16}" -msgstr " Sous-volume : {:16}" - -msgid " mounted at {:16}" -msgstr " monté à {:16}" - -msgid " with option {}" -msgstr " avec option {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -" Remplir les valeurs souhaitées pour un nouveau sous-volume \n" - -msgid "Subvolume name " -msgstr "Nom du sous-volume " - -msgid "Subvolume mountpoint" -msgstr "Point de montage du sous-volume" - -msgid "Subvolume options" -msgstr "Options de sous-volume" - -msgid "Save" -msgstr "Sauvegarder" - -msgid "Subvolume name :" -msgstr "Nom du sous-volume :" - -msgid "Select a mount point :" -msgstr "Sélectionner un point de montage :" - -msgid "Select the desired subvolume options " -msgstr "Sélectionner les options de sous-volume souhaitées " - -msgid "Define users with sudo privilege, by username: " -msgstr "Définir les utilisateurs avec le privilège sudo, par nom d'utilisateur : " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] Un fichier journal a été créé ici : {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "Souhaitez-vous utiliser des sous-volumes BTRFS avec une structure par défaut ?" - -msgid "Would you like to use BTRFS compression?" -msgstr "Souhaitez-vous utiliser la compression BTRFS ?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "Souhaitez-vous créer une partition séparée pour /home ?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "Les disques sélectionnés n'ont pas la capacité minimale requise pour une suggestion automatique\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "Capacité minimale pour la partition /home : {} Go\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Capacité minimale pour la partition Arch Linux : {} Go" - -msgid "Continue" -msgstr "Poursuivre" - -msgid "yes" -msgstr "oui" - -msgid "no" -msgstr "non" - -msgid "set: {}" -msgstr "définir : {}" - -msgid "Manual configuration setting must be a list" -msgstr "Le paramètre de configuration manuelle doit être une liste" - -msgid "No iface specified for manual configuration" -msgstr "Aucun iface spécifié pour la configuration manuelle" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "La configuration manuelle de la carte réseau sans DHCP automatique nécessite une adresse IP" - -msgid "Add interface" -msgstr "Ajouter une interface" - -msgid "Edit interface" -msgstr "Modifier l'interface" - -msgid "Delete interface" -msgstr "Supprimer l'interface" - -msgid "Select interface to add" -msgstr "Sélectionner l'interface à ajouter" - -msgid "Manual configuration" -msgstr "Configuration manuelle" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "Marquer/Démarquer une partition comme compressée (btrfs uniquement)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "Le mot de passe que vous utilisez semble faible, êtes-vous sûr de vouloir l'utiliser ?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "Fournit une sélection d'environnements de bureau et de gestionnaires de fenêtres en mosaïque, par ex. gnome, kde, sway" - -msgid "Select your desired desktop environment" -msgstr "Sélectionner l'environnement de bureau souhaité" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "Une installation très basique qui vous permet de personnaliser Arch Linux comme bon vous semble." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "Fournit une sélection de divers paquets de serveur à installer et à activer, par ex. httpd, nginx, mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "Choisir les serveurs à installer, s'il n'y en a pas, alors une installation minimale sera effectuée" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "Installe un système minimal ainsi que les pilotes graphiques et xorg." - -msgid "Press Enter to continue." -msgstr "Appuyer sur Entrée pour continuer." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "Souhaitez-vous chrooter dans l'installation nouvellement créée et effectuer la configuration post-installation ?" - -msgid "Are you sure you want to reset this setting?" -msgstr "Voulez-vous vraiment réinitialiser ce paramètre ?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "Sélectionner un ou plusieurs disques durs à utiliser et à configurer\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "Toute modification du paramètre existant réinitialisera la disposition du disque !" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "Si vous réinitialisez la sélection du disque dur, cela réinitialisera également la disposition actuelle du disque. Êtes-vous sûr ?" - -msgid "Save and exit" -msgstr "Sauvegarder et quitter" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"contient des partitions en file d'attente, cela les supprimera, êtes-vous sûr ?" - -msgid "No audio server" -msgstr "Pas de serveur audio" - -msgid "(default)" -msgstr "(par défaut)" - -msgid "Use ESC to skip" -msgstr "Utiliser ESC pour ignorer" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"Utiliser CTRL+C pour réinitialiser la sélection actuelle\n" -"\n" - -msgid "Copy to: " -msgstr "Copier vers : " - -msgid "Edit: " -msgstr "Modifier : " - -msgid "Key: " -msgstr "Clé : " - -msgid "Edit {}: " -msgstr "Modifier {} : " - -msgid "Add: " -msgstr "Ajouter : " - -msgid "Value: " -msgstr "Valeur : " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "Vous pouvez ignorer la sélection d'un lecteur et le partitionnement et utiliser n'importe quelle configuration de lecteur montée sur /mnt (expérimental)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "Sélectionner l'un des disques ou ignorer et utiliser /mnt par défaut" - -msgid "Select which partitions to mark for formatting:" -msgstr "Sélectionner la partition à masquer pour le formatage:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "Utiliser HSM pour déverrouiller le lecteur chiffré" - -msgid "Device" -msgstr "Dispositif" - -msgid "Size" -msgstr "Taille" - -msgid "Free space" -msgstr "Espace libre" - -msgid "Bus-type" -msgstr "Type de bus" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "Le mot de passe root ou au moins 1 utilisateur avec des privilèges sudo doit être spécifié" - -msgid "Enter username (leave blank to skip): " -msgstr "Entrer le nom d'utilisateur (laisser vide pour ignorer) : " - -msgid "The username you entered is invalid. Try again" -msgstr "Le nom d'utilisateur que vous avez saisi n'est pas valide. Réessayer" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "\"{}\" devrait-il être un superutilisateur (sudo) ?" - -msgid "Select which partitions to encrypt" -msgstr "Sélectionner les partitions à encrypter" - -msgid "very weak" -msgstr "très faible" - -msgid "weak" -msgstr "faible" - -msgid "moderate" -msgstr "modéré" - -msgid "strong" -msgstr "fort" - -msgid "Add subvolume" -msgstr "Ajouter un sous-volume" - -msgid "Edit subvolume" -msgstr "Modifier le sous-volume" - -msgid "Delete subvolume" -msgstr "Supprimer le sous-volume" - -msgid "Configured {} interfaces" -msgstr "Interfaces {} configurées" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "Cette option active le nombre de téléchargements parallèles qui peuvent se produire pendant l'installation" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"Saisir le nombre de téléchargements parallèles à activer.\n" -" (Entrer une valeur comprise entre 1 et {})\n" -"Note :" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - Valeur maximale : {} (Autorise {} téléchargements parallèles, autorise {} téléchargements à la fois)" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - Valeur minimale : 1 (Autorise 1 téléchargement parallèle, autorise 2 téléchargements à la fois)" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - Désactiver/Défaut : 0 (Désactive le téléchargement parallèle, n'autorise qu'un seul téléchargement à la fois)" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "Entrée invalide ! Réessayer avec une entrée valide [1 pour {max_downloads}, ou 0 pour désactiver]" - -msgid "Parallel Downloads" -msgstr "Téléchargements parallèles" - -msgid "ESC to skip" -msgstr "ESC pour ignorer" - -msgid "CTRL+C to reset" -msgstr "CTRL+C pour réinitialiser" - -msgid "TAB to select" -msgstr "TAB pour sélectionner" - -msgid "[Default value: 0] > " -msgstr "[Valeur par défaut : 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "Pour pouvoir utiliser cette traduction, veuillez installer manuellement une police prenant en charge la langue." - -msgid "The font should be stored as {}" -msgstr "La police d'écriture doit être stockée sous {}" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "Archinstall nécessite des privilèges root pour s'exécuter. Voir --help pour plus d'informations." - -msgid "Select an execution mode" -msgstr "Sélectionner un mode d'exécution" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "Impossible de récupérer le profil à partir de l'URL spécifiée : {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "Les profils doivent avoir un nom unique, mais des définitions de profil avec un nom en double ont été trouvées : {}" - -msgid "Select one or more devices to use and configure" -msgstr "Sélectionner un ou plusieurs périphériques à utiliser et à configurer" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "Si vous réinitialisez la sélection de périphérique, cela réinitialisera également la disposition actuelle du disque. Etes-vous sûr ?" - -msgid "Existing Partitions" -msgstr "Partitions existantes" - -msgid "Select a partitioning option" -msgstr "Sélectionner une option de partitionnement" - -msgid "Enter the root directory of the mounted devices: " -msgstr "Entrer le répertoire racine des périphériques montés : " - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "Capacité minimale pour la partition /home : {} Gio\n" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "Capacité minimale pour la partition Arch Linux : {} Gio" - -msgid "This is a list of pre-programmed profiles_bck, they might make it easier to install things like desktop environments" -msgstr "Ceci est une liste préprogrammée de profiles_bck, ils pourraient faciliter l'installation de choses comme les environnements de bureau" - -msgid "Current profile selection" -msgstr "Sélection du profil actuel" - -msgid "Remove all newly added partitions" -msgstr "Supprimer toutes les partitions nouvellement ajoutées" - -msgid "Assign mountpoint" -msgstr "Attribuer un point de montage" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "Marquer/Démarquer à formater (efface les données)" - -msgid "Mark/Unmark as bootable" -msgstr "Marquer/Démarquer comme amorçable" - -msgid "Change filesystem" -msgstr "Changer le système de fichiers" - -msgid "Mark/Unmark as compressed" -msgstr "Marquer/Démarquer comme compressé" - -msgid "Set subvolumes" -msgstr "Définir des sous-volumes" - -msgid "Delete partition" -msgstr "Supprimer la partition" - -msgid "Partition" -msgstr "Partition" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "Cette partition est actuellement encrypté, pour la formater, un système de fichiers doit être spécifié" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "Les points de montage de partition sont relatifs à l'intérieur de l'installation, le démarrage serait /boot par exemple." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "Si le point de montage /boot est défini, la partition sera également marquée comme amorçable." - -msgid "Mountpoint: " -msgstr "Point de montage : " - -msgid "Current free sectors on device {}:" -msgstr "Secteurs actuellement libres sur le périphérique {} :" - -msgid "Total sectors: {}" -msgstr "Total des secteurs : {}" - -msgid "Enter the start sector (default: {}): " -msgstr "Saisir le secteur de début (par défaut : {}) : " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "Saisir le secteur de fin de la partition (pourcentage ou numéro de bloc, par défaut : {}) : " - -msgid "This will remove all newly added partitions, continue?" -msgstr "Cela supprimera toutes les partitions nouvellement ajoutées, voulez-vous continuer ?" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "Gestion des partitions : {}" - -#, python-brace-format -msgid "Total length: {}" -msgstr "Taille total : {}" - -msgid "Encryption type" -msgstr "Type de chiffrement" - -msgid "Iteration time" -msgstr "" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "" - -msgid "Higher values increase security but slow down boot time" -msgstr "Des valeurs plus grandes peuvent agrandir la sécurité, mais peuvent ralentir le temps de démarrage" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "Par défaut: 10000ms, range recommandé: 1000-60000" - -msgid "Iteration time cannot be empty" -msgstr "Le temps d'itération ne peut pas être vide" - -msgid "Iteration time must be at least 100ms" -msgstr "Le temps d'itération doit être d'au moins 100 ms" - -msgid "Iteration time must be at most 120000ms" -msgstr "Le temps d'itération doit être au maximum 120000 ms" - -msgid "Please enter a valid number" -msgstr "S'il vous plaît entrez un nombre valide" - -msgid "Partitions" -msgstr "Partitions" - -msgid "No HSM devices available" -msgstr "Aucun périphérique HSM disponible" - -msgid "Partitions to be encrypted" -msgstr "Partitions à encrypter" - -msgid "Select disk encryption option" -msgstr "Sélectionner l'option de chiffrement du disque" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "Sélectionner un périphérique FIDO2 à utiliser pour HSM" - -msgid "Use a best-effort default partition layout" -msgstr "Utiliser une disposition de partition optimale par défaut" - -msgid "Manual Partitioning" -msgstr "Partitionnement manuel" - -msgid "Pre-mounted configuration" -msgstr "Configuration pré-montée" - -msgid "Unknown" -msgstr "Inconnu" - -msgid "Partition encryption" -msgstr "Chiffrement des partitions" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr " ! Formatage {} dans " - -msgid "← Back" -msgstr "← Retour" - -msgid "Disk encryption" -msgstr "Chiffrement du disque" - -msgid "Configuration" -msgstr "Configuration" - -msgid "Password" -msgstr "Mot de passe" - -msgid "All settings will be reset, are you sure?" -msgstr "Tous les paramètres seront réinitialisés, êtes-vous sûr ?" - -msgid "Back" -msgstr "Retour" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "Veuillez choisir le greeter (interface de connexion) à installer pour les profils choisis : {}" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "Type d'environnement : {}" - -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 "Le pilote Nvidia propriétaire n'est pas pris en charge par Sway. Il est probable que vous rencontriez des problèmes, êtes-vous d'accord avec cela ?" - -msgid "Installed packages" -msgstr "Paquets installés" - -msgid "Add profile" -msgstr "Ajouter un profil" - -msgid "Edit profile" -msgstr "Modifier le profil" - -msgid "Delete profile" -msgstr "Supprimer le profil" - -msgid "Profile name: " -msgstr "Nom de profil : " - -msgid "The profile name you entered is already in use. Try again" -msgstr "Le nom de profil que vous avez saisi est déjà utilisé. Essayer à nouveau" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "Saisir les paquets à installer avec ce profil (séparés par des espaces, vide pour ignorer) : " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "Saisir les services à activer avec ce profil (séparés par des espaces, vide pour ignorer) : " - -msgid "Should this profile be enabled for installation?" -msgstr "Ce profil doit-il être activé pour l'installation ?" - -msgid "Create your own" -msgstr "Créer le votre" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"Sélectionner un pilote graphique ou laisser vide pour installer tous les pilotes open source" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway a besoin d'accéder à votre espace (ensemble de périphériques matériels : clavier, souris, etc.)" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Choisir une option pour permettre à Sway d'accéder à votre matériel" - -msgid "Graphics driver" -msgstr "Pilote graphique" - -msgid "Greeter" -msgstr "Greeter (interface de connexion)" - -msgid "Please chose which greeter to install" -msgstr "Veuillez choisir le greeter (interface de connexion) à installer" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "Il s'agit d'une liste préprogrammée de default_profiles par défaut" - -msgid "Disk configuration" -msgstr "Configuration du disque" - -msgid "Profiles" -msgstr "Profils" - -msgid "Finding possible directories to save configuration files ..." -msgstr "Recherche des répertoires possibles pour enregistrer les fichiers de configuration..." - -msgid "Select directory (or directories) for saving configuration files" -msgstr "Sélectionner le répertoire (ou les répertoires) pour enregistrer les fichiers de configuration" - -msgid "Add a custom mirror" -msgstr "Ajouter un miroir personnalisé" - -msgid "Change custom mirror" -msgstr "Changer le miroir personnalisé" - -msgid "Delete custom mirror" -msgstr "Supprimer le miroir personnalisé" - -msgid "Enter name (leave blank to skip): " -msgstr "Entrer le nom (laisser vide pour ignorer) : " - -msgid "Enter url (leave blank to skip): " -msgstr "Entrer l'URL (laisser vide pour ignorer) : " - -msgid "Select signature check option" -msgstr "Sélectionner l'option de vérification de signature" - -msgid "Select signature option" -msgstr "Sélectionner l'option de signature" - -msgid "Custom mirrors" -msgstr "Miroirs personnalisés" - -msgid "Defined" -msgstr "Défini" - -msgid "Save user configuration (including disk layout)" -msgstr "Enregistrer la configuration utilisateur (y compris la disposition du disque)" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"Saisir un répertoire pour la/les configuration(s) à enregistrer (complétion par tabulation activée)\n" -"Entrer le nom du répertoire de sauvegarde : " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"Voulez-vous enregistrer {} fichier(s) de configuration à l'emplacement suivant ?\n" -"\n" -"{}" - -msgid "Saving {} configuration files to {}" -msgstr "Enregistrement de {} fichiers de configuration dans {}" - -msgid "Mirrors" -msgstr "Miroirs" - -msgid "Mirror regions" -msgstr "Régions miroir" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - Valeur maximale : {} (Autorise {} téléchargements parallèles, autorise {max_downloads+1} téléchargements à la fois)" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "Entrée invalide ! Réessayer avec une entrée valide [1 pour {}, ou 0 pour désactiver]" - -msgid "Locales" -msgstr "Paramètres régionaux" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "Utiliser NetworkManager (nécessaire pour configurer graphiquement internet dans GNOME et KDE)" - -msgid "Total: {} / {}" -msgstr "Total (taille) : {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "Toutes les valeurs saisies peuvent être saccompagnées par une unité : B, KB, KiB, MB, MiB..." - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "Si aucune unité n'est fournie, la valeur est interprétée comme des secteurs\"" - -msgid "Enter start (default: sector {}): " -msgstr "Saisir le secteur de début (par défaut : secteur {}) : " - -msgid "Enter end (default: {}): " -msgstr "Saisir le secteur de fin (par défaut : secteur {}) : " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "Impossible de déterminer les appareils fido2. Est-ce que libfido2 est installé ?" - -msgid "Path" -msgstr "Chemin" - -msgid "Manufacturer" -msgstr "Fabricant" - -msgid "Product" -msgstr "Produit" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "Configuration invalide : {error}" - -msgid "Type" -msgstr "Type" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "Cette option active le nombre de téléchargements parallèles pouvant avoir lieu lors des téléchargements des paquets" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"Saisir le nombre de téléchargements parallèles à activer.\n" -"\n" -"Note :\n" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - Valeur maximale recommandée : {} (Autorise {} téléchargements parallèles à la fois)" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - Désactiver/Par défaut : 0 (Désactive le téléchargement parallèle, autorise un seul téléchargement à la fois)\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "Entrée invalide ! Réessayer avec une entrée valide [ou 0 pour désactiver]" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Hyprland a besoin d'accéder à votre espace (ensemble de périphériques matériels, par exemple clavier, souris, etc)" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Choisir une option pour donner à Hyprland l'accès à votre matériel" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "Toutes les valeurs saisies peuvent être accompagnées par une unité : %, B, KB, KiB, MB, MiB..." - -msgid "Would you like to use unified kernel images?" -msgstr "Souhaitez-vous utiliser des images de noyau unifiées ?" - -msgid "Unified kernel images" -msgstr "Images du noyau unifiées" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "En attente de la fin de la synchronisation de l'heure (timedatectl show) de finir." - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "La synchronisation de l'heure ne se termine pas, veuillez consulter la documentation afin de trouver des solutions de contournement : https://archinstall.readthedocs.io/" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "Ignorer l'attente de la synchronisation automatique de l'heure (cela peut entraîner des problèmes si l'heure n'est pas synchronisée lors de l'installation)" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "En attente de la fin de la synchronisation du trousseau de clés d'Arch Linux (archlinux-keyring-wkd-sync) de finir." - -msgid "Selected profiles: " -msgstr "Profils sélectionnés : " - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "La synchronisation de l'heure ne se termine pas, veuillez consulter la documentation afin de trouver des solutions de contournement : https://archinstall.readthedocs.io/" - -msgid "Mark/Unmark as nodatacow" -msgstr "Marquer/Démarquer comme nodatacow" - -msgid "Would you like to use compression or disable CoW?" -msgstr "Souhaitez-vous utiliser la compression ou désactiver la copie à l'écriture (CoW) ?" - -msgid "Use compression" -msgstr "Utiliser la compression" - -msgid "Disable Copy-on-Write" -msgstr "Désactiver la copie à l'écriture (CoW)" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "Fournit une sélection d'environnements de bureau et de gestionnaires de fenêtres en mosaïque, par ex. GNOME, KDE Plasma, Sway" - -#, python-brace-format -msgid "Configuration type: {}" -msgstr "Type de configuration : {}" - -msgid "LVM configuration type" -msgstr "Type de configuration LVM" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "Le chiffrement de disque LVM avec plus de 2 partitions n'est actuellement pas pris en charge" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "Utiliser NetworkManager (nécessaire pour configurer internet graphiquement dans GNOME et KDE Plasma)" - -msgid "Select a LVM option" -msgstr "Sélectionner une option LVM" - -msgid "Partitioning" -msgstr "Partitionnement" - -msgid "Logical Volume Management (LVM)" -msgstr "Gestion des volumes logiques (LVM)" - -msgid "Physical volumes" -msgstr "Volumes physiques" - -msgid "Volumes" -msgstr "Volumes" - -msgid "LVM volumes" -msgstr "Volumes LVM" - -msgid "LVM volumes to be encrypted" -msgstr "Volumes LVM à encrypter" - -msgid "Select which LVM volumes to encrypt" -msgstr "Sélectionner les volumes LVM à encrypter" - -msgid "Default layout" -msgstr "Disposition par défaut" - -msgid "No Encryption" -msgstr "Pas de chiffrement" - -msgid "LUKS" -msgstr "Configuration de la clé unifiée Linux (LUKS)" - -msgid "LVM on LUKS" -msgstr "LVM sur LUKS (sécurité maximale)" - -msgid "LUKS on LVM" -msgstr "LUKS sur LVM (flexibilité)" - -msgid "Yes" -msgstr "Oui" - -msgid "No" -msgstr "Non" - -msgid "Archinstall help" -msgstr "Aide pour Archinstall" - -msgid " (default)" -msgstr " (par défaut)" - -msgid "Press Ctrl+h for help" -msgstr "Appuyer sur Ctrl+h pour obtenir de l'aide" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "Choisir une option pour permettre à Sway d'accéder à votre matériel" - -msgid "Seat access" -msgstr "Accès au siège" - -msgid "Mountpoint" -msgstr "Point de montage" - -msgid "HSM" -msgstr "Gestion hiérarchique du stockage (HSM)" - -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "Entrer le mot de passe de chiffrement du disque (laisser vide pour aucun chiffrement)" - -msgid "Disk encryption password" -msgstr "Mot de passe de chiffrement du disque" - -msgid "Partition - New" -msgstr "Partition - Nouveau" - -msgid "Filesystem" -msgstr "Système de fichiers" - -msgid "Invalid size" -msgstr "Taille invalide" - -msgid "Start (default: sector {}): " -msgstr "Démarrer (par défaut : secteur {}): " - -msgid "End (default: {}): " -msgstr "Fin (par défaut : {}): " - -msgid "Subvolume name" -msgstr "Nom du sous-volume" - -msgid "Disk configuration type" -msgstr "Type de configuration du disque" - -msgid "Root mount directory" -msgstr "Répertoire de montage racine" - -msgid "Select language" -msgstr "Sélectionner la langue" - -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "Écrire les paquets supplémentaires à installer (séparés par des espaces, laisser vide pour ignorer)" - -msgid "Invalid download number" -msgstr "Numéro de téléchargement invalide" - -msgid "Number downloads" -msgstr "Nombre de téléchargements" - -msgid "The username you entered is invalid" -msgstr "Le nom d'utilisateur que vous avez saisi est invalide" - -msgid "Username" -msgstr "Nom d'utilisateur" - -#, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "Le \"{}\" doit-il être un superutilisateur (sudo) ?\n" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "Vous devez entrer une adresse IP valide en mode IP-config" - -msgid "Modes" -msgstr "Modes" - -msgid "IP address" -msgstr "Adresse IP" - -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "Entrer l'adresse IP de votre passerelle (routeur) (laisser vide pour aucun)" - -msgid "Gateway address" -msgstr "Adresse de passerelle" - -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "Entrer vos serveurs DNS séparés par des espaces (laisser vide pour aucun)" - -msgid "DNS servers" -msgstr "Serveurs DNS" - -msgid "Configure interfaces" -msgstr "Configurer les interfaces" - -msgid "Kernel" -msgstr "Noyau" - -msgid "UEFI is not detected and some options are disabled" -msgstr "L'UEFI n'est pas détecté et certaines options sont désactivées" - -msgid "Info" -msgstr "Info" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "Le pilote propriétaire Nvidia n'est pas supporté par Sway." - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "Il est probable que vous rencontriez des problèmes, êtes-vous d'accord avec cela ?" - -msgid "Main profile" -msgstr "Profil principal" - -msgid "Confirm password" -msgstr "Confirmer le mot de passe" - -msgid "The confirmation password did not match, please try again" -msgstr "Le mot de passe de confirmation ne correspond pas, veuillez réessayer" - -msgid "Not a valid directory" -msgstr "Ce n'est pas un répertoire valide" - -msgid "Would you like to continue?" -msgstr "Voulez-vous continuer ?" - -msgid "Directory" -msgstr "Répertoire" - -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "Entrer un répertoire pour que la(les) configuration(s) soit(ent) enregistrée(s) (complétion par tabulation activée)" - -#, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "Voulez-vous enregistrer le(s) fichier(s) de configuration dans {} ?" - -msgid "Enabled" -msgstr "Activé" - -msgid "Disabled" -msgstr "Désactivé" - -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "Veuillez soumettre ce problème (et fichier) à https://github.com/archlinux/archinstall/issues" - -msgid "Mirror name" -msgstr "Nom du miroir" - -msgid "Url" -msgstr "Url" - -msgid "Select signature check" -msgstr "Sélectionner la vérification de la signature" - -msgid "Select execution mode" -msgstr "Sélectionner le mode d'exécution" - -msgid "Press ? for help" -msgstr "Appuyer sur ? pour obtenir de l'aide" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "Choisir une option pour donner à Hyprland l'accès à votre matériel" - -msgid "Additional repositories" -msgstr "Dépôts supplémentaires" - -msgid "NTP" -msgstr "NTP" - -msgid "Swap on zram" -msgstr "Swap sur zram" - -msgid "Name" -msgstr "Nom" - -msgid "Signature check" -msgstr "Vérification de la signature" - -#, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "Segment d’espace libre sélectionné sur le périphérique {} :" - -#, python-brace-format -msgid "Size: {} / {}" -msgstr "Taille : {} / {}" - -#, python-brace-format -msgid "Size (default: {}): " -msgstr "Taille (par défaut : {}): " - -msgid "HSM device" -msgstr "Périphérique HSM" - -msgid "Some packages could not be found in the repository" -msgstr "Certains paquets sont introuvables dans le dépôt" - -msgid "User" -msgstr "Utilisateur" - -msgid "The specified configuration will be applied" -msgstr "La configuration spécifiée sera appliquée" - -msgid "Wipe" -msgstr "Effacer" - -msgid "Mark/Unmark as XBOOTLDR" -msgstr "Marquer/Démarquer comme XBOOTLDR" - -msgid "Loading packages..." -msgstr "Chargement des paquets..." - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "Sélectionner les paquets à installer en supplément dans la liste ci-dessous" - -msgid "Add a custom repository" -msgstr "Ajouter un dépôt personnalisé" - -msgid "Change custom repository" -msgstr "Modifier le dépôt personnalisé" - -msgid "Delete custom repository" -msgstr "Supprimer le dépôt personnalisé" - -msgid "Repository name" -msgstr "Nom du dépôt" - -msgid "Add a custom server" -msgstr "Ajouter un serveur personnalisé" - -msgid "Change custom server" -msgstr "Modifier le serveur personnalisé" - -msgid "Delete custom server" -msgstr "Supprimer le serveur personnalisé" - -msgid "Server url" -msgstr "URL du serveur" - -msgid "Select regions" -msgstr "Sélectionner des régions" - -msgid "Add custom servers" -msgstr "Ajouter des serveurs personnalisés" - -msgid "Add custom repository" -msgstr "Ajouter un dépôt personnalisé" - -msgid "Loading mirror regions..." -msgstr "Chargement des régions miroirs..." - -msgid "Mirrors and repositories" -msgstr "Miroirs et dépôts" - -msgid "Selected mirror regions" -msgstr "Régions de miroirs sélectionnées" - -msgid "Custom servers" -msgstr "Serveurs personnalisés" - -msgid "Custom repositories" -msgstr "Dépôts personnalisés" - -msgid "Only ASCII characters are supported" -msgstr "Seuls les caractères ASCII sont pris en charge" - -msgid "Show help" -msgstr "Afficher de l'aide" - -msgid "Exit help" -msgstr "Quitter l’aide" - -msgid "Preview scroll up" -msgstr "Faire défiler l’aperçu vers le haut" - -msgid "Preview scroll down" -msgstr "Faire défiler l’aperçu vers le bas" - -msgid "Move up" -msgstr "Déplacer vers le haut" - -msgid "Move down" -msgstr "Déplacer vers le bas" - -msgid "Move right" -msgstr "Déplacer vers la droite" - -msgid "Move left" -msgstr "Déplacer vers la gauche" - -msgid "Jump to entry" -msgstr "Aller à l’entrée" - -msgid "Skip selection (if available)" -msgstr "Ignorer la sélection (si disponible)" - -msgid "Reset selection (if available)" -msgstr "Réinitialiser la sélection (si disponible)" - -msgid "Select on single select" -msgstr "Sélectionner sur sélection unique" - -msgid "Select on multi select" -msgstr "Sélectionner sur sélection multiple" - -msgid "Reset" -msgstr "Réinitialiser" - -msgid "Skip selection menu" -msgstr "Passer le menu de sélection" - -msgid "Start search mode" -msgstr "Démarrer le mode de recherche" - -msgid "Exit search mode" -msgstr "Quitter le mode de recherche" - -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "labwc a besoin d’accéder à votre siège (ensemble d’appareils matériels, c’est-à-dire clavier, souris, etc.)" - -msgid "Choose an option to give labwc access to your hardware" -msgstr "Choisir une option pour donner à labwc l’accès à votre matériel" - -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "niri a besoin d’accéder à vos périphériques (ensemble d’appareils matériels, c’est-à-dire clavier, souris, etc.)" - -msgid "Choose an option to give niri access to your hardware" -msgstr "Choisir une option pour donner à niri l’accès à votre matériel" - -msgid "Mark/Unmark as ESP" -msgstr "Marquer/Démarquer comme ESP" - -msgid "Package group:" -msgstr "Groupe de paquets :" - -#, fuzzy -msgid "Exit archinstall" -msgstr "Sortir d'Archinstall" - -#, fuzzy -msgid "Reboot system" -msgstr "Redémarrer le système" - -#, fuzzy -msgid "chroot into installation for post-installation configurations" -msgstr "Souhaitez-vous chrooter dans l'installation nouvellement créée et effectuer la configuration post-installation ?" - -msgid "Installation completed" -msgstr "Installation complétée" - -#, fuzzy -msgid "What would you like to do next?" -msgstr "Voulez-vous continuer ?" - -#, fuzzy, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "Sélectionner le mode à configurer pour \"{}\" ou ignorer pour utiliser le mode par défaut \"{}\"" - -#, fuzzy -msgid "Incorrect credentials file decryption password" -msgstr "Mot de passe de déchiffrement du disque" - -#, fuzzy -msgid "Incorrect password" -msgstr "Mot de passe incorrect" - -#, fuzzy -msgid "Credentials file decryption password" -msgstr "Mot de passe de déchiffrement du disque" - -#, fuzzy -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "Voulez-vous enregistrer le(s) fichier(s) de configuration dans {} ?" - -#, fuzzy -msgid "Credentials file encryption password" -msgstr "Mot de passe de l'encryption du disque" - -#, fuzzy, python-brace-format -msgid "Repositories: {}" -msgstr "Nom du dépôt" - -#, fuzzy -msgid "New version available" -msgstr "Nouvelle version disponible" - -#, fuzzy -msgid "Passwordless login" -msgstr "Connexion sans mot de passe" - -msgid "Second factor login" -msgstr "Connexion à deux facteurs" - -msgid "Bluetooth" -msgstr "Bluetooth" - -#, fuzzy -msgid "Would you like to configure Bluetooth?" -msgstr "Voulez-vous configurer le Bluetooth ?" - -msgid "Authentication" -msgstr "Authentification" - -msgid "Applications" -msgstr "Applications" - -msgid "U2F login method: " -msgstr "Méthode\tde connexion U2F : " - -msgid "Passwordless sudo: " -msgstr "Sudo sans mot de passe : " - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "Type de\tsnapshot Btrfs : {}" - -msgid "Syncing the system..." -msgstr "Synchronisation du système..." - -#, fuzzy -msgid "Value cannot be empty" -msgstr "La valeur ne peut pas être vide" - -msgid "Snapshot type" -msgstr "Type de snapshot" - -#, fuzzy, python-brace-format -msgid "Snapshot type: {}" -msgstr "Type de snapshot : {}" - -msgid "U2F login setup" -msgstr "Configuration de la connexion U2F" - -msgid "No U2F devices found" -msgstr "Pas de périphériques U2F trouvés" - -msgid "U2F Login Method" -msgstr "Méthode de connexion U2F" - -#, fuzzy -msgid "Enable passwordless sudo?" -msgstr "Activer sudo sans mot de passe ?" - -#, fuzzy, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "Configuration du périphérique U2F pour l'utilisateur : {}" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "Vous devez peut-être entrer le code PIN, puis toucher votre périphérique U2F pour l'enregistrer" - -msgid "Starting device modifications in " -msgstr "" - -#, fuzzy -msgid "No network connection found" -msgstr "Aucune configuration réseau" - -#, fuzzy -msgid "Would you like to connect to a Wifi?" -msgstr "Voulez-vous continuer ?" - -#, fuzzy -msgid "No wifi interface found" -msgstr "Configurer les interfaces" - -#, fuzzy -msgid "Select wifi network to connect to" -msgstr "Sélectionner une interface réseau à configurer" - -msgid "Scanning wifi networks..." -msgstr "" - -#, fuzzy -msgid "No wifi networks found" -msgstr "Aucune configuration réseau" - -msgid "Failed setting up wifi" -msgstr "" - -#, fuzzy -msgid "Enter wifi password" -msgstr "Entrer un mot de passe : " - -msgid "Ok" -msgstr "" - -#, python-brace-format -#~ msgid "Edit {origkey} :" -#~ msgstr "Modifier {origkey} :" diff --git a/examples/archinstall/archinstall/locales/ga/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/ga/LC_MESSAGES/base.mo deleted file mode 100644 index f4396bc..0000000 Binary files a/examples/archinstall/archinstall/locales/ga/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/ga/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/ga/LC_MESSAGES/base.po deleted file mode 100644 index 60b0922..0000000 --- a/examples/archinstall/archinstall/locales/ga/LC_MESSAGES/base.po +++ /dev/null @@ -1,1911 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Aindriú Mac Giolla Eoin \n" -"Language-Team: \n" -"Language: ga\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.4.4\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] Cruthaíodh logchomhad anseo: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Cuir isteach an tsaincheist seo (agus an comhad) chuig https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "Ar mhaith leat tobscoir?" - -msgid "And one more time for verification: " -msgstr "Agus uair amháin eile le haghaidh fíoraithe: " - -msgid "Would you like to use swap on zram?" -msgstr "Ar mhaith leat úsáid a bhaint as babhtáil ar zram?" - -msgid "Desired hostname for the installation: " -msgstr "An t-óstainm inmhianaithe don suiteáil: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "Ainm úsáideora le haghaidh sár-úsáideoir riachtanach le pribhléidí sudo: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "Aon úsáideoirí breise le suiteáil (fág bán gan aon úsáideoir): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "Ar cheart don úsáideoir seo a bheith ina shár-úsáideoir (sudoer)?" - -msgid "Select a timezone" -msgstr "Roghnaigh crios ama" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "Ar mhaith leat GRUB a úsáid mar bootloader in ionad systemd-boot?" - -msgid "Choose a bootloader" -msgstr "Roghnaigh lódálaí tosaithe" - -msgid "Choose an audio server" -msgstr "Roghnaigh freastalaí fuaime" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Ní shuiteáiltear ach pacáistí cosúil le pacáistí bonn, base-devel, linux, linux-firmware, efibootmgr agus próifíl roghnach." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "Más mian leat brabhsálaí gréasáin, mar firefox nó cróimiam, is féidir leat é a shonrú sa leid seo a leanas." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "Scríobh pacáistí breise le suiteáil (spás scartha, fág bán le scipeáil): " - -msgid "Copy ISO network configuration to installation" -msgstr "Cóipeáil cumraíocht líonra ISO chuig an suiteáil" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "Úsáid NetworkManager (riachtanach chun an t-idirlíon a chumrú go grafach i GNOME agus KDE)" - -msgid "Select one network interface to configure" -msgstr "Roghnaigh comhéadan líonra amháin le chumrú" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "Roghnaigh an mód a chumrú le haghaidh \"{}\" nó scipeáil chun an mód réamhshocraithe \"{}\" a úsáid" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "Cuir isteach an IP agus an subnet do {} (mar shampla: 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "Cuir isteach do sheoladh IP geata (ródaire) nó fág bán é: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "Cuir isteach do fhreastalaithe DNS (spás scartha, folamh gan aon cheann): " - -msgid "Select which filesystem your main partition should use" -msgstr "Roghnaigh cén córas comhaid ar cheart do do phríomh-dheighilt a úsáid" - -msgid "Current partition layout" -msgstr "Leagan amach na críochdheighilte reatha" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"Roghnaigh cad atá le déanamh leis\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "Cuir isteach cineál córais comhaid atá ag teastáil don deighilt" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "Cuir isteach an suíomh tosaithe (in aonaid dheighilte: s, GB, %, etc. ; réamhshocrú: {}): " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "Cuir isteach an suíomh deiridh (in aonaid dheighilte: s, GB, %, etc.; ex: {}): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} tá deighiltí ciúáilte, bainfidh sé seo iad, an bhfuil tú cinnte?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"Roghnaigh de réir innéacs cé na deighiltí atá le scriosadh" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"Roghnaigh de réir innéacs cén deighilt a ghairfidh tú" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * Tá mount-pointí críochdheighilte i gcoibhneas leis an taobh istigh den suiteáil, bheadh ​​an tosaithe / tosaithe mar shampla." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "Roghnaigh cá háit ar cheart an deighilt a shuiteáil (fág bán chun an pointe sléibhe a bhaint): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"Roghnaigh an deighilt le masc le haghaidh formáidithe" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"Roghnaigh an deighilt lena mharcáil mar chriptithe" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"Roghnaigh an deighilt atá le marcáil mar bootable" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"Roghnaigh an deighilt chun córas comhaid a shocrú air" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "Cuir isteach cineál córais comhad atá ag teastáil don deighilt: " - -msgid "Archinstall language" -msgstr "Teanga Archinstall" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Scrios gach tiomántán roghnaithe agus bain úsáid as leagan amach deighilte réamhshocraithe is fearr iarrachta" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Roghnaigh cad atá le déanamh le gach tiomántán aonair (agus úsáid deighilte ina dhiaidh sin)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "Roghnaigh cad is mian leat a dhéanamh leis na feistí bloc roghnaithe" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "Is liosta é seo de phróifílí réamhchláraithe, b'fhéidir go n-éascódh siad rudaí cosúil le timpeallachtaí deisce a shuiteáil" - -msgid "Select keyboard layout" -msgstr "Roghnaigh leagan amach an mhéarchláir" - -msgid "Select one of the regions to download packages from" -msgstr "Roghnaigh ceann de na réigiúin chun pacáistí a íoslódáil uaidh" - -msgid "Select one or more hard drives to use and configure" -msgstr "Roghnaigh tiomántán crua amháin nó níos mó le húsáid agus cumraigh" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "Chun an chomhoiriúnacht is fearr le do chrua-earraí AMD, b'fhéidir gur mhaith leat na roghanna uile foinse oscailte nó AMD / ATI a úsáid." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "Chun an chomhoiriúnacht is fearr le do chrua-earraí Intel, b'fhéidir gur mhaith leat na roghanna uile foinse oscailte nó Intel a úsáid.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Chun an comhoiriúnacht is fearr le do chrua-earraí Nvidia, b'fhéidir gur mhaith leat an tiománaí dílseánaigh Nvidia a úsáid.\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Roghnaigh tiománaí grafaicí nó fág bán é chun gach tiománaí foinse oscailte a shuiteáil" - -msgid "All open-source (default)" -msgstr "Gach foinse oscailte (réamhshocraithe)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "Roghnaigh cé na heithneanna le húsáid nó fág bán don réamhshocrú \"{}\"" - -msgid "Choose which locale language to use" -msgstr "Roghnaigh cén teanga logánta is cóir a úsáid" - -msgid "Choose which locale encoding to use" -msgstr "Roghnaigh cén ionchódú locale is cóir a úsáid" - -msgid "Select one of the values shown below: " -msgstr "Roghnaigh ceann amháin de na luachanna a thaispeántar thíos: " - -msgid "Select one or more of the options below: " -msgstr "Roghnaigh ceann amháin nó níos mó de na roghanna thíos: " - -msgid "Adding partition...." -msgstr "Deighilt á cur leis...." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "Ní mór duit cineál bailí fs-type a chur isteach chun leanúint ar aghaidh. Féach man parted le haghaidh cineálacha fs-type bailí." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Earráid: Mar thoradh ar liostú próifílí ar URL \"{}\" bhí:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "Earráid: Níorbh fhéidir an toradh \"{}\" a dhíchódú mar JSON:" - -msgid "Keyboard layout" -msgstr "Leagan amach méarchlár" - -msgid "Mirror region" -msgstr "Réigiún scáthán" - -msgid "Locale language" -msgstr "Teanga logánta" - -msgid "Locale encoding" -msgstr "Ionchódú locale" - -msgid "Drive(s)" -msgstr "Tiomántán(í)" - -msgid "Disk layout" -msgstr "Leagan amach diosca" - -msgid "Encryption password" -msgstr "Pasfhocal criptithe" - -msgid "Swap" -msgstr "Babhtáil" - -msgid "Bootloader" -msgstr "Lódálaí Tosaithe" - -msgid "Root password" -msgstr "Pasfhocal Root" - -msgid "Superuser account" -msgstr "Cuntas sár-úsáideoir" - -msgid "User account" -msgstr "Cuntas úsáideora" - -msgid "Profile" -msgstr "Próifíl" - -msgid "Audio" -msgstr "Fuaime" - -msgid "Kernels" -msgstr "Eithne" - -msgid "Additional packages" -msgstr "Pacáistí breise" - -msgid "Network configuration" -msgstr "Cumraíocht líonra" - -msgid "Automatic time sync (NTP)" -msgstr "Sioncronú ama uathoibríoch (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "Suiteáil ({} config(s) in easnamh)" - -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 "" -"Shocraigh tú an rogha tiomántán crua a scipeáil\n" -"agus úsáidfidh sé cibé tiomántán atá gléasta ag {} (turgnamhach)\n" -"RABHADH: Ní seiceálfaidh Archinstall oiriúnacht an tsocraithe seo\n" -"Ar mhaith leat leanúint ar aghaidh?" - -msgid "Re-using partition instance: {}" -msgstr "Mar shampla deighilte a athúsáid: {}" - -msgid "Create a new partition" -msgstr "Cruthaigh deighilt nua" - -msgid "Delete a partition" -msgstr "Scrios deighilt" - -msgid "Clear/Delete all partitions" -msgstr "Glan/Scrios gach Deighiltí" - -msgid "Assign mount-point for a partition" -msgstr "Sann mount-point le haghaidh críochdheighilte" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "Marcáil/Dímharcáil deighilt atá le formáidiú (síolraigh na sonraí)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "Marcáil/Dímharcáil críochdheighilt mar atá criptithe" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "Marcáil/Dímharcáil críochdheighilt mar bootable (uathoibríoch le haghaidh /boot)" - -msgid "Set desired filesystem for a partition" -msgstr "Socraigh córas comhaid atá ag teastáil le haghaidh críochdheighilte" - -msgid "Abort" -msgstr "Tobscoir" - -msgid "Hostname" -msgstr "Óstainm" - -msgid "Not configured, unavailable unless setup manually" -msgstr "Gan a bheith cumraithe, níl sé ar fáil mura socraítear é de láimh" - -msgid "Timezone" -msgstr "Crios ama" - -msgid "Set/Modify the below options" -msgstr "Socraigh/Athraigh na roghanna thíos" - -msgid "Install" -msgstr "Suiteáil" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"Úsáid ESC chun scipeáil\n" -"\n" - -msgid "Suggest partition layout" -msgstr "Mol leagan amach na críochdheighilte" - -msgid "Enter a password: " -msgstr "Iontráil pasfhocal: " - -msgid "Enter a encryption password for {}" -msgstr "Cuir isteach pasfhocal criptithe le haghaidh {}" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "Cuir isteach pasfhocal criptithe diosca (fág bán gan aon chriptiú): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "Cruthaigh sár-úsáideoir riachtanach le pribhléidí sudo: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "Cuir isteach pasfhocal fréimhe (fág bán chun an fhréamh a dhíchumasú): " - -msgid "Password for user \"{}\": " -msgstr "Pasfhocal don úsáideoir \"{}\": " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "Ag fíorú go bhfuil pacáistí breise ann (seans go dtógfaidh sé seo cúpla soicind)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "Ar mhaith leat sioncrónú ama uathoibríoch (NTP) a úsáid leis na freastalaithe réamhshocraithe ama?\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 "" -"D’fhéadfadh go mbeadh am crua-earraí agus céimeanna eile iarchumraíochta ag teastáil le go n-oibreoidh NTP.\n" -"Le haghaidh tuilleadh eolais, seiceáil le do thoil an vicí Arch" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "Cuir isteach ainm úsáideora chun úsáideoir breise a chruthú (fág bán chun scipeáil): " - -msgid "Use ESC to skip\n" -msgstr "Úsáid ESC chun scipeáil\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -"Roghnaigh rud ón liosta, agus roghnaigh ceann de na gníomhartha atá ar fáil chun é a fhorghníomhú" - -msgid "Cancel" -msgstr "Cealaigh" - -msgid "Confirm and exit" -msgstr "Deimhnigh agus scoir" - -msgid "Add" -msgstr "Cuir" - -msgid "Copy" -msgstr "Cóip" - -msgid "Edit" -msgstr "Cuir in eagar" - -msgid "Delete" -msgstr "Scrios" - -msgid "Select an action for '{}'" -msgstr "Roghnaigh gníomh le haghaidh '{}'" - -msgid "Copy to new key:" -msgstr "Cóipeáil chuig eochair nua:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "Cineál nic anaithnid: {}. Is iad na luachanna féideartha ná {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"Seo é do chumraíocht roghnaithe:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Tá PacmanName ag rith cheana féin, ag fanacht 10 nóiméad ar a mhéad chun é a fhoirceannadh." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "Níor imigh an glas pacmannach a bhí ann cheana. Glan suas aon seisiúin PacmanName atá ann cheana féin le do thoil roimh úsáid a bhaint as archinstall." - -msgid "Choose which optional additional repositories to enable" -msgstr "Roghnaigh na stórtha breise roghnacha le cumasú" - -msgid "Add a user" -msgstr "Cuir úsáideoir leis" - -msgid "Change password" -msgstr "Athraigh pasfhocal" - -msgid "Promote/Demote user" -msgstr "Úsáideoir a chur chun cinn/a dhíspeagadh" - -msgid "Delete User" -msgstr "Scrios Úsáideoir" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"Sainmhínigh úsáideoir nua\n" - -msgid "User Name : " -msgstr "Ainm Úsáideora: " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "Ar cheart go mbeadh {} ina shár-úsáideoir (sudoer)?" - -msgid "Define users with sudo privilege: " -msgstr "Sainmhínigh úsáideoirí a bhfuil pribhléid sudo acu: " - -msgid "No network configuration" -msgstr "Gan cumraíocht líonra" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "Socraigh fo-imleabhair atá ag teastáil ar dheighilt btrfs" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"Roghnaigh cén deighilt ar cheart fo-imleabhair a shocrú" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "Bainistigh fo-imleabhair btrfs don deighilt reatha" - -msgid "No configuration" -msgstr "Gan cumraíocht" - -msgid "Save user configuration" -msgstr "Sábháil cumraíocht úsáideora" - -msgid "Save user credentials" -msgstr "Sábháil dintiúir úsáideora" - -msgid "Save disk layout" -msgstr "Sábháil leagan amach diosca" - -msgid "Save all" -msgstr "Sábháil go léir" - -msgid "Choose which configuration to save" -msgstr "Roghnaigh cén chumraíocht atá le sábháil" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "Cuir isteach eolaire don chumraíocht(s) atá le sábháil: " - -msgid "Not a valid directory: {}" -msgstr "Ní eolaire bailí é: {}" - -msgid "The password you are using seems to be weak," -msgstr "Is cosúil go bhfuil an pasfhocal atá in úsáid agat lag," - -msgid "are you sure you want to use it?" -msgstr "an bhfuil tú cinnte gur mhaith leat é a úsáid?" - -msgid "Optional repositories" -msgstr "Taisclanna roghnacha" - -msgid "Save configuration" -msgstr "Sábháil cumraíocht" - -msgid "Missing configurations:\n" -msgstr "Cumraíochtaí in easnamh:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "Ní mór fréimhe pasfhocal nó ar a laghad 1 shár-úsáideoir a shonrú" - -msgid "Manage superuser accounts: " -msgstr "Bainistigh cuntais sár-úsáideoirí: " - -msgid "Manage ordinary user accounts: " -msgstr "Bainistigh gnáthchuntais úsáideora: " - -msgid " Subvolume :{:16}" -msgstr " Fo-imleabhar :{:16}" - -msgid " mounted at {:16}" -msgstr " suite ar {:16}" - -msgid " with option {}" -msgstr " le rogha {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -"Líon isteach na luachanna atá ag teastáil le haghaidh fo-imleabhar nua\n" - -msgid "Subvolume name " -msgstr "Ainm fo-imleabhar " - -msgid "Subvolume mountpoint" -msgstr "Pointe sléibhe subvolume" - -msgid "Subvolume options" -msgstr "Roghanna subvolume" - -msgid "Save" -msgstr "Sábháil" - -msgid "Subvolume name :" -msgstr "Ainm fo-imleabhar :" - -msgid "Select a mount point :" -msgstr "Roghnaigh pointe gléasta :" - -msgid "Select the desired subvolume options " -msgstr "Roghnaigh na roghanna subvolume atá ag teastáil " - -msgid "Define users with sudo privilege, by username: " -msgstr "Sainmhínigh úsáideoirí a bhfuil pribhléid sudo acu, de réir ainm úsáideora: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] Cruthaíodh logchomhad anseo: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "Ar mhaith leat fo-imleabhair BTRFS a úsáid le struchtúr réamhshocraithe?" - -msgid "Would you like to use BTRFS compression?" -msgstr "Ar mhaith leat comhbhrú BTRFS a úsáid?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "Ar mhaith leat críochdheighilt ar leith a chruthú don /home?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "Níl an acmhainn íosta ag na tiomántáin roghnaithe le haghaidh moladh uathoibríoch\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "Toilleadh íosta le haghaidh /deighilt baile: {}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Toilleadh íosta do dheighilt Arch Linux: {}GB" - -msgid "Continue" -msgstr "Lean ort" - -msgid "yes" -msgstr "tá" - -msgid "no" -msgstr "níl" - -msgid "set: {}" -msgstr "socrú: {}" - -msgid "Manual configuration setting must be a list" -msgstr "Ní mór liosta a bheith i socrú cumraíochta láimhe" - -msgid "No iface specified for manual configuration" -msgstr "Níl iface sonraithe do chumraíocht láimhe" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "Teastaíonn seoladh IP ó chumraíocht láimhe nic gan DHCP uathoibríoch" - -msgid "Add interface" -msgstr "Cuir comhéadan leis" - -msgid "Edit interface" -msgstr "Cuir comhéadan in eagar" - -msgid "Delete interface" -msgstr "Scrios comhéadan" - -msgid "Select interface to add" -msgstr "Roghnaigh comhéadan le cur leis" - -msgid "Manual configuration" -msgstr "Cumraíocht láimhe" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "Marcáil/Dímharcáil deighilt mar chomhbhrúite (btrfs amháin)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "Is cosúil go bhfuil an pasfhocal atá in úsáid agat lag, an bhfuil tú cinnte gur mhaith leat é a úsáid?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "Soláthraíonn sé rogha timpeallachtaí deisce agus bainisteoirí fuinneog tíleála, e.g. gnome, kde, smacht" - -msgid "Select your desired desktop environment" -msgstr "Roghnaigh do thimpeallacht deisce atá ag teastáil" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "Suiteáil an-bhunúsach a ligeann duit Arch Linux a shaincheapadh mar is cuí leat." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "Soláthraíonn sé rogha de phacáistí freastalaí éagsúla le suiteáil agus le cumasú, m.sh. httpd, nginx, mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "Roghnaigh cé na freastalaithe atá le suiteáil, mura bhfuil ann dóibh, déanfar suiteáil íosta" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "Suiteáil córas íosta chomh maith le tiománaithe xorg agus grafaicí." - -msgid "Press Enter to continue." -msgstr "Brúigh Enter chun leanúint ar aghaidh." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "Ar mhaith leat an tsuiteáil nuachruthaithe a chrosadh agus cumraíocht iar-shuiteála a dhéanamh?" - -msgid "Are you sure you want to reset this setting?" -msgstr "An bhfuil tú cinnte gur mhaith leat an socrú seo a athshocrú?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "Roghnaigh tiomántán crua amháin nó níos mó le húsáid agus cumraigh\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "Athshocróidh aon athruithe ar an socrú reatha leagan amach an diosca!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "Má athshocraíonn tú an rogha tiomántán crua athshocróidh sé seo leagan amach reatha an diosca freisin. An bhfuil tú cinnte?" - -msgid "Save and exit" -msgstr "Sábháil agus scoir" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"ina bhfuil deighiltí ciúáilte, bainfidh sé seo iad, an bhfuil tú cinnte?" - -msgid "No audio server" -msgstr "Gan freastalaí fuaime" - -msgid "(default)" -msgstr "(réamhshocraithe)" - -msgid "Use ESC to skip" -msgstr "Úsáid ESC chun scipeáil" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"Úsáid CTRL+C chun an rogha reatha a athshocrú\n" -"\n" - -msgid "Copy to: " -msgstr "Cóipeáil chuig: " - -msgid "Edit: " -msgstr "Cuir: " - -msgid "Key: " -msgstr "Eochair: " - -msgid "Edit {}: " -msgstr "Cuir {} in eagar: " - -msgid "Add: " -msgstr "Cuir leis: " - -msgid "Value: " -msgstr "Luach: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "Is féidir leat scipeáil tiomántán agus deighilt a roghnú agus úsáid a bhaint as cibé socrú tiomántán atá suite ag /mnt (turgnamhach)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "Roghnaigh ceann amháin de na dioscaí nó scipeáil agus úsáid / mnt mar réamhshocrú" - -msgid "Select which partitions to mark for formatting:" -msgstr "Roghnaigh na deighiltí atá le marcáil le haghaidh formáidithe:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "Úsáid HSM chun tiomántán criptithe a dhíghlasáil" - -msgid "Device" -msgstr "Gléas" - -msgid "Size" -msgstr "Méid" - -msgid "Free space" -msgstr "Spás saor in aisce" - -msgid "Bus-type" -msgstr "Cineál bus" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "Ní mór focal faire fréimhe nó 1 úsáideoir ar a laghad a bhfuil pribhléidí sudo aige a shonrú" - -msgid "Enter username (leave blank to skip): " -msgstr "Cuir isteach ainm úsáideora (fág bán chun scipeáil): " - -msgid "The username you entered is invalid. Try again" -msgstr "Tá an t-ainm úsáideora a d'iontráil tú neamhbhailí. Bain triail eile as" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "Ar cheart \"{}\" a bheith ina shár-úsáideoir (sudo)?" - -msgid "Select which partitions to encrypt" -msgstr "Roghnaigh na deighiltí atá le criptiú" - -msgid "very weak" -msgstr "an-lag" - -msgid "weak" -msgstr "lag" - -msgid "moderate" -msgstr "measartha" - -msgid "strong" -msgstr "láidir" - -msgid "Add subvolume" -msgstr "Cuir fo-imleabhar leis" - -msgid "Edit subvolume" -msgstr "Cuir fo-imleabhar in eagar" - -msgid "Delete subvolume" -msgstr "Scrios fo-imleabhar" - -msgid "Configured {} interfaces" -msgstr "Comhéadain {} cumraithe" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "Cumasaíonn an rogha seo líon na n-íoslódálacha comhthreomhara is féidir a dhéanamh le linn na suiteála" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"Cuir isteach líon na n-íoslódálacha comhthreomhara atá le cumasú.\n" -" (Iontráil luach idir 1 agus {})\n" -"Nóta:" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - Uasluach : {} ( Ligeann sé seo do {} íoslódálacha comhthreomhara, ceadaíonn sé {} íoslódálacha ag an am céanna )" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - Íosluach : 1 (Ceadaítear 1 íoslódáil chomhthreomhar, ceadaíonn sé 2 íosluchtú ag an am)" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - Díchumasaigh / Réamhshocrú: 0 (Díchumasaigh íoslódáil comhthreomhar, ní cheadaítear ach 1 íoslódáil ag an am)" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "Ionchur neamhbhailí! Bain triail eile as le hionchur bailí [1 go {max_downloads}, nó 0 le díchumasú]" - -msgid "Parallel Downloads" -msgstr "Comhuaineach íosluchtuithe" - -msgid "ESC to skip" -msgstr "ESC a scipeáil" - -msgid "CTRL+C to reset" -msgstr "CTRL+C le hathshocrú" - -msgid "TAB to select" -msgstr "Tab le roghnú" - -msgid "[Default value: 0] > " -msgstr "[Luach réamhshocraithe: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "Chun an t-aistriúchán seo a úsáid, suiteáil cló de láimh a thacaíonn leis an teanga." - -msgid "The font should be stored as {}" -msgstr "Ba cheart an cló a stóráil mar {}" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "Éilíonn Archinstall pribhléidí fréimhe chun é a rith. Féach --help le haghaidh tuilleadh." - -msgid "Select an execution mode" -msgstr "Roghnaigh modh forghníomhaithe" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "Ní féidir próifíl a fháil ón url sonraithe: {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "Caithfidh ainm uathúil a bheith ag próifílí, ach aimsíodh sainmhínithe próifíle le hainm dúblach: {}" - -msgid "Select one or more devices to use and configure" -msgstr "Roghnaigh gléas amháin nó níos mó le húsáid agus cumraigh" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "Má athshocraíonn tú an rogha gléis athshocróidh sé seo leagan amach reatha an diosca freisin. An bhfuil tú cinnte?" - -msgid "Existing Partitions" -msgstr "Deighiltí Láithreacha" - -msgid "Select a partitioning option" -msgstr "Roghnaigh rogha deighilte" - -msgid "Enter the root directory of the mounted devices: " -msgstr "Cuir isteach eolaire fréamhacha na ngléasanna gléasta: " - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "Toilleadh íosta le haghaidh /deighilt baile: {}GiB\n" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "Toilleadh íosta do dheighilt 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 "Seo liosta de profiles_bck réamhchláraithe, seans go mbeidh sé níos fusa rudaí cosúil le timpeallachtaí deisce a shuiteáil" - -msgid "Current profile selection" -msgstr "Roghnú próifíle reatha" - -msgid "Remove all newly added partitions" -msgstr "Bain gach deighilt nua-chur leis" - -msgid "Assign mountpoint" -msgstr "Sann pointe sléibhe" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "Marcáil/Dímharcáil le formáidiú (síolraigh na sonraí)" - -msgid "Mark/Unmark as bootable" -msgstr "Marcáil/Dímharcáil mar bootable" - -msgid "Change filesystem" -msgstr "Athraigh córas comhaid" - -msgid "Mark/Unmark as compressed" -msgstr "Marcáil/Dímharcáil mar chomhbhrúite" - -msgid "Set subvolumes" -msgstr "Socraigh fo-imleabhair" - -msgid "Delete partition" -msgstr "Scrios an deighilt" - -msgid "Partition" -msgstr "Deighiltí" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "Tá an deighilt seo criptithe faoi láthair, chun é a fhormáid ní mór córas comhaid a shonrú" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "Tá na pointí gléasta deighilte i gcoibhneas leis an taobh istigh den suiteáil, bheadh ​​an tosaithe mar shampla." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "Má tá mountpoint /boot socraithe, ansin marcálfar an deighilt mar bootable freisin." - -msgid "Mountpoint: " -msgstr "Mountpoint: " - -msgid "Current free sectors on device {}:" -msgstr "Earnálacha saor in aisce faoi láthair ar ghléas {}:" - -msgid "Total sectors: {}" -msgstr "Earnálacha iomlána: {}" - -msgid "Enter the start sector (default: {}): " -msgstr "Cuir isteach an earnáil tosaithe (réamhshocrú: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "Cuir isteach earnáil deiridh na críochdheighilte (céatadán nó blocuimhir, réamhshocrú: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "Bainfidh sé seo gach deighilt nua-chur leis, leanúint ar aghaidh?" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "Bainistíocht críochdheighilte: {}" - -#, python-brace-format -msgid "Total length: {}" -msgstr "Fad iomlán: {}" - -msgid "Encryption type" -msgstr "Cineál criptithe" - -msgid "Iteration time" -msgstr "" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "" - -msgid "Higher values increase security but slow down boot time" -msgstr "" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "" - -msgid "Iteration time cannot be empty" -msgstr "" - -msgid "Iteration time must be at least 100ms" -msgstr "" - -msgid "Iteration time must be at most 120000ms" -msgstr "" - -msgid "Please enter a valid number" -msgstr "" - -msgid "Partitions" -msgstr "Deighiltí" - -msgid "No HSM devices available" -msgstr "Níl aon ghléas HSM ar fáil" - -msgid "Partitions to be encrypted" -msgstr "Deighiltí le bheith criptithe" - -msgid "Select disk encryption option" -msgstr "Roghnaigh rogha criptithe diosca" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "Roghnaigh gléas FIDO2 le húsáid le haghaidh HSM" - -msgid "Use a best-effort default partition layout" -msgstr "Bain úsáid as leagan amach deighilte réamhshocraithe is fearr-iarracht" - -msgid "Manual Partitioning" -msgstr "Deighilt láimhe" - -msgid "Pre-mounted configuration" -msgstr "Cumraíocht réamhshuiteáilte" - -msgid "Unknown" -msgstr "Anaithnid" - -msgid "Partition encryption" -msgstr "Criptiú críochdheighilte" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr " ! Formáidiú {} in " - -msgid "← Back" -msgstr "← Ar ais" - -msgid "Disk encryption" -msgstr "Criptiú diosca" - -msgid "Configuration" -msgstr "Cumraíocht" - -msgid "Password" -msgstr "Pasfhocal" - -msgid "All settings will be reset, are you sure?" -msgstr "Athshocrófar gach socrú, an bhfuil tú cinnte?" - -msgid "Back" -msgstr "Ar ais" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "Roghnaigh cé acu beannaí le suiteáil do na próifílí roghnaithe: {}" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "Cineál timpeallachta: {}" - -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 "Níl an tiománaí dílseánaigh Nvidia tacaithe ag Sway. Is dócha go mbeidh fadhbanna agat, an bhfuil tú ceart go leor leis sin?" - -msgid "Installed packages" -msgstr "Pacáistí suiteáilte" - -msgid "Add profile" -msgstr "Cuir próifíl leis" - -msgid "Edit profile" -msgstr "Cuir próifíl in eagar" - -msgid "Delete profile" -msgstr "Scrios próifíl" - -msgid "Profile name: " -msgstr "Ainm próifíle: " - -msgid "The profile name you entered is already in use. Try again" -msgstr "Tá an t-ainm próifíle a d'iontráil tú in úsáid cheana féin. Bain triail eile as" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "Pacáistí atá le suiteáil leis an bpróifíl seo (spás scartha, fág bán le scipeáil): " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "Seirbhísí atá le cumasú leis an bpróifíl seo (spás scartha, fág bán chun scipeáil): " - -msgid "Should this profile be enabled for installation?" -msgstr "Ar cheart an phróifíl seo a chumasú le haghaidh suiteáil?" - -msgid "Create your own" -msgstr "Cruthaigh do chuid féin" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"Roghnaigh tiománaí grafaicí nó fág bán é chun gach tiománaí foinse oscailte a shuiteáil" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Teastaíonn rochtain ó Sway ar do shuíochán (bailiúchán de ghléasanna crua-earraí i.e. méarchlár, luch, srl)" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Roghnaigh rogha chun rochtain a thabhairt do Sway ar do chrua-earraí" - -msgid "Graphics driver" -msgstr "Tiománaí grafaicí" - -msgid "Greeter" -msgstr "Beannóir" - -msgid "Please chose which greeter to install" -msgstr "Roghnaigh cé acu beannaitheoir atá le suiteáil" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "Seo liosta de default_profiles réamhchláraithe" - -msgid "Disk configuration" -msgstr "Cumraíocht diosca" - -msgid "Profiles" -msgstr "Próifílí" - -msgid "Finding possible directories to save configuration files ..." -msgstr "Eolaire féideartha a aimsiú chun comhaid cumraíochta a shábháil ..." - -msgid "Select directory (or directories) for saving configuration files" -msgstr "Roghnaigh eolaire (nó eolairí) chun comhaid cumraíochta a shábháil" - -msgid "Add a custom mirror" -msgstr "Cuir scáthán saincheaptha leis" - -msgid "Change custom mirror" -msgstr "Athraigh scáthán saincheaptha" - -msgid "Delete custom mirror" -msgstr "Scrios scáthán saincheaptha" - -msgid "Enter name (leave blank to skip): " -msgstr "Iontráil ainm (fág bán chun scipeáil): " - -msgid "Enter url (leave blank to skip): " -msgstr "Cuir isteach url (fág bán chun scipeáil): " - -msgid "Select signature check option" -msgstr "Roghnaigh an rogha seiceála sínithe" - -msgid "Select signature option" -msgstr "Roghnaigh an rogha sínithe" - -msgid "Custom mirrors" -msgstr "Scátháin saincheaptha" - -msgid "Defined" -msgstr "Sainithe" - -msgid "Save user configuration (including disk layout)" -msgstr "Sábháil cumraíocht úsáideora (leagan amach diosca san áireamh)" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"Iontráil eolaire don chumraíocht(s) atá le sábháil (cumasaíodh comhlánú an táb)\n" -"Sábháil eolaire: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"Ar mhaith leat {} comhad cumraíochta a shábháil sa suíomh seo a leanas?\n" -"\n" -"{}" - -msgid "Saving {} configuration files to {}" -msgstr "{} comhad cumraíochta á sábháil go {}" - -msgid "Mirrors" -msgstr "Scátháin" - -msgid "Mirror regions" -msgstr "Réigiúin scátháin" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - Uasluach : {} ( Ligeann sé seo {} íoslódálacha comhthreomhara, ceadaítear {max_downloads+1} íosluchtú ag an am céanna )" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "Ionchur neamhbhailí! Bain triail eile as le hionchur bailí [1 go {}, nó 0 le díchumasú]" - -msgid "Locales" -msgstr "Áitiúlachtaí" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "Úsáid NetworkManager (riachtanach chun an t-idirlíon a chumrú go grafach i GNOME agus KDE)" - -msgid "Total: {} / {}" -msgstr "Iomlán: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "Is féidir gach luach a iontráladh a iarmhír le haonad: B, KB, KiB, MB, MiB..." - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "Mura gcuirtear aonad ar fáil, léirmhínítear an luach mar earnálacha" - -msgid "Enter start (default: sector {}): " -msgstr "Cuir isteach tús (réamhshocrú: earnáil {}): " - -msgid "Enter end (default: {}): " -msgstr "Cuir isteach an deireadh (réamhshocraithe: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "Ní féidir gléasanna fido2 a chinneadh. An bhfuil libfido2 suiteáilte?" - -msgid "Path" -msgstr "Cosán" - -msgid "Manufacturer" -msgstr "Monaróir" - -msgid "Product" -msgstr "Táirge" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "Cumraíocht neamhbhailí: {error}" - -msgid "Type" -msgstr "Cineál" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "Cumasaíonn an rogha seo líon na n-íoslódálacha comhthreomhara is féidir a dhéanamh le linn íoslódálacha pacáiste" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"Cuir isteach líon na n-íoslódálacha comhthreomhara atá le cumasú.\n" -"\n" -"Nóta:\n" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - Uasluach molta : {} ( Ceadaítear {} íoslódálacha comhthreomhara ag an am céanna )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - Díchumasaigh / Réamhshocrú: 0 (Díchumasaigh íoslódáil comhthreomhar, ní cheadaítear ach 1 íoslódáil ag an am)\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "Ionchur neamhbhailí! Bain triail eile as le hionchur bailí [nó 0 le díchumasú]" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Teastaíonn rochtain ar do shuíochán ó Hyprland (bailiúchán de ghléasanna crua-earraí, i.e. méarchlár, luch, srl)" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Roghnaigh rogha chun rochtain a thabhairt do Hyprland ar do chrua-earraí" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "Is féidir gach luach a iontráladh a iarmhír le haonad: %, B, KB, KiB, MB, MiB..." - -msgid "Would you like to use unified kernel images?" -msgstr "Ar mhaith leat íomhánna eithne aontaithe a úsáid?" - -msgid "Unified kernel images" -msgstr "Íomhánna eithne aontaithe" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "Ag fanacht le sioncronú ama (timedatectl show) le cur i gcrích." - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Níl an sioncrónú ama críochnaithe, agus tú ag fanacht - seiceáil na doiciméid le haghaidh réitigh oibre: https://archinstall.readthedocs.io/" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "Gan bacadh le feithimh le haghaidh sioncronaithe ama uathoibríoch (féadfaidh sé seo fadhbanna a chruthú má bhíonn an t-am as sioncronaithe le linn na suiteála)" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "Ag fanacht le sioncronú eochairfháinne Arch Linux (archlinux-keyring-wkd-sync) a chur i gcrích." - -msgid "Selected profiles: " -msgstr "Próifílí roghnaithe: " - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Níl an sioncrónú ama críochnaithe, agus tú ag fanacht - seiceáil na doiciméid le haghaidh réitigh oibre: https://archinstall.readthedocs.io/" - -msgid "Mark/Unmark as nodatacow" -msgstr "Marcáil/Dímharcáil mar bhó nodata" - -msgid "Would you like to use compression or disable CoW?" -msgstr "Ar mhaith leat comhbhrú a úsáid nó CoW a dhíchumasú?" - -msgid "Use compression" -msgstr "Bain úsáid as comhbhrú" - -msgid "Disable Copy-on-Write" -msgstr "Díchumasaigh Cóipeáil-ar-Scríobh" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "Soláthraíonn sé rogha timpeallachtaí deisce agus bainisteoirí fuinneog tíleála, e.g. GNOME, Plasma KDE, Sway" - -#, python-brace-format -msgid "Configuration type: {}" -msgstr "Cineál cumraíochta: {}" - -msgid "LVM configuration type" -msgstr "Cineál cumraíochta LVM" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "Ní thacaítear le criptiú diosca LVM le níos mó ná 2 dheighilt faoi láthair" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "Úsáid NetworkManager (riachtanach chun an t-idirlíon a chumrú go grafach i GNOME agus KDE Plasma)" - -msgid "Select a LVM option" -msgstr "Roghnaigh rogha LVM" - -msgid "Partitioning" -msgstr "Deighilt" - -msgid "Logical Volume Management (LVM)" -msgstr "Bainistíocht Toirt Loighciúil (LVM)" - -msgid "Physical volumes" -msgstr "Toirteanna fisiceacha" - -msgid "Volumes" -msgstr "Imleabhair" - -msgid "LVM volumes" -msgstr "Toirteanna LVM" - -msgid "LVM volumes to be encrypted" -msgstr "Toirteanna LVM le criptiú" - -msgid "Select which LVM volumes to encrypt" -msgstr "Roghnaigh cé na méideanna LVM atá le criptiú" - -msgid "Default layout" -msgstr "Leagan amach réamhshocraithe" - -msgid "No Encryption" -msgstr "Gan Criptiú" - -msgid "LUKS" -msgstr "LUKS" - -msgid "LVM on LUKS" -msgstr "LVM ar LUKS" - -msgid "LUKS on LVM" -msgstr "LUKS ar LVM" - -msgid "Yes" -msgstr "Tá" - -msgid "No" -msgstr "Níl" - -msgid "Archinstall help" -msgstr "Cabhair Archinstall" - -msgid " (default)" -msgstr " (réamhshocraithe)" - -msgid "Press Ctrl+h for help" -msgstr "Brúigh Ctrl+h chun cabhair a fháil" - -#, fuzzy -msgid "Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Roghnaigh rogha chun rochtain a thabhairt do Sway ar do chrua-earraí" - -msgid "Seat access" -msgstr "" - -#, fuzzy -msgid "Mountpoint" -msgstr "Mountpoint: " - -msgid "HSM" -msgstr "" - -#, fuzzy -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "Cuir isteach pasfhocal criptithe diosca (fág bán gan aon chriptiú): " - -#, fuzzy -msgid "Disk encryption password" -msgstr "Pasfhocal criptithe" - -#, fuzzy -msgid "Partition - New" -msgstr "Deighiltí" - -#, fuzzy -msgid "Filesystem" -msgstr "Athraigh córas comhaid" - -msgid "Invalid size" -msgstr "" - -#, fuzzy -msgid "Start (default: sector {}): " -msgstr "Cuir isteach tús (réamhshocrú: earnáil {}): " - -#, fuzzy -msgid "End (default: {}): " -msgstr "Cuir isteach an deireadh (réamhshocraithe: {}): " - -#, fuzzy -msgid "Subvolume name" -msgstr "Ainm fo-imleabhar " - -#, fuzzy -msgid "Disk configuration type" -msgstr "Cumraíocht diosca" - -msgid "Root mount directory" -msgstr "" - -#, fuzzy -msgid "Select language" -msgstr "Teanga logánta" - -#, fuzzy -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "Scríobh pacáistí breise le suiteáil (spás scartha, fág bán le scipeáil): " - -msgid "Invalid download number" -msgstr "" - -msgid "Number downloads" -msgstr "" - -#, fuzzy -msgid "The username you entered is invalid" -msgstr "Tá an t-ainm úsáideora a d'iontráil tú neamhbhailí. Bain triail eile as" - -#, fuzzy -msgid "Username" -msgstr "Ainm Úsáideora: " - -#, fuzzy, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "Ar cheart \"{}\" a bheith ina shár-úsáideoir (sudo)?" - -#, fuzzy -msgid "Interfaces" -msgstr "Cuir comhéadan leis" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "" - -msgid "Modes" -msgstr "" - -msgid "IP address" -msgstr "" - -#, fuzzy -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "Cuir isteach do sheoladh IP geata (ródaire) nó fág bán é: " - -msgid "Gateway address" -msgstr "" - -#, fuzzy -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "Cuir isteach do fhreastalaithe DNS (spás scartha, folamh gan aon cheann): " - -#, fuzzy -msgid "DNS servers" -msgstr "Gan freastalaí fuaime" - -#, fuzzy -msgid "Configure interfaces" -msgstr "Comhéadain {} cumraithe" - -#, fuzzy -msgid "Kernel" -msgstr "Eithne" - -msgid "UEFI is not detected and some options are disabled" -msgstr "" - -msgid "Info" -msgstr "" - -#, fuzzy -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "Níl an tiománaí dílseánaigh Nvidia tacaithe ag Sway. Is dócha go mbeidh fadhbanna agat, an bhfuil tú ceart go leor leis sin?" - -#, fuzzy -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "Níl an tiománaí dílseánaigh Nvidia tacaithe ag Sway. Is dócha go mbeidh fadhbanna agat, an bhfuil tú ceart go leor leis sin?" - -#, fuzzy -msgid "Main profile" -msgstr "Cuir próifíl in eagar" - -#, fuzzy -msgid "Confirm password" -msgstr "Athraigh pasfhocal" - -msgid "The confirmation password did not match, please try again" -msgstr "" - -#, fuzzy -msgid "Not a valid directory" -msgstr "Ní eolaire bailí é: {}" - -#, fuzzy -msgid "Would you like to continue?" -msgstr "Ar mhaith leat comhbhrú BTRFS a úsáid?" - -msgid "Directory" -msgstr "" - -#, fuzzy -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "" -"Iontráil eolaire don chumraíocht(s) atá le sábháil (cumasaíodh comhlánú an táb)\n" -"Sábháil eolaire: " - -#, fuzzy, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "" -"Ar mhaith leat {} comhad cumraíochta a shábháil sa suíomh seo a leanas?\n" -"\n" -"{}" - -msgid "Enabled" -msgstr "" - -msgid "Disabled" -msgstr "" - -#, fuzzy -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Cuir isteach an tsaincheist seo (agus an comhad) chuig https://github.com/archlinux/archinstall/issues" - -#, fuzzy -msgid "Mirror name" -msgstr "Réigiún scáthán" - -msgid "Url" -msgstr "" - -#, fuzzy -msgid "Select signature check" -msgstr "Roghnaigh an rogha seiceála sínithe" - -#, fuzzy -msgid "Select execution mode" -msgstr "Roghnaigh modh forghníomhaithe" - -#, fuzzy -msgid "Press ? for help" -msgstr "Brúigh Ctrl+h chun cabhair a fháil" - -#, fuzzy -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Roghnaigh rogha chun rochtain a thabhairt do Hyprland ar do chrua-earraí" - -#, fuzzy -msgid "Additional repositories" -msgstr "Taisclanna roghnacha" - -msgid "NTP" -msgstr "" - -msgid "Swap on zram" -msgstr "" - -msgid "Name" -msgstr "" - -#, fuzzy -msgid "Signature check" -msgstr "Roghnaigh an rogha seiceála sínithe" - -#, fuzzy, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "Earnálacha saor in aisce faoi láthair ar ghléas {}:" - -#, fuzzy, python-brace-format -msgid "Size: {} / {}" -msgstr "Iomlán: {} / {}" - -#, fuzzy, python-brace-format -msgid "Size (default: {}): " -msgstr "Cuir isteach an deireadh (réamhshocraithe: {}): " - -#, fuzzy -msgid "HSM device" -msgstr "Gléas" - -msgid "Some packages could not be found in the repository" -msgstr "" - -#, fuzzy -msgid "User" -msgstr "Ainm Úsáideora: " - -msgid "The specified configuration will be applied" -msgstr "" - -msgid "Wipe" -msgstr "" - -#, fuzzy -msgid "Mark/Unmark as XBOOTLDR" -msgstr "Marcáil/Dímharcáil mar bootable" - -#, fuzzy -msgid "Loading packages..." -msgstr "Pacáistí breise" - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "" - -#, fuzzy -msgid "Add a custom repository" -msgstr "Cuir scáthán saincheaptha leis" - -#, fuzzy -msgid "Change custom repository" -msgstr "Athraigh scáthán saincheaptha" - -#, fuzzy -msgid "Delete custom repository" -msgstr "Scrios scáthán saincheaptha" - -#, fuzzy -msgid "Repository name" -msgstr "Réigiún scáthán" - -#, fuzzy -msgid "Add a custom server" -msgstr "Cuir scáthán saincheaptha leis" - -#, fuzzy -msgid "Change custom server" -msgstr "Athraigh scáthán saincheaptha" - -#, fuzzy -msgid "Delete custom server" -msgstr "Scrios scáthán saincheaptha" - -msgid "Server url" -msgstr "" - -#, fuzzy -msgid "Select regions" -msgstr "Roghnaigh an rogha sínithe" - -#, fuzzy -msgid "Add custom servers" -msgstr "Cuir scáthán saincheaptha leis" - -#, fuzzy -msgid "Add custom repository" -msgstr "Cuir scáthán saincheaptha leis" - -#, fuzzy -msgid "Loading mirror regions..." -msgstr "Réigiúin scátháin" - -#, fuzzy -msgid "Mirrors and repositories" -msgstr "Taisclanna roghnacha" - -#, fuzzy -msgid "Selected mirror regions" -msgstr "Réigiúin scátháin" - -#, fuzzy -msgid "Custom servers" -msgstr "Scátháin saincheaptha" - -#, fuzzy -msgid "Custom repositories" -msgstr "Taisclanna roghnacha" - -msgid "Only ASCII characters are supported" -msgstr "" - -msgid "Show help" -msgstr "" - -msgid "Exit help" -msgstr "" - -msgid "Preview scroll up" -msgstr "" - -msgid "Preview scroll down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move right" -msgstr "" - -msgid "Move left" -msgstr "" - -msgid "Jump to entry" -msgstr "" - -msgid "Skip selection (if available)" -msgstr "" - -msgid "Reset selection (if available)" -msgstr "" - -#, fuzzy -msgid "Select on single select" -msgstr "Roghnaigh an rogha seiceála sínithe" - -#, fuzzy -msgid "Select on multi select" -msgstr "Roghnaigh crios ama" - -msgid "Reset" -msgstr "" - -#, fuzzy -msgid "Skip selection menu" -msgstr "Roghnaigh modh forghníomhaithe" - -msgid "Start search mode" -msgstr "" - -msgid "Exit search mode" -msgstr "" - -#, fuzzy -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Teastaíonn rochtain ó Sway ar do shuíochán (bailiúchán de ghléasanna crua-earraí i.e. méarchlár, luch, srl)" - -#, fuzzy -msgid "Choose an option to give labwc access to your hardware" -msgstr "" -"\n" -"\n" -"Roghnaigh rogha chun rochtain a thabhairt do Sway ar do chrua-earraí" - -#, fuzzy -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Teastaíonn rochtain ó Sway ar do shuíochán (bailiúchán de ghléasanna crua-earraí i.e. méarchlár, luch, srl)" - -#, fuzzy -msgid "Choose an option to give niri access to your hardware" -msgstr "" -"\n" -"\n" -"Roghnaigh rogha chun rochtain a thabhairt do Sway ar do chrua-earraí" - -#, fuzzy -msgid "Mark/Unmark as ESP" -msgstr "Marcáil/Dímharcáil mar bootable" - -msgid "Package group:" -msgstr "" - -#, fuzzy -msgid "Exit archinstall" -msgstr "Cabhair Archinstall" - -#, fuzzy -msgid "Reboot system" -msgstr "Athraigh córas comhaid" - -#, fuzzy -msgid "chroot into installation for post-installation configurations" -msgstr "Ar mhaith leat an tsuiteáil nuachruthaithe a chrosadh agus cumraíocht iar-shuiteála a dhéanamh?" - -msgid "Installation completed" -msgstr "" - -#, fuzzy -msgid "What would you like to do next?" -msgstr "Ar mhaith leat comhbhrú BTRFS a úsáid?" - -#, fuzzy, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "Roghnaigh an mód a chumrú le haghaidh \"{}\" nó scipeáil chun an mód réamhshocraithe \"{}\" a úsáid" - -#, fuzzy -msgid "Incorrect credentials file decryption password" -msgstr "Pasfhocal criptithe" - -#, fuzzy -msgid "Incorrect password" -msgstr "Pasfhocal Root" - -#, fuzzy -msgid "Credentials file decryption password" -msgstr "Pasfhocal criptithe" - -#, fuzzy -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "" -"Ar mhaith leat {} comhad cumraíochta a shábháil sa suíomh seo a leanas?\n" -"\n" -"{}" - -#, fuzzy -msgid "Credentials file encryption password" -msgstr "Pasfhocal criptithe" - -#, fuzzy, python-brace-format -msgid "Repositories: {}" -msgstr "Réigiún scáthán" - -#, fuzzy -msgid "New version available" -msgstr "Níl aon ghléas HSM ar fáil" - -#, fuzzy -msgid "Passwordless login" -msgstr "Pasfhocal" - -msgid "Second factor login" -msgstr "" - -msgid "Bluetooth" -msgstr "" - -#, fuzzy -msgid "Would you like to configure Bluetooth?" -msgstr "Ar mhaith leat comhbhrú BTRFS a úsáid?" - -msgid "Authentication" -msgstr "" - -msgid "Applications" -msgstr "" - -msgid "U2F login method: " -msgstr "" - -msgid "Passwordless sudo: " -msgstr "" - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "" - -msgid "Syncing the system..." -msgstr "" - -msgid "Value cannot be empty" -msgstr "" - -msgid "Snapshot type" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Snapshot type: {}" -msgstr "Cineál timpeallachta: {}" - -msgid "U2F login setup" -msgstr "" - -msgid "No U2F devices found" -msgstr "" - -msgid "U2F Login Method" -msgstr "" - -#, fuzzy -msgid "Enable passwordless sudo?" -msgstr "Iontráil pasfhocal: " - -#, fuzzy, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "Roghnaigh gléas FIDO2 le húsáid le haghaidh HSM" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "" - -msgid "Starting device modifications in " -msgstr "" - -#, fuzzy -msgid "No network connection found" -msgstr "Gan cumraíocht líonra" - -#, fuzzy -msgid "Would you like to connect to a Wifi?" -msgstr "Ar mhaith leat comhbhrú BTRFS a úsáid?" - -#, fuzzy -msgid "No wifi interface found" -msgstr "Comhéadain {} cumraithe" - -#, fuzzy -msgid "Select wifi network to connect to" -msgstr "Roghnaigh comhéadan líonra amháin le chumrú" - -msgid "Scanning wifi networks..." -msgstr "" - -#, fuzzy -msgid "No wifi networks found" -msgstr "Gan cumraíocht líonra" - -msgid "Failed setting up wifi" -msgstr "" - -#, fuzzy -msgid "Enter wifi password" -msgstr "Iontráil pasfhocal: " - -msgid "Ok" -msgstr "" diff --git a/examples/archinstall/archinstall/locales/he/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/he/LC_MESSAGES/base.mo deleted file mode 100644 index 6afa8dc..0000000 Binary files a/examples/archinstall/archinstall/locales/he/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/he/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/he/LC_MESSAGES/base.po deleted file mode 100644 index 66b59c0..0000000 --- a/examples/archinstall/archinstall/locales/he/LC_MESSAGES/base.po +++ /dev/null @@ -1,1862 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Yaron Shahrabani \n" -"Language-Team: \n" -"Language: he\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.5\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] כאן נוצר קובץ היומן: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " נא להגיש דיווח על הבעיה הזאת (ואת הקובץ) דרך https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "לבטל את התהליך?" - -msgid "And one more time for verification: " -msgstr "ופעם נוספת לאימות: " - -msgid "Would you like to use swap on zram?" -msgstr "להשתמש בשטח החלפה ב־zram?" - -msgid "Desired hostname for the installation: " -msgstr "שם מארח רצוי להתקנה: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "שם למשתמש העל הנחוץ עם הרשאות על: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "משתמשים נוספים להתקנה (ריק משמעו אין עוד משתמשים): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "זה אמור להיות משתמש על (sudoer)?" - -msgid "Select a timezone" -msgstr "בחירת אזור זמן" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "להשתמש ב־GRUB כמנהל טעינה על פני systemd-boot?" - -msgid "Choose a bootloader" -msgstr "נא לבחור מנהל טעינה" - -msgid "Choose an audio server" -msgstr "נא לבחור שרת שמע" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "רק חבילות כגוןbase,‏ base-devel,‏ linux,‏ linux-firmware,‏ efibootmgr וחבילות פרופיל כרשות מותקנות." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "כדי שיותקן דפדפן כגון firefox או chromium אפשר לציין זאת בבקשה הבאה." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "נא לכתוב חבילות נוספות להתקנה (להפריד ברווחים, להשאיר ריק כדי לדלג): " - -msgid "Copy ISO network configuration to installation" -msgstr "העתקת הגדרות הרשת מה־ISO להתקנה" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "להשתמש ב־NetworkManager (חיוני להגדרת האינטרנט עם כלים חזותיים ב־GNOME וב־KDE)" - -msgid "Select one network interface to configure" -msgstr "נא לבחור מנשק רשת להגדרה" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "נא לבחור איזה מצב להגדרה עבור „{}“ או לדלג כדי להשתמש במצב ברירת המחדל „{}“" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "נא למלא IP ורשת־משנה (סאבנט) עבור {} (למשל: 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "נא למלא את כתובת ה־IP של שער הגישה (ראוטר) או להשאיר ריק כדי לא להגדיר: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "נא למלא את שרתי ה־DNS שלך (להפריד ברווחים, להשאיר ריק אם אין): " - -msgid "Select which filesystem your main partition should use" -msgstr "נא לבחור באיזו מערכת קבצים צריכה להשתמש המחיצה הראשית שלך" - -msgid "Current partition layout" -msgstr "פריסת מחיצות נוכחית" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"נא לבחור מה לעשות עם‬\n" -"‫{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "נא לציין את סוג מערכת הקבצים הרצויה במחיצה" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "נא למלא את מיקום ההתחלה (ביחידות של parted‏: s,‏ GB, %, וכו׳ ; ברירת מחדל: {}): " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "נא למלא את מיקום הסוף (ביחידות של parted‏: s,‏ GB, %, וכו׳ ; למשל: {}): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} מכיל מחיצות ממתינות, פעולה זו תסיר אותן, להמשיך?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}‬\n" -"\n" -"‫בחירה לפי מפתח אילו מחיצות למחוק" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}‬\n" -"\n" -"‫בחירה לפי מפתח אילו מחיצות לעגן ואיפה" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * נקודות העגינה של המחיצה הן יחסיות למערכת ההתקנה, מחיצת הטעינה למשל תהיה ‎/boot." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "נא לבחור להיכן לעגן את המחיצה (להשאיר ריק כדי להסיר את נקודת העגינה): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"‫{}‬‬\n" -"\n" -"‫נא לבחור איזו מחיצה לסמן לפרמוט" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"‫{}‬‬‬\n" -"\n" -"‫‫נא לבחור איזו מחיצה לסמן להצפנה" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"‫{}‬‬‬\n" -"\n" -"‫נא לבחור איזו מחיצה לסמן כזמינה לטעינה" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"‫{}‬\n" -"\n" -"‫נא לבחור על איזו מחיצה להגדיר מערכת קבצים" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "נא לציין סוג מערכת קבצים רצויה למחיצה: " - -msgid "Archinstall language" -msgstr "השפה של Archinstall" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "למחוק את כל הכוננים הנבחרים ולהשתמש בפריסת מחיצות כברירת מחדל על בסיס מאמץ מיטבי" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "לבחור מה לעשות עם כל כונן בנפרד (עם אופן השימוש במחיצה בסוף)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "נא לבחור מה לעשות עם התקני הבלוק הנבחרים" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "זאת רשימה של פרופילים שנכתבו מראש, הם עשויים להקל על התקנת דברים כמו סביבות שולחן עבודה" - -msgid "Select keyboard layout" -msgstr "נא לבחור פריסת מקלדת" - -msgid "Select one of the regions to download packages from" -msgstr "נא לבחור את אחר מהאזורים להוריד ממנו חבילות" - -msgid "Select one or more hard drives to use and configure" -msgstr "נא לבחור כונן קשיח אחד או יותר לשימוש והגדרה" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "לתאימות המיטבית עם חומרת ה־AMD שלך, כדאי להשתמש או באפשרות של קוד פתוח לחלוטין או ב־AMD / ATI." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "לתאימות המיטבית עם חומרת האינטל שלך, כדאי להשתמש או באפשרות של קוד פתוח לחלוטין או באינטל.‬\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "לתאימות המיטבית עם חומרת ה־Nvidia שלך, כדאי להשתמש במנהל ההתקן הקנייני של Nvidia.‬\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"‫‬‬\n" -"‫‫נא לבחור מנהל התקן גרפי או להשאיר ריק כדי להתקין מנהלי התקנים בקוד פתוח לגמרי" - -msgid "All open-source (default)" -msgstr "הכול בקוד פתוח (ברירת מחדל)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "נא לבחור אילו ליבות להשתמש או להשאיר ריק לברירת המחדל „{}”" - -msgid "Choose which locale language to use" -msgstr "נא לבחור באיזו שפה של הגדרה אזורית להשתמש" - -msgid "Choose which locale encoding to use" -msgstr "נא לבחור איזה קידוד של הגדרה אזורית להשתמש" - -msgid "Select one of the values shown below: " -msgstr "נא לבחור את אחד מהערכים שמופיע להלן: " - -msgid "Select one or more of the options below: " -msgstr "יש לבחור באפשרות אחת או יותר מאלו שלהלן: " - -msgid "Adding partition...." -msgstr "נוספת מחיצה…" - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "יש למלא סוג מערכת קבצים תקפה כדי להמשיך. ניתן לעיין ב־`man parted` לקבלת רשימת סוגי מערכת הקבצים התקפות." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "שגיאה: הצגת הפרופילים בכתובת „{}“ הניבה:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "לא ניתן לפענח את התוצאה „{}“ כ־JSON:" - -msgid "Keyboard layout" -msgstr "פריסת מקלדת" - -msgid "Mirror region" -msgstr "אזור אתר מראה" - -msgid "Locale language" -msgstr "שפת ההגדרה האזורית" - -msgid "Locale encoding" -msgstr "קידוד ההגדרה האזורית" - -msgid "Drive(s)" -msgstr "כוננים" - -msgid "Disk layout" -msgstr "פריסת כוננים" - -msgid "Encryption password" -msgstr "סיסמת הצפנה" - -msgid "Swap" -msgstr "שטח החלפה" - -msgid "Bootloader" -msgstr "מנהל טעינה" - -msgid "Root password" -msgstr "סיסמת root (משתמש עליון)" - -msgid "Superuser account" -msgstr "חשבון משתמש־על" - -msgid "User account" -msgstr "חשבון משתמש" - -msgid "Profile" -msgstr "פרופיל" - -msgid "Audio" -msgstr "שמע" - -msgid "Kernels" -msgstr "ליבות" - -msgid "Additional packages" -msgstr "חבילות נוספות" - -msgid "Network configuration" -msgstr "הגדרות רשת" - -msgid "Automatic time sync (NTP)" -msgstr "סנכרון זמן אוטומטי (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "התקנה ({} הגדרות חסרות)" - -msgid "" -"You decided to skip harddrive selection\n" -"and will use whatever drive-setup is mounted at {} (experimental)\n" -"WARNING: Archinstall won't check the suitability of this setup\n" -"Do you wish to continue?" -msgstr "" -"החלטת לוותר על בחירת כוננים קשיחים\n" -"‬\n" -"‫ולהשתמש בתצורת הכוננים שמעוגנת על {} כמו שהיא (ניסיוני)\n" -"‬\n" -"‫אזהרה: Archinstall won't check the suitability of this setup\n" -"‬\n" -"‏‫Do you wish to continue?" - -msgid "Re-using partition instance: {}" -msgstr "שימוש מחדש בעותק של מחיצה: {}" - -msgid "Create a new partition" -msgstr "יצירת מחיצה חדשה" - -msgid "Delete a partition" -msgstr "מחיקת מחיצה" - -msgid "Clear/Delete all partitions" -msgstr "פינוי/מחיקה של כל המחיצות" - -msgid "Assign mount-point for a partition" -msgstr "הקצאת נקודת עגינה למחיצה" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "סימון/ביטול סימון מחיצה לפרמוט (מחיקה מוחלטת של הנתונים)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "סימון/ביטול סימון מחיצה כמוצפנת" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "סימון/ביטול סימון מחיצה כרשאית טעינה (אוטומטית ל־‎/boot)" - -msgid "Set desired filesystem for a partition" -msgstr "נא להגדיר מערכת קבצים רצויה למחיצה" - -msgid "Abort" -msgstr "ביטול" - -msgid "Hostname" -msgstr "שם מארח" - -msgid "Not configured, unavailable unless setup manually" -msgstr "לא מוגדר, לא זמין למעט במקרה של התקנה ידנית" - -msgid "Timezone" -msgstr "אזור זמן" - -msgid "Set/Modify the below options" -msgstr "הגדרת/שינוי האפשרויות הבאות" - -msgid "Install" -msgstr "התקנה" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"להשתמש ב־ESC כדי לצאת‬\n" -"\n" - -msgid "Suggest partition layout" -msgstr "הצעת פריסת מחיצות" - -msgid "Enter a password: " -msgstr "נא למלא סיסמה: " - -msgid "Enter a encryption password for {}" -msgstr "נא למלא סיסמת הצפנה עבור {}" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "נא למלא סיסמה להצפנת הכונן (להשאיר ריק כדי לא להגדיר הצפנה): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "יצירת משתמש על נחוץ עם הרשאות sudo: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "נא למלא סיסמה למשתמש העליון (יש להשאיר ריק כדי להשבית את root): " - -msgid "Password for user \"{}\": " -msgstr "סיסמה למשתמש „{}“: " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "מתבצע וידוא שחבילות נוספות קיימות (יכול לקחת כמה שניות)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "להשתמש בסנכרון שעון אוטומטי (NTP) מול שרתי התזמון כברירת מחדל?‬\n" - -msgid "" -"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" -"For more information, please check the Arch wiki" -msgstr "" -"שעון חומרה וצעדים נוספים לאחר ההתקנה כנראה יהיו נחוצים כדי שה־NTP יעבוד.‬\n" -"‫למידע נוסף, נא לפנות לוויקי של Arch" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "נא למלא שם משתמש כדי ליצור משתמש נוסף (ריק כדי לדלג): " - -msgid "Use ESC to skip\n" -msgstr "יש להשתמש ב־ESC כדי לדלג‬\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -"‫נא לבחור עצם מהרשימה ולבחור באחת מהאפשרויות הזמינות עבורו כדי להפעיל אותו" - -msgid "Cancel" -msgstr "הסגה" - -msgid "Confirm and exit" -msgstr "אישור ויציאה" - -msgid "Add" -msgstr "הוספה" - -msgid "Copy" -msgstr "העתקה" - -msgid "Edit" -msgstr "עריכה" - -msgid "Delete" -msgstr "מחיקה" - -msgid "Select an action for '{}'" -msgstr "נא לבחור פעולה עבור ‚{}’" - -msgid "Copy to new key:" -msgstr "העתקה למפתח חדש:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "סוג מתאם תקשורת לא ידוע: {}. הערכים האפשריים הם {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"‫זאת ההגדרה שבחרת:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "‫Pacman כבר פועל, נמתין למשך 10 דקות לכל היותר עד לסיומו." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "נעילת ה־pacman הקודמת מעולם לא נסגרה. נא לנקות הפעלות קיימות של pacman בטרם הפעלת archinstall." - -msgid "Choose which optional additional repositories to enable" -msgstr "נא לבחור אילו מאגרים נוספים להפעיל כרשות" - -msgid "Add a user" -msgstr "הוספת משתמש" - -msgid "Change password" -msgstr "החלפת סיסמה" - -msgid "Promote/Demote user" -msgstr "קידום/הסגת משתמש" - -msgid "Delete User" -msgstr "מחיקת משתמש" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"‫הגדרת משתמש חדש‬\n" - -msgid "User Name : " -msgstr "שם משתמש : " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "האם {} אמור לקבל הרשאות על (sudoer)?" - -msgid "Define users with sudo privilege: " -msgstr "הגדרת משתמשים עם הרשאת sudo: " - -msgid "No network configuration" -msgstr "אין הגדרות רשת" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "הגדרת תת־כרכים רצויים במחיצת BTRFS" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}‬\n" -"\n" -"‫נא לבחור תחת איזו מחיצה להגדיר תת־כרכים" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "ניהול תת־כרכי BTRFS למחיצה הנוכחית" - -msgid "No configuration" -msgstr "אין הגדרה" - -msgid "Save user configuration" -msgstr "שמירת הגדרת משתמש" - -msgid "Save user credentials" -msgstr "שמירת פרטי משתמש" - -msgid "Save disk layout" -msgstr "שמירת פריסת כונן" - -msgid "Save all" -msgstr "לשמור הכול" - -msgid "Choose which configuration to save" -msgstr "נא לבחור אילו הגדרות לשמור" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "נא למלא את התיקייה להגדרות לשמירה: " - -msgid "Not a valid directory: {}" -msgstr "אינה תיקייה תקפה: {}" - -msgid "The password you are using seems to be weak," -msgstr "הסיסמה שבחרת נראית חלשה," - -msgid "are you sure you want to use it?" -msgstr "בכל זאת להשתמש בה?" - -msgid "Optional repositories" -msgstr "מאגרי רשות" - -msgid "Save configuration" -msgstr "שמירת הגדרה" - -msgid "Missing configurations:\n" -msgstr "" -"הגדרות חסרות:\n" -"‬\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "יש לציין או סיסמה למשתמש העליון (root) או לפחות משתמש אחד עם הרשאות על (sudo)" - -msgid "Manage superuser accounts: " -msgstr "ניהול משתמשים עם הרשאות על: " - -msgid "Manage ordinary user accounts: " -msgstr "ניהול חשבונות משתמשים רגילים: " - -msgid " Subvolume :{:16}" -msgstr " תת־כרך :{:16}" - -msgid " mounted at {:16}" -msgstr " מעוגן תחת {:16}" - -msgid " with option {}" -msgstr " עם האפשרות {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -"‫‫‫‫ נא למלא את הערכים הרצויים לתת־כרך חדש ‬\n" - -msgid "Subvolume name " -msgstr "שם תת־כרך " - -msgid "Subvolume mountpoint" -msgstr "נק׳ עיגון תת־כרך" - -msgid "Subvolume options" -msgstr "אפשרויות תת־כרך" - -msgid "Save" -msgstr "שמירה" - -msgid "Subvolume name :" -msgstr "שם תת־כרך :" - -msgid "Select a mount point :" -msgstr "נא לבחור נק׳ עגינה :" - -msgid "Select the desired subvolume options " -msgstr "נא לבחור את אפשרויות התת־כרך הרצויות " - -msgid "Define users with sudo privilege, by username: " -msgstr "הגדרת משתמשים עם הרשאת על (sudo), לפי שם משתמש: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] כאן נוצר קובץ יומן: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "להשתמש בתת־כרכים של BTRFS במבנה ברירת המחדל?" - -msgid "Would you like to use BTRFS compression?" -msgstr "להשתמש בדחיסה של BTRFS?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "ליצור מחיצה נפרדת ל־‎/home?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "לכוננים הנבחרים אין את הקיבולת המזערית הנחוצה להצעות אוטומטיות\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "הקיבולת המזערית למחיצת ‎/home:‏ {}ג״ב\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "הקיבולת המזערית למחיצת ‎/home:‏ {}ג״ב" - -msgid "Continue" -msgstr "המשך" - -msgid "yes" -msgstr "כן" - -msgid "no" -msgstr "לא" - -msgid "set: {}" -msgstr "הוגדר: {}" - -msgid "Manual configuration setting must be a list" -msgstr "רשומת ההגדרה הידנית חייבת להיות רשימה" - -msgid "No iface specified for manual configuration" -msgstr "לא צוין iface להגדרה ידנית" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "הגדרת מתאם תקשורת ללא DHCP אוטומטי דורש כתובת IP" - -msgid "Add interface" -msgstr "הוספת מנשק" - -msgid "Edit interface" -msgstr "עריכת מנשק" - -msgid "Delete interface" -msgstr "מחיקת מנשק" - -msgid "Select interface to add" -msgstr "נא לבחור מנשק להוספה" - -msgid "Manual configuration" -msgstr "הגדרה ידנית" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "סימון/ביטול סימון מחיצה כדחוסה (btrfs בלבד)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "נראה שהסיסמה שבחרת חלשה, בכל זאת להשתמש בה?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "מספק מבחר סביבות שולחן עבודה ומנהלי ריצוף חלונות, למשל: gnome,‏ kde,‏ sway" - -msgid "Select your desired desktop environment" -msgstr "נא לבחור את סביבת שולחן העבודה הרצויה לך" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "התקנה בסיסית מאוד שמאפשרת לך להתאים את Arch Linux בדיוק לדרך שנוחה לך." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "מספק מבחר חבילות שרת להתקנה ולהפעלה, למשל: httpd,‏ nginx,‏ mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "נא לבחור אילו שרתים להתקין, אם אין אז תבוצע התקנה מזערית" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "מתקין מערכת מזערית בנוסף ל־xorg ולמנהלי התקנים גרפיים." - -msgid "Press Enter to continue." -msgstr "נא ללחוץ על Enter כדי להמשיך." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "האם להיכנס להתקנה החדשה שיצרת עם chroot (העמסת סביבה) לביצוע הגדרות שלאחר התקנה?" - -msgid "Are you sure you want to reset this setting?" -msgstr "לאפס את ההגדרה הזאת?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "נא לבחור כונן אחד או או יותר לשימוש ולהגדרה‬\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "כל שינוי שהוא להגדרה הקיימת יאפס את פריסת הכוננים!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "איפוס בחירת הכוננים יאפס גם את פריסת הכוננים הנוכחית. להמשיך?" - -msgid "Save and exit" -msgstr "לשמור ולצאת" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"‫{}‬\n" -"‫‬‫מכיל מחיצות שממתינות בתור, הפעולה הזאת תסיר אותן, להמשיך?" - -msgid "No audio server" -msgstr "אין שרת שמע" - -msgid "(default)" -msgstr "(ברירת מחדל)" - -msgid "Use ESC to skip" -msgstr "יש להשתמש ב־ESC כדי לדלג" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"יש להשתמש ב־CTRL+C כדי לאפס את הבחירה הנוכחית\n" -"‬\n" -"‏‫\n" -"‬\n" - -msgid "Copy to: " -msgstr "העתקה אל: " - -msgid "Edit: " -msgstr "עריכה: " - -msgid "Key: " -msgstr "מפתח: " - -msgid "Edit {}: " -msgstr "עריכת {}: " - -msgid "Add: " -msgstr "הוספה: " - -msgid "Value: " -msgstr "ערך: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "אפשר לדלג על בחירת כונן וחלוקה למחיצות ולהשתמש בתצורת הכוננים שמעוגנת תחת ‎/mnt כפי שהיא (ניסיוני)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "נא לבחור אחד מהכוננים או לדלג ולהשתמש ב־‎/mnt כברירת מחדל" - -msgid "Select which partitions to mark for formatting:" -msgstr "נא לבחור אילו מחיצות לסמן לפרמוט:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "להשתמש ב־HSM לשחרור כונן מוצפן" - -msgid "Device" -msgstr "התקן" - -msgid "Size" -msgstr "גודל" - -msgid "Free space" -msgstr "מקום פנוי" - -msgid "Bus-type" -msgstr "סוג אפיק" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "יש לציין או סיסמה למשתמש העליון (root) או לפחות משתמש אחד עם הרשאות על (sudo)" - -msgid "Enter username (leave blank to skip): " -msgstr "נא למלא שם משתמש (להשאיר ריק כדי לדלג): " - -msgid "The username you entered is invalid. Try again" -msgstr "שם המשתמש שמילאת שגוי. נא לנסות שוב" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "האם ל־„{}“ אמורות להיות הרשאות על (sudo)?" - -msgid "Select which partitions to encrypt" -msgstr "נא לבחור איזו מחיצה להצפין" - -msgid "very weak" -msgstr "חלשה מאוד" - -msgid "weak" -msgstr "חלשה" - -msgid "moderate" -msgstr "מתונה" - -msgid "strong" -msgstr "חזקה" - -msgid "Add subvolume" -msgstr "הוספת תת־כרך" - -msgid "Edit subvolume" -msgstr "עריכת תת־כרך" - -msgid "Delete subvolume" -msgstr "מחיקת תת־כרך" - -msgid "Configured {} interfaces" -msgstr "הוגדרו {} מנשקים" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "האפשרות הזאת מאפשרת מספר הורדות במקביל שיכולות להתרחש במהלך התקנה" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"נא למלא את מספר ההורדות המקביליות שתהיינה פעילות.‬\n" -"‫ (אמור להיות ערך בין 1 ל־{})‬\n" -"‫הערה:" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - ערך מרבי : {} ( מאפשר {} הורדות במקביל, מאפשר {} הורדות בבת אחת )" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - ערך מזערי : 1 ( מאפשר כל הורדות במקביל, מאפשר שתי הורדות בו־זמנית )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - השבתה/ברירת מחדל : 0 ( השבתת הורדה במקביל, מאפשר הורדה אחת בבת אחת )" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "קלט שגוי! נא לנסות שוב עם קלט תקין [1 עד {max_downloads}, או 0 להשבתה]" - -msgid "Parallel Downloads" -msgstr "הורדות במקביל" - -msgid "ESC to skip" -msgstr "‫ESC לדילוג" - -msgid "CTRL+C to reset" -msgstr "CTRL+C לאיפוס" - -msgid "TAB to select" -msgstr "TAB לבחירה" - -msgid "[Default value: 0] > " -msgstr "[ערך ברירת מחדל: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "כדי להשתמש בתרגום הזה, נא להתקין את הגופן שתומך בשפה הזאת ידנית." - -msgid "The font should be stored as {}" -msgstr "יש לאחסן את הגופן בתור {}" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "‫Archinstall דורש הרשאות עליונות (root) כדי לעלות. ‎--help לקבלת מידע נוסף." - -msgid "Select an execution mode" -msgstr "נא לבחור מצב הפעלה" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "לא ניתן למשוך את הפרופיל מהכתובת שצוינה: {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "השמות של הפרופילים חייבים להיות יחודיים, אך נמצאו הגדרות פרופילים עם שמות כפולים: {}" - -msgid "Select one or more devices to use and configure" -msgstr "נא לבחור התקן או יותר לשימוש ולהגדרה" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "איפוס בחירת ההתקנים יאפס גם את פריסת הכוננים הנוכחית. להמשיך?" - -msgid "Existing Partitions" -msgstr "מחיצות קיימות" - -msgid "Select a partitioning option" -msgstr "נא לבחור אפשרויות מחיצות" - -msgid "Enter the root directory of the mounted devices: " -msgstr "נא למלא את תיקיית השורש של ההתקנים המעוגנים: " - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "קיבולת מזערית למחיצת ‎/home: {} ג״ב\n" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "קיבולת מזערית למחיצת Arch Linux: {} ג״ב" - -msgid "This is a list of pre-programmed profiles_bck, they might make it easier to install things like desktop environments" -msgstr "זאת רשימה של פרופילי גיבוי שנכתבו מראש, הם עשויים להקל על התקנת דברים כמו סביבות שולחן עבודה" - -msgid "Current profile selection" -msgstr "בחירת הפרופיל הנוכחי" - -msgid "Remove all newly added partitions" -msgstr "הסרת כל המחיצות החדשות שנוספו" - -msgid "Assign mountpoint" -msgstr "הקצאת נקודת עגינה" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "סימון/ביטול סימן לפרמוט (מוחה את הנתונים)" - -msgid "Mark/Unmark as bootable" -msgstr "סימון/ביטול סימון כזמין לטעינה" - -msgid "Change filesystem" -msgstr "החלפת מערכת קבצים" - -msgid "Mark/Unmark as compressed" -msgstr "סימון/ביטול סימון כמכווץ" - -msgid "Set subvolumes" -msgstr "הגדרת תת־כרכים" - -msgid "Delete partition" -msgstr "מחיקת מחיצה" - -msgid "Partition" -msgstr "מחיצה" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "המחיצה הזאת מוצפנת כרגע, כדי לפרמט אותה צריך להגדיר מערכת קבצים" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "נקודות העגינה של המחיצה הן יחסיות למערכת ההתקנה, מחיצת הטעינה למשל תהיה ‎/boot." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "אם מוגדרת נקודת עגינה על ‎/boot, אז המחיצה תסומן כזמינה לטעינה." - -msgid "Mountpoint: " -msgstr "נקודת עגינה: " - -msgid "Current free sectors on device {}:" -msgstr "כמות המקטעים (סקטורים) הפנויים כרגע בכונן {}:" - -msgid "Total sectors: {}" -msgstr "סך כל המקטעים (סקטורים): {}" - -msgid "Enter the start sector (default: {}): " -msgstr "נא למלא את מקטע (סקטור) ההתחלה (ברירת מחדל: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "נא למלא את מקטע (סקטור) הסוף של המחיצה (אחוז או מספר בלוק, ברירת מחדל: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "הפעולה הזאת תסיר את המחיצות שנוספו, להמשיך?" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "ניהול מחיצות: {}" - -#, python-brace-format -msgid "Total length: {}" -msgstr "אורך כולל: {}" - -msgid "Encryption type" -msgstr "סוג הצפנה" - -msgid "Iteration time" -msgstr "" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "" - -msgid "Higher values increase security but slow down boot time" -msgstr "" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "" - -msgid "Iteration time cannot be empty" -msgstr "" - -msgid "Iteration time must be at least 100ms" -msgstr "" - -msgid "Iteration time must be at most 120000ms" -msgstr "" - -msgid "Please enter a valid number" -msgstr "" - -msgid "Partitions" -msgstr "מחיצות" - -msgid "No HSM devices available" -msgstr "אין התקני HSM זמינים" - -msgid "Partitions to be encrypted" -msgstr "מחיצות להצפנה" - -msgid "Select disk encryption option" -msgstr "נא לבחור אפשרויות להצפנת כונן" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "נא לבחור את התקן ה־FIDO2 לשימוש עבור HSM" - -msgid "Use a best-effort default partition layout" -msgstr "להשתמש בפריסת מחיצות כברירת מחדל על בסיס מאמץ מיטבי" - -msgid "Manual Partitioning" -msgstr "חלוקה ידנית למחיצות" - -msgid "Pre-mounted configuration" -msgstr "הגדרות לעיגון שבוצע" - -msgid "Unknown" -msgstr "לא ידוע" - -msgid "Partition encryption" -msgstr "הצפנת מחיצה" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr " ! {} מפורמט תחת " - -msgid "← Back" -msgstr "→ חזרה" - -msgid "Disk encryption" -msgstr "הצפנת כונן" - -msgid "Configuration" -msgstr "הגדרות" - -msgid "Password" -msgstr "סיסמה" - -msgid "All settings will be reset, are you sure?" -msgstr "כל ההגדרות תאופסנה, להמשיך?" - -msgid "Back" -msgstr "חזרה" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "נא לבחור את מערכת קבלת הפנים לפרופילים הנבחרים: {}" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "סוג סביבה: {}" - -msgid "The proprietary Nvidia driver is not supported by Sway. It is likely that you will run into issues, are you okay with that?" -msgstr "ב־Sway אין תמיכה במנהל ההתקן של Nvidia. כנראה שזה יוביל לבעיות, זה בסדר מבחינתך?" - -msgid "Installed packages" -msgstr "חבילות מותקנות" - -msgid "Add profile" -msgstr "הוספת פרופיל" - -msgid "Edit profile" -msgstr "עריכת פרופיל" - -msgid "Delete profile" -msgstr "מחיקת פרופיל" - -msgid "Profile name: " -msgstr "שם הפרופיל: " - -msgid "The profile name you entered is already in use. Try again" -msgstr "שם הפרופיל שמילאת כבר קיים. נא לנסות שוב" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "חבילות להתקנה עם הפרופיל הזה (להפריד ברווחים, ריק יוביל לדילוג על השלב הזה): " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "שירותים להפעלה עם הפרופיל הזה (להפריד ברווחים, ריק יוביל לדילוג על השלב הזה): " - -msgid "Should this profile be enabled for installation?" -msgstr "להפעיל את הפרופיל הזה להתקנה?" - -msgid "Create your own" -msgstr "יצירת אחד משלך" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"‫נא לבחור מנהל התקן גרפי או להשאיר ריק כדי להתקין את מנהל ההתקן שכולו בקוד פתוח" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "‫Sway צריך גישה למושב (אוסף של התקני חומרה כמו למשל מקלדת, עכבר וכו׳) שלך" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"‫נא לבחור אפשרות לתת ל־Sway גישה לחומרה שלך" - -msgid "Graphics driver" -msgstr "מנהלי התקני גרפיים" - -msgid "Greeter" -msgstr "מערכת קבלת פנים" - -msgid "Please chose which greeter to install" -msgstr "נא לבחור איזו מערכת קבלת פנים להתקין" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "זאת רשימה של פרופילים ברירת מחדל שנכתבו מראש" - -msgid "Disk configuration" -msgstr "הגדרת כונן" - -msgid "Profiles" -msgstr "פרופילים" - -msgid "Finding possible directories to save configuration files ..." -msgstr "מתבצע חיפוש אחר תיקיות אפשריות לשמירת קובצי ההגדרות…" - -msgid "Select directory (or directories) for saving configuration files" -msgstr "נא לבחור תיקייה (או תיקיות) לשמירת קובצי ההגדרות" - -msgid "Add a custom mirror" -msgstr "הוספת אתר מראה משלך" - -msgid "Change custom mirror" -msgstr "החלפת אתר מראה משלך" - -msgid "Delete custom mirror" -msgstr "מחיקת אתר מראה משלך" - -msgid "Enter name (leave blank to skip): " -msgstr "נא למלא שם (ריק לדילוג): " - -msgid "Enter url (leave blank to skip): " -msgstr "נא למלא כתובת (ריק לדילוג): " - -msgid "Select signature check option" -msgstr "בחירת אפשרות בדיקת חתימות" - -msgid "Select signature option" -msgstr "בחירת אפשרות חתימות" - -msgid "Custom mirrors" -msgstr "אתרי מראה משלך" - -msgid "Defined" -msgstr "מוגדר" - -msgid "Save user configuration (including disk layout)" -msgstr "שמירת הגדרות משתמש (כולל פריסת כוננים)" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"נא למלא תיקייה לשמירת ההגדרות (אפשר להשלים עם tab)\n" -"‬\n" -"‫תיקיית השמירה: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"לשמור את {} קובצי ההגדרות בתיקייה הבאה?‬\n" -"\n" -"‫{}" - -msgid "Saving {} configuration files to {}" -msgstr "קובצי ההגדרות {} נשמרים אל {}" - -msgid "Mirrors" -msgstr "אתרי מראה" - -msgid "Mirror regions" -msgstr "אזורי אתרי מראה" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - ערך מרבי : {} ( מאפשר {} הורדות במקביל, מאפשר {max_downloads+1} הורדות במקביל )" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "קלט שגוי! נא לנסות שוב עם קלט תקין [1 עד {}, או 0 להשבתה]" - -msgid "Locales" -msgstr "הגדרות אזוריות" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "להשתמש ב־NetworkManager (נחוץ להגדרת האינטרנט באופן גרפי ב־GNOME וב־KDE)" - -msgid "Total: {} / {}" -msgstr "סך הכול: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "אפשר להוסיף יחידה לכל ערך שהוא שהזנת: %, B,‏ KB,‏ KiB,‏ MB,‏ MiB…" - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "אם לא צוין ערך, הערך יפורש בתוך סקטורים (מגזרים)" - -msgid "Enter start (default: sector {}): " -msgstr "נא למלא התחלה (ברירת מחדל: סקטור {}): " - -msgid "Enter end (default: {}): " -msgstr "נא למלא סוף (ברירת מחדל: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "לא ניתן למצוא התקני fido2.‏ libfido2 מותקן?" - -msgid "Path" -msgstr "נתיב" - -msgid "Manufacturer" -msgstr "יצרן" - -msgid "Product" -msgstr "מוצר" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "הגדרה שגויה: {error}" - -msgid "Type" -msgstr "סוג" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "אפשרות זו מאפשרת כמה הורדות במקביל לטובת הורדות של חבילות" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"נא למלא את מספר ההורדות המקביליות להפעלה.‬\n" -"\n" -"‫הערה:‬\n" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - הערך המרבי המומלץ: {} ( מאפשר {} הורדות במקביל בכל עת )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - השבתה/ברירת מחדל : 0 ( משבית הורדות מקביליות, מאפשר רק הורדה אחת כל פעם )‬\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "קלט שגוי! נא לנסות שוב עם קלט תקין [או 0 להשבתה]" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "‫Hyprland צריך גישה למושב שלך (seat - אוסף של התקני חומרה, כלומר מקלדת, עכבר וכו׳)" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"‫נא לבחור אפשרות כדי לתת ל־Hyprland גישה לחומרה שלך" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "אפשר להוסיף יחידה לכל ערך שהוא: %, B,‏ KB,‏ KiB,‏ MB,‏ MiB…" - -msgid "Would you like to use unified kernel images?" -msgstr "להשתמש בדמויות ליבה אחודות (UKI)?" - -msgid "Unified kernel images" -msgstr "דמויות ליבה אחודות" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "בהמתנה להשלמת סנכרון השעון (timedatectl show)." - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "סנכרון זמן לא מסתיים, בזמן ההמתנה - כדאי לחפש צורות לעקוף את זה במסמכים: https://archinstall.readthedocs.io/‎" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "לדלג על המתנה לסנכרון השעון אוטומטית (יכול לגרום לבעיות אם השעה לא מסונכרנת במהלך ההתקנה)" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "בהמתנה לסיום סנכרון מחזיק מפתחות של Arch Linux‏ (archlinux-keyring-wkd-sync)." - -msgid "Selected profiles: " -msgstr "פרופילים נבחרים: " - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "סנכרון זמן לא מסתיים, בזמן ההמתנה - אפשר לחפש צורות לעקוף את זה במסמכים: https://archinstall.readthedocs.io/‎" - -msgid "Mark/Unmark as nodatacow" -msgstr "סימון/ביטול סימון כ־nodatacow" - -msgid "Would you like to use compression or disable CoW?" -msgstr "להשתמש בדחיסה או להשבית את CoW?" - -msgid "Use compression" -msgstr "להשתמש בדחיסה" - -msgid "Disable Copy-on-Write" -msgstr "השבתת העתקה בעת כתיבה" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "מספק מבחר סביבות שולחן עבודה ומנהלי ריצוף חלונות, למשל: GNOME,‏ KDE פלזמה, Sway" - -#, python-brace-format -msgid "Configuration type: {}" -msgstr "סוג הגדרה: {}" - -msgid "LVM configuration type" -msgstr "סוג הגדרת LVM" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "הצפנת כונן LVM עם יותר משתי מחיצות אינה נתמכת כרגע" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "להשתמש ב־NetworkManager (נחוץ להגדרת האינטרנט באופן גרפי ב־GNOME וב־KDE פלזמה)" - -msgid "Select a LVM option" -msgstr "בחירת אפשרות LVM" - -msgid "Partitioning" -msgstr "חלוקה למחיצות" - -msgid "Logical Volume Management (LVM)" -msgstr "ניהול כרכים לוגיים (LVM)" - -msgid "Physical volumes" -msgstr "כרכים פיזיים" - -msgid "Volumes" -msgstr "כרכים" - -msgid "LVM volumes" -msgstr "כרכי LVM" - -msgid "LVM volumes to be encrypted" -msgstr "כרכי LVM להצפנה" - -msgid "Select which LVM volumes to encrypt" -msgstr "נא לבחור אילו כרכי LVM להצפין" - -msgid "Default layout" -msgstr "פריסת ברירת מחדל" - -msgid "No Encryption" -msgstr "אין הצפנה" - -msgid "LUKS" -msgstr "LUKS" - -msgid "LVM on LUKS" -msgstr "LVM על גבי LUKS" - -msgid "LUKS on LVM" -msgstr "LUKS על גבי LVM" - -msgid "Yes" -msgstr "כן" - -msgid "No" -msgstr "לא" - -msgid "Archinstall help" -msgstr "העזרה של Archinstall" - -msgid " (default)" -msgstr " (ברירת מחדל)" - -msgid "Press Ctrl+h for help" -msgstr "לחיצה על Ctrl+h תפנה לעזרה" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "נא לבחור אפשרות לתת ל־Sway גישה לחומרה שלך" - -msgid "Seat access" -msgstr "גישה למושב" - -msgid "Mountpoint" -msgstr "נקודת עגינה" - -msgid "HSM" -msgstr "HSM" - -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "נא למלא סיסמה להצפנת הכונן (להשאיר ריק כדי לא להגדיר הצפנה)" - -msgid "Disk encryption password" -msgstr "סיסמת הצפנת כונן" - -msgid "Partition - New" -msgstr "מחיצה - חדשה" - -msgid "Filesystem" -msgstr "מערכת קבצים" - -msgid "Invalid size" -msgstr "גודל שגוי" - -msgid "Start (default: sector {}): " -msgstr "התחלה (ברירת מחדל: סקטור {}): " - -msgid "End (default: {}): " -msgstr "סוף (ברירת מחדל: {}): " - -msgid "Subvolume name" -msgstr "שם תת־כרך" - -msgid "Disk configuration type" -msgstr "סוג הגדרת כונן" - -msgid "Root mount directory" -msgstr "תיקיית עגינת שורש" - -msgid "Select language" -msgstr "בחירת שפה" - -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "נא לכתוב חבילות נוספות להתקנה (להפריד ברווחים, להשאיר ריק כדי לדלג)" - -msgid "Invalid download number" -msgstr "מספר ההורדה שגוי" - -msgid "Number downloads" -msgstr "מספר ההורדות" - -msgid "The username you entered is invalid" -msgstr "שם המשתמש שמילאת שגוי" - -msgid "Username" -msgstr "שם משתמש" - -#, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "האם ל־„{}“ אמורות להיות הרשאות על (sudo)?\n" - -msgid "Interfaces" -msgstr "מנשקים" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "יש למלא כתובת IP תקפה במצב הגדרות IP" - -msgid "Modes" -msgstr "מצבים" - -msgid "IP address" -msgstr "כתובת IP" - -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "נא למלא את כתובת ה־IP של שער הגישה (ראוטר - או להשאיר ריק כדי לא להגדיר)" - -msgid "Gateway address" -msgstr "כתובת שער גישה" - -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "נא למלא את שרתי ה־DNS שלך (להפריד ברווחים, להשאיר ריק אם אין)" - -msgid "DNS servers" -msgstr "שרתי DNS" - -msgid "Configure interfaces" -msgstr "הגדרת מנשקים" - -msgid "Kernel" -msgstr "ליבה" - -msgid "UEFI is not detected and some options are disabled" -msgstr "לא זוהה UEFI וחלק מהאפשרויות מושבתות" - -msgid "Info" -msgstr "פרטים" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "ב־Sway אין תמיכה במנהל ההתקן הקנייני של Nvidia." - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "כנראה שזה יוביל לבעיות, זה בסדר מבחינתך?" - -msgid "Main profile" -msgstr "פרופיל ראשי" - -msgid "Confirm password" -msgstr "אישור סיסמה" - -msgid "The confirmation password did not match, please try again" -msgstr "סיסמת האישור לא תואמת, נא לנסות שוב" - -msgid "Not a valid directory" -msgstr "אינה תיקייה תקפה" - -msgid "Would you like to continue?" -msgstr "להמשיך?" - -msgid "Directory" -msgstr "תיקייה" - -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "נא למלא תיקייה לשמירת ההגדרות (אפשר להשלים עם tab)" - -#, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "לשמור את קובצי ההגדרות אל {}?" - -msgid "Enabled" -msgstr "פעיל" - -msgid "Disabled" -msgstr "מושבת" - -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "נא להגיש דיווח על הבעיה הזאת (ואת הקובץ) דרך https://github.com/archlinux/archinstall/issues" - -msgid "Mirror name" -msgstr "שם אתר המראה" - -msgid "Url" -msgstr "כתובת" - -msgid "Select signature check" -msgstr "בחירת בדיקת חתימות" - -msgid "Select execution mode" -msgstr "בחירת מצב הפעלה" - -msgid "Press ? for help" -msgstr "נא ללחוץ על ? לעזרה" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "נא לבחור אפשרות כדי לתת ל־Hyprland גישה לחומרה שלך" - -msgid "Additional repositories" -msgstr "מאגרים נוספים" - -msgid "NTP" -msgstr "NTP" - -msgid "Swap on zram" -msgstr "החלפה ב־zram" - -msgid "Name" -msgstr "שם" - -msgid "Signature check" -msgstr "בדיקת חתימות" - -#, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "כמות המקטעים (הסגמנטים) הנבחרים בכונן {}:" - -#, python-brace-format -msgid "Size: {} / {}" -msgstr "גודל: {} / {}" - -#, python-brace-format -msgid "Size (default: {}): " -msgstr "גודל (ברירת מחדל: {}): " - -msgid "HSM device" -msgstr "התקן HSM" - -msgid "Some packages could not be found in the repository" -msgstr "חלק מהחבילות לא נמצאו במאגר" - -msgid "User" -msgstr "משתמש" - -msgid "The specified configuration will be applied" -msgstr "ההגדרות שצוינו תחולנה" - -msgid "Wipe" -msgstr "" - -#, fuzzy -msgid "Mark/Unmark as XBOOTLDR" -msgstr "סימון/ביטול סימון כזמין לטעינה" - -#, fuzzy -msgid "Loading packages..." -msgstr "חבילות נוספות" - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "" - -#, fuzzy -msgid "Add a custom repository" -msgstr "הוספת אתר מראה משלך" - -#, fuzzy -msgid "Change custom repository" -msgstr "החלפת אתר מראה משלך" - -#, fuzzy -msgid "Delete custom repository" -msgstr "מחיקת אתר מראה משלך" - -#, fuzzy -msgid "Repository name" -msgstr "שם אתר המראה" - -#, fuzzy -msgid "Add a custom server" -msgstr "הוספת אתר מראה משלך" - -#, fuzzy -msgid "Change custom server" -msgstr "החלפת אתר מראה משלך" - -#, fuzzy -msgid "Delete custom server" -msgstr "מחיקת אתר מראה משלך" - -msgid "Server url" -msgstr "" - -#, fuzzy -msgid "Select regions" -msgstr "בחירת אפשרות חתימות" - -#, fuzzy -msgid "Add custom servers" -msgstr "הוספת אתר מראה משלך" - -#, fuzzy -msgid "Add custom repository" -msgstr "הוספת אתר מראה משלך" - -#, fuzzy -msgid "Loading mirror regions..." -msgstr "אזורי אתרי מראה" - -#, fuzzy -msgid "Mirrors and repositories" -msgstr "מאגרי רשות" - -#, fuzzy -msgid "Selected mirror regions" -msgstr "אזורי אתרי מראה" - -#, fuzzy -msgid "Custom servers" -msgstr "אתרי מראה משלך" - -#, fuzzy -msgid "Custom repositories" -msgstr "מאגרי רשות" - -msgid "Only ASCII characters are supported" -msgstr "" - -msgid "Show help" -msgstr "" - -msgid "Exit help" -msgstr "" - -msgid "Preview scroll up" -msgstr "" - -msgid "Preview scroll down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move right" -msgstr "" - -msgid "Move left" -msgstr "" - -msgid "Jump to entry" -msgstr "" - -msgid "Skip selection (if available)" -msgstr "" - -msgid "Reset selection (if available)" -msgstr "" - -#, fuzzy -msgid "Select on single select" -msgstr "בחירת בדיקת חתימות" - -#, fuzzy -msgid "Select on multi select" -msgstr "בחירת אזור זמן" - -msgid "Reset" -msgstr "" - -#, fuzzy -msgid "Skip selection menu" -msgstr "בחירת מצב הפעלה" - -msgid "Start search mode" -msgstr "" - -msgid "Exit search mode" -msgstr "" - -#, fuzzy -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "‫Sway צריך גישה למושב (אוסף של התקני חומרה כמו למשל מקלדת, עכבר וכו׳) שלך" - -#, fuzzy -msgid "Choose an option to give labwc access to your hardware" -msgstr "נא לבחור אפשרות לתת ל־Sway גישה לחומרה שלך" - -#, fuzzy -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "‫Sway צריך גישה למושב (אוסף של התקני חומרה כמו למשל מקלדת, עכבר וכו׳) שלך" - -#, fuzzy -msgid "Choose an option to give niri access to your hardware" -msgstr "נא לבחור אפשרות לתת ל־Sway גישה לחומרה שלך" - -#, fuzzy -msgid "Mark/Unmark as ESP" -msgstr "סימון/ביטול סימון כזמין לטעינה" - -msgid "Package group:" -msgstr "" - -#, fuzzy -msgid "Exit archinstall" -msgstr "העזרה של Archinstall" - -#, fuzzy -msgid "Reboot system" -msgstr "מערכת קבצים" - -#, fuzzy -msgid "chroot into installation for post-installation configurations" -msgstr "האם להיכנס להתקנה החדשה שיצרת עם chroot (העמסת סביבה) לביצוע הגדרות שלאחר התקנה?" - -msgid "Installation completed" -msgstr "" - -#, fuzzy -msgid "What would you like to do next?" -msgstr "להמשיך?" - -#, fuzzy, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "נא לבחור איזה מצב להגדרה עבור „{}“ או לדלג כדי להשתמש במצב ברירת המחדל „{}“" - -#, fuzzy -msgid "Incorrect credentials file decryption password" -msgstr "סיסמת הצפנת כונן" - -#, fuzzy -msgid "Incorrect password" -msgstr "סיסמת root (משתמש עליון)" - -#, fuzzy -msgid "Credentials file decryption password" -msgstr "סיסמת הצפנת כונן" - -#, fuzzy -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "לשמור את קובצי ההגדרות אל {}?" - -#, fuzzy -msgid "Credentials file encryption password" -msgstr "סיסמת הצפנת כונן" - -#, fuzzy, python-brace-format -msgid "Repositories: {}" -msgstr "שם אתר המראה" - -#, fuzzy -msgid "New version available" -msgstr "אין התקני HSM זמינים" - -#, fuzzy -msgid "Passwordless login" -msgstr "סיסמה" - -msgid "Second factor login" -msgstr "" - -msgid "Bluetooth" -msgstr "" - -#, fuzzy -msgid "Would you like to configure Bluetooth?" -msgstr "להמשיך?" - -msgid "Authentication" -msgstr "" - -msgid "Applications" -msgstr "" - -msgid "U2F login method: " -msgstr "" - -msgid "Passwordless sudo: " -msgstr "" - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "" - -msgid "Syncing the system..." -msgstr "" - -msgid "Value cannot be empty" -msgstr "" - -msgid "Snapshot type" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Snapshot type: {}" -msgstr "סוג סביבה: {}" - -msgid "U2F login setup" -msgstr "" - -msgid "No U2F devices found" -msgstr "" - -msgid "U2F Login Method" -msgstr "" - -#, fuzzy -msgid "Enable passwordless sudo?" -msgstr "נא למלא סיסמה: " - -#, fuzzy, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "נא לבחור את התקן ה־FIDO2 לשימוש עבור HSM" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "" - -msgid "Starting device modifications in " -msgstr "" - -#, fuzzy -msgid "No network connection found" -msgstr "אין הגדרות רשת" - -#, fuzzy -msgid "Would you like to connect to a Wifi?" -msgstr "להמשיך?" - -#, fuzzy -msgid "No wifi interface found" -msgstr "הגדרת מנשקים" - -#, fuzzy -msgid "Select wifi network to connect to" -msgstr "נא לבחור מנשק רשת להגדרה" - -msgid "Scanning wifi networks..." -msgstr "" - -#, fuzzy -msgid "No wifi networks found" -msgstr "אין הגדרות רשת" - -msgid "Failed setting up wifi" -msgstr "" - -#, fuzzy -msgid "Enter wifi password" -msgstr "נא למלא סיסמה: " - -msgid "Ok" -msgstr "" diff --git a/examples/archinstall/archinstall/locales/hi/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/hi/LC_MESSAGES/base.mo deleted file mode 100644 index 65ce321..0000000 Binary files a/examples/archinstall/archinstall/locales/hi/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/hi/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/hi/LC_MESSAGES/base.po deleted file mode 100644 index 32dc07b..0000000 --- a/examples/archinstall/archinstall/locales/hi/LC_MESSAGES/base.po +++ /dev/null @@ -1,1759 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" -"Language: hi\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.2.2\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "" - -msgid "Do you really want to abort?" -msgstr "" - -msgid "And one more time for verification: " -msgstr "सत्यापन के लिए एक बार और: " - -msgid "Would you like to use swap on zram?" -msgstr "क्या आप swap के लिए zram इस्तेमाल करना चाहेंगे?" - -msgid "Desired hostname for the installation: " -msgstr "इच्छित होस्ट का नाम (hostname) इंस्टालेशन के लिए: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "" - -msgid "Any additional users to install (leave blank for no users): " -msgstr "" - -msgid "Should this user be a superuser (sudoer)?" -msgstr "क्या यह user एक superuser होना चाहिए (sudoer)?" - -msgid "Select a timezone" -msgstr "एक समयक्षेत्र चुनें" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "क्या आप systemd-boot की जगह GRUB इस्तेमाल करना चाहेंगे bootloader ke liye?" - -msgid "Choose a bootloader" -msgstr "एक bootloader चुनें" - -msgid "Choose an audio server" -msgstr "एक audio server चुनें" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "" - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "" - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "अन्य packages का नाम लिखें (स्पेस छोड़कर, अन्यथा खाली छोड़ें): " - -msgid "Copy ISO network configuration to installation" -msgstr "" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "" - -msgid "Select one network interface to configure" -msgstr "" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "" - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "" - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "" - -msgid "Select which filesystem your main partition should use" -msgstr "" - -msgid "Current partition layout" -msgstr "" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" - -msgid "Enter a desired filesystem type for the partition" -msgstr "" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "" - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "" - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "" - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "" - -msgid "Archinstall language" -msgstr "" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "" - -msgid "Select what you wish to do with the selected block devices" -msgstr "" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "" - -msgid "Select keyboard layout" -msgstr "" - -msgid "Select one of the regions to download packages from" -msgstr "" - -msgid "Select one or more hard drives to use and configure" -msgstr "" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "" - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" - -msgid "All open-source (default)" -msgstr "" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "" - -msgid "Choose which locale language to use" -msgstr "" - -msgid "Choose which locale encoding to use" -msgstr "" - -msgid "Select one of the values shown below: " -msgstr "" - -msgid "Select one or more of the options below: " -msgstr "" - -msgid "Adding partition...." -msgstr "" - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "" - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "" - -msgid "Keyboard layout" -msgstr "" - -msgid "Mirror region" -msgstr "" - -msgid "Locale language" -msgstr "" - -msgid "Locale encoding" -msgstr "" - -msgid "Drive(s)" -msgstr "" - -msgid "Disk layout" -msgstr "" - -msgid "Encryption password" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Bootloader" -msgstr "" - -msgid "Root password" -msgstr "" - -msgid "Superuser account" -msgstr "" - -msgid "User account" -msgstr "" - -msgid "Profile" -msgstr "" - -msgid "Audio" -msgstr "" - -msgid "Kernels" -msgstr "" - -msgid "Additional packages" -msgstr "" - -msgid "Network configuration" -msgstr "" - -msgid "Automatic time sync (NTP)" -msgstr "" - -msgid "Install ({} config(s) missing)" -msgstr "" - -msgid "" -"You decided to skip harddrive selection\n" -"and will use whatever drive-setup is mounted at {} (experimental)\n" -"WARNING: Archinstall won't check the suitability of this setup\n" -"Do you wish to continue?" -msgstr "" - -msgid "Re-using partition instance: {}" -msgstr "" - -msgid "Create a new partition" -msgstr "" - -msgid "Delete a partition" -msgstr "" - -msgid "Clear/Delete all partitions" -msgstr "" - -msgid "Assign mount-point for a partition" -msgstr "" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "" - -msgid "Set desired filesystem for a partition" -msgstr "" - -msgid "Abort" -msgstr "" - -msgid "Hostname" -msgstr "" - -msgid "Not configured, unavailable unless setup manually" -msgstr "" - -msgid "Timezone" -msgstr "" - -msgid "Set/Modify the below options" -msgstr "" - -msgid "Install" -msgstr "" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" - -msgid "Suggest partition layout" -msgstr "" - -msgid "Enter a password: " -msgstr "" - -msgid "Enter a encryption password for {}" -msgstr "" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "" - -msgid "Create a required super-user with sudo privileges: " -msgstr "" - -msgid "Enter root password (leave blank to disable root): " -msgstr "" - -msgid "Password for user \"{}\": " -msgstr "" - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "" - -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 "" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "" - -msgid "Use ESC to skip\n" -msgstr "" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" - -msgid "Cancel" -msgstr "" - -msgid "Confirm and exit" -msgstr "" - -msgid "Add" -msgstr "" - -msgid "Copy" -msgstr "" - -msgid "Edit" -msgstr "" - -msgid "Delete" -msgstr "" - -msgid "Select an action for '{}'" -msgstr "" - -msgid "Copy to new key:" -msgstr "" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "" - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "" - -msgid "Choose which optional additional repositories to enable" -msgstr "" - -msgid "Add a user" -msgstr "" - -msgid "Change password" -msgstr "" - -msgid "Promote/Demote user" -msgstr "" - -msgid "Delete User" -msgstr "" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" - -msgid "User Name : " -msgstr "" - -msgid "Should {} be a superuser (sudoer)?" -msgstr "" - -msgid "Define users with sudo privilege: " -msgstr "" - -msgid "No network configuration" -msgstr "" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "" - -msgid "No configuration" -msgstr "" - -msgid "Save user configuration" -msgstr "" - -msgid "Save user credentials" -msgstr "" - -msgid "Save disk layout" -msgstr "" - -msgid "Save all" -msgstr "" - -msgid "Choose which configuration to save" -msgstr "" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "" - -msgid "Not a valid directory: {}" -msgstr "" - -msgid "The password you are using seems to be weak," -msgstr "" - -msgid "are you sure you want to use it?" -msgstr "" - -msgid "Optional repositories" -msgstr "" - -msgid "Save configuration" -msgstr "" - -msgid "Missing configurations:\n" -msgstr "" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "" - -msgid "Manage superuser accounts: " -msgstr "" - -msgid "Manage ordinary user accounts: " -msgstr "" - -msgid " Subvolume :{:16}" -msgstr "" - -msgid " mounted at {:16}" -msgstr "" - -msgid " with option {}" -msgstr "" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" - -msgid "Subvolume name " -msgstr "" - -msgid "Subvolume mountpoint" -msgstr "" - -msgid "Subvolume options" -msgstr "" - -msgid "Save" -msgstr "" - -msgid "Subvolume name :" -msgstr "" - -msgid "Select a mount point :" -msgstr "" - -msgid "Select the desired subvolume options " -msgstr "" - -msgid "Define users with sudo privilege, by username: " -msgstr "" - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "" - -msgid "Would you like to use BTRFS compression?" -msgstr "" - -msgid "Would you like to create a separate partition for /home?" -msgstr "" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "" - -msgid "Continue" -msgstr "" - -msgid "yes" -msgstr "" - -msgid "no" -msgstr "" - -msgid "set: {}" -msgstr "" - -msgid "Manual configuration setting must be a list" -msgstr "" - -msgid "No iface specified for manual configuration" -msgstr "" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "" - -msgid "Add interface" -msgstr "" - -msgid "Edit interface" -msgstr "" - -msgid "Delete interface" -msgstr "" - -msgid "Select interface to add" -msgstr "" - -msgid "Manual configuration" -msgstr "" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "" - -msgid "Select your desired desktop environment" -msgstr "" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "" - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "" - -msgid "Press Enter to continue." -msgstr "" - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "" - -msgid "Are you sure you want to reset this setting?" -msgstr "" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "" - -msgid "Save and exit" -msgstr "सहेजें और छोड़ें" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" - -msgid "No audio server" -msgstr "" - -msgid "(default)" -msgstr "" - -msgid "Use ESC to skip" -msgstr "छोड़ने के लिए ESC का उपयोग करें" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" - -msgid "Copy to: " -msgstr "" - -msgid "Edit: " -msgstr "" - -msgid "Key: " -msgstr "" - -msgid "Edit {}: " -msgstr "" - -msgid "Add: " -msgstr "" - -msgid "Value: " -msgstr "" - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "" - -msgid "Select which partitions to mark for formatting:" -msgstr "" - -msgid "Use HSM to unlock encrypted drive" -msgstr "" - -msgid "Device" -msgstr "" - -msgid "Size" -msgstr "" - -msgid "Free space" -msgstr "खाली जगह" - -msgid "Bus-type" -msgstr "" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "" - -msgid "Enter username (leave blank to skip): " -msgstr "" - -msgid "The username you entered is invalid. Try again" -msgstr "" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "" - -msgid "Select which partitions to encrypt" -msgstr "" - -msgid "very weak" -msgstr "बहुत कमजोर" - -msgid "weak" -msgstr "कमजोर" - -msgid "moderate" -msgstr "मध्यम" - -msgid "strong" -msgstr "मज़बूत" - -msgid "Add subvolume" -msgstr "" - -msgid "Edit subvolume" -msgstr "" - -msgid "Delete subvolume" -msgstr "" - -msgid "Configured {} interfaces" -msgstr "" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr "" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr "" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr "" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "" - -msgid "Parallel Downloads" -msgstr "" - -msgid "ESC to skip" -msgstr "" - -msgid "CTRL+C to reset" -msgstr "" - -msgid "TAB to select" -msgstr "" - -msgid "[Default value: 0] > " -msgstr "" - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "" - -msgid "The font should be stored as {}" -msgstr "" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "" - -msgid "Select an execution mode" -msgstr "" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "" - -msgid "Select one or more devices to use and configure" -msgstr "" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "" - -msgid "Existing Partitions" -msgstr "" - -msgid "Select a partitioning option" -msgstr "" - -msgid "Enter the root directory of the mounted devices: " -msgstr "" - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "" - -msgid "This is a list of pre-programmed profiles_bck, they might make it easier to install things like desktop environments" -msgstr "" - -msgid "Current profile selection" -msgstr "" - -msgid "Remove all newly added partitions" -msgstr "" - -msgid "Assign mountpoint" -msgstr "" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "" - -msgid "Mark/Unmark as bootable" -msgstr "" - -msgid "Change filesystem" -msgstr "" - -msgid "Mark/Unmark as compressed" -msgstr "" - -msgid "Set subvolumes" -msgstr "" - -msgid "Delete partition" -msgstr "" - -msgid "Partition" -msgstr "" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "" - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "" - -msgid "Mountpoint: " -msgstr "" - -msgid "Current free sectors on device {}:" -msgstr "" - -msgid "Total sectors: {}" -msgstr "" - -msgid "Enter the start sector (default: {}): " -msgstr "" - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "" - -msgid "This will remove all newly added partitions, continue?" -msgstr "" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "" - -#, python-brace-format -msgid "Total length: {}" -msgstr "" - -msgid "Encryption type" -msgstr "" - -msgid "Iteration time" -msgstr "" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "" - -msgid "Higher values increase security but slow down boot time" -msgstr "" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "" - -msgid "Iteration time cannot be empty" -msgstr "" - -msgid "Iteration time must be at least 100ms" -msgstr "" - -msgid "Iteration time must be at most 120000ms" -msgstr "" - -msgid "Please enter a valid number" -msgstr "" - -msgid "Partitions" -msgstr "" - -msgid "No HSM devices available" -msgstr "" - -msgid "Partitions to be encrypted" -msgstr "" - -msgid "Select disk encryption option" -msgstr "" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "" - -msgid "Use a best-effort default partition layout" -msgstr "" - -msgid "Manual Partitioning" -msgstr "" - -msgid "Pre-mounted configuration" -msgstr "" - -msgid "Unknown" -msgstr "" - -msgid "Partition encryption" -msgstr "" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr "" - -msgid "← Back" -msgstr "" - -msgid "Disk encryption" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Password" -msgstr "पासवर्ड" - -msgid "All settings will be reset, are you sure?" -msgstr "" - -msgid "Back" -msgstr "" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "" - -msgid "The proprietary Nvidia driver is not supported by Sway. It is likely that you will run into issues, are you okay with that?" -msgstr "" - -msgid "Installed packages" -msgstr "" - -msgid "Add profile" -msgstr "" - -msgid "Edit profile" -msgstr "" - -msgid "Delete profile" -msgstr "" - -msgid "Profile name: " -msgstr "" - -msgid "The profile name you entered is already in use. Try again" -msgstr "" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "" - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "" - -msgid "Should this profile be enabled for installation?" -msgstr "" - -msgid "Create your own" -msgstr "" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" - -msgid "Graphics driver" -msgstr "" - -msgid "Greeter" -msgstr "" - -msgid "Please chose which greeter to install" -msgstr "" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "" - -msgid "Disk configuration" -msgstr "" - -msgid "Profiles" -msgstr "" - -msgid "Finding possible directories to save configuration files ..." -msgstr "" - -msgid "Select directory (or directories) for saving configuration files" -msgstr "" - -msgid "Add a custom mirror" -msgstr "" - -msgid "Change custom mirror" -msgstr "" - -msgid "Delete custom mirror" -msgstr "" - -msgid "Enter name (leave blank to skip): " -msgstr "" - -msgid "Enter url (leave blank to skip): " -msgstr "" - -msgid "Select signature check option" -msgstr "" - -msgid "Select signature option" -msgstr "" - -msgid "Custom mirrors" -msgstr "" - -msgid "Defined" -msgstr "" - -msgid "Save user configuration (including disk layout)" -msgstr "" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" - -msgid "Saving {} configuration files to {}" -msgstr "" - -msgid "Mirrors" -msgstr "" - -msgid "Mirror regions" -msgstr "" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr "" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "" - -msgid "Locales" -msgstr "" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "" - -msgid "Total: {} / {}" -msgstr "" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "" - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "" - -msgid "Enter start (default: sector {}): " -msgstr "" - -msgid "Enter end (default: {}): " -msgstr "" - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "" - -msgid "Path" -msgstr "" - -msgid "Manufacturer" -msgstr "" - -msgid "Product" -msgstr "" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "" - -msgid "Type" -msgstr "" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr "" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr "" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "" - -msgid "Would you like to use unified kernel images?" -msgstr "" - -msgid "Unified kernel images" -msgstr "" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "" - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "" - -msgid "Selected profiles: " -msgstr "" - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "" - -msgid "Mark/Unmark as nodatacow" -msgstr "" - -#, fuzzy -msgid "Would you like to use compression or disable CoW?" -msgstr "क्या आप swap के लिए zram इस्तेमाल करना चाहेंगे?" - -msgid "Use compression" -msgstr "" - -msgid "Disable Copy-on-Write" -msgstr "" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "" - -#, python-brace-format -msgid "Configuration type: {}" -msgstr "" - -msgid "LVM configuration type" -msgstr "" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "" - -#, fuzzy -msgid "Select a LVM option" -msgstr "एक समयक्षेत्र चुनें" - -msgid "Partitioning" -msgstr "" - -msgid "Logical Volume Management (LVM)" -msgstr "" - -msgid "Physical volumes" -msgstr "" - -msgid "Volumes" -msgstr "" - -msgid "LVM volumes" -msgstr "" - -msgid "LVM volumes to be encrypted" -msgstr "" - -msgid "Select which LVM volumes to encrypt" -msgstr "" - -msgid "Default layout" -msgstr "" - -msgid "No Encryption" -msgstr "" - -msgid "LUKS" -msgstr "" - -msgid "LVM on LUKS" -msgstr "" - -msgid "LUKS on LVM" -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "No" -msgstr "" - -msgid "Archinstall help" -msgstr "" - -msgid " (default)" -msgstr "" - -msgid "Press Ctrl+h for help" -msgstr "" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "" - -msgid "Seat access" -msgstr "" - -msgid "Mountpoint" -msgstr "" - -msgid "HSM" -msgstr "" - -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "" - -msgid "Disk encryption password" -msgstr "" - -msgid "Partition - New" -msgstr "" - -msgid "Filesystem" -msgstr "" - -msgid "Invalid size" -msgstr "" - -msgid "Start (default: sector {}): " -msgstr "" - -msgid "End (default: {}): " -msgstr "" - -msgid "Subvolume name" -msgstr "" - -msgid "Disk configuration type" -msgstr "" - -msgid "Root mount directory" -msgstr "" - -#, fuzzy -msgid "Select language" -msgstr "एक समयक्षेत्र चुनें" - -#, fuzzy -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "अन्य packages का नाम लिखें (स्पेस छोड़कर, अन्यथा खाली छोड़ें): " - -msgid "Invalid download number" -msgstr "" - -msgid "Number downloads" -msgstr "" - -msgid "The username you entered is invalid" -msgstr "" - -msgid "Username" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "क्या यह user एक superuser होना चाहिए (sudoer)?" - -msgid "Interfaces" -msgstr "" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "" - -msgid "Modes" -msgstr "" - -msgid "IP address" -msgstr "" - -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "" - -msgid "Gateway address" -msgstr "" - -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "" - -msgid "DNS servers" -msgstr "" - -msgid "Configure interfaces" -msgstr "" - -msgid "Kernel" -msgstr "" - -msgid "UEFI is not detected and some options are disabled" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "" - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "" - -msgid "Main profile" -msgstr "" - -msgid "Confirm password" -msgstr "" - -msgid "The confirmation password did not match, please try again" -msgstr "" - -msgid "Not a valid directory" -msgstr "" - -#, fuzzy -msgid "Would you like to continue?" -msgstr "क्या आप swap के लिए zram इस्तेमाल करना चाहेंगे?" - -msgid "Directory" -msgstr "" - -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "" - -#, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Disabled" -msgstr "" - -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "" - -msgid "Mirror name" -msgstr "" - -msgid "Url" -msgstr "" - -msgid "Select signature check" -msgstr "" - -#, fuzzy -msgid "Select execution mode" -msgstr "एक समयक्षेत्र चुनें" - -msgid "Press ? for help" -msgstr "" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "" - -msgid "Additional repositories" -msgstr "" - -msgid "NTP" -msgstr "" - -msgid "Swap on zram" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Signature check" -msgstr "" - -#, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "" - -#, python-brace-format -msgid "Size: {} / {}" -msgstr "" - -#, python-brace-format -msgid "Size (default: {}): " -msgstr "" - -msgid "HSM device" -msgstr "" - -msgid "Some packages could not be found in the repository" -msgstr "" - -msgid "User" -msgstr "" - -msgid "The specified configuration will be applied" -msgstr "" - -msgid "Wipe" -msgstr "" - -msgid "Mark/Unmark as XBOOTLDR" -msgstr "" - -msgid "Loading packages..." -msgstr "" - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "" - -msgid "Add a custom repository" -msgstr "" - -msgid "Change custom repository" -msgstr "" - -msgid "Delete custom repository" -msgstr "" - -msgid "Repository name" -msgstr "" - -msgid "Add a custom server" -msgstr "" - -#, fuzzy -msgid "Change custom server" -msgstr "एक audio server चुनें" - -msgid "Delete custom server" -msgstr "" - -msgid "Server url" -msgstr "" - -#, fuzzy -msgid "Select regions" -msgstr "एक समयक्षेत्र चुनें" - -msgid "Add custom servers" -msgstr "" - -msgid "Add custom repository" -msgstr "" - -msgid "Loading mirror regions..." -msgstr "" - -msgid "Mirrors and repositories" -msgstr "" - -msgid "Selected mirror regions" -msgstr "" - -msgid "Custom servers" -msgstr "" - -msgid "Custom repositories" -msgstr "" - -msgid "Only ASCII characters are supported" -msgstr "" - -msgid "Show help" -msgstr "" - -msgid "Exit help" -msgstr "" - -msgid "Preview scroll up" -msgstr "" - -msgid "Preview scroll down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move right" -msgstr "" - -msgid "Move left" -msgstr "" - -msgid "Jump to entry" -msgstr "" - -msgid "Skip selection (if available)" -msgstr "" - -msgid "Reset selection (if available)" -msgstr "" - -msgid "Select on single select" -msgstr "" - -#, fuzzy -msgid "Select on multi select" -msgstr "एक समयक्षेत्र चुनें" - -msgid "Reset" -msgstr "" - -#, fuzzy -msgid "Skip selection menu" -msgstr "एक समयक्षेत्र चुनें" - -msgid "Start search mode" -msgstr "" - -msgid "Exit search mode" -msgstr "" - -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "Choose an option to give labwc access to your hardware" -msgstr "" - -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "Choose an option to give niri access to your hardware" -msgstr "" - -msgid "Mark/Unmark as ESP" -msgstr "" - -msgid "Package group:" -msgstr "" - -msgid "Exit archinstall" -msgstr "" - -msgid "Reboot system" -msgstr "" - -msgid "chroot into installation for post-installation configurations" -msgstr "" - -msgid "Installation completed" -msgstr "" - -#, fuzzy -msgid "What would you like to do next?" -msgstr "क्या आप swap के लिए zram इस्तेमाल करना चाहेंगे?" - -#, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "" - -msgid "Incorrect credentials file decryption password" -msgstr "" - -msgid "Incorrect password" -msgstr "" - -msgid "Credentials file decryption password" -msgstr "" - -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "" - -msgid "Credentials file encryption password" -msgstr "" - -#, python-brace-format -msgid "Repositories: {}" -msgstr "" - -msgid "New version available" -msgstr "" - -#, fuzzy -msgid "Passwordless login" -msgstr "पासवर्ड" - -msgid "Second factor login" -msgstr "" - -msgid "Bluetooth" -msgstr "" - -#, fuzzy -msgid "Would you like to configure Bluetooth?" -msgstr "क्या आप swap के लिए zram इस्तेमाल करना चाहेंगे?" - -msgid "Authentication" -msgstr "" - -msgid "Applications" -msgstr "" - -msgid "U2F login method: " -msgstr "" - -msgid "Passwordless sudo: " -msgstr "" - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "" - -msgid "Syncing the system..." -msgstr "" - -msgid "Value cannot be empty" -msgstr "" - -msgid "Snapshot type" -msgstr "" - -#, python-brace-format -msgid "Snapshot type: {}" -msgstr "" - -msgid "U2F login setup" -msgstr "" - -msgid "No U2F devices found" -msgstr "" - -msgid "U2F Login Method" -msgstr "" - -msgid "Enable passwordless sudo?" -msgstr "" - -#, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "" - -msgid "Starting device modifications in " -msgstr "" - -msgid "No network connection found" -msgstr "" - -#, fuzzy -msgid "Would you like to connect to a Wifi?" -msgstr "क्या आप swap के लिए zram इस्तेमाल करना चाहेंगे?" - -msgid "No wifi interface found" -msgstr "" - -msgid "Select wifi network to connect to" -msgstr "" - -msgid "Scanning wifi networks..." -msgstr "" - -msgid "No wifi networks found" -msgstr "" - -msgid "Failed setting up wifi" -msgstr "" - -msgid "Enter wifi password" -msgstr "" - -msgid "Ok" -msgstr "" diff --git a/examples/archinstall/archinstall/locales/hu/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/hu/LC_MESSAGES/base.mo deleted file mode 100644 index 742a2fe..0000000 Binary files a/examples/archinstall/archinstall/locales/hu/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/hu/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/hu/LC_MESSAGES/base.po deleted file mode 100644 index a437963..0000000 --- a/examples/archinstall/archinstall/locales/hu/LC_MESSAGES/base.po +++ /dev/null @@ -1,1812 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: summoner \n" -"Language-Team: \n" -"Language: hu\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.8\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] A naplófájl itt jött létre: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Jelentse ezt a problémát (a naplófájllal együtt) itt: https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "Biztosan megszakítja?" - -msgid "And one more time for verification: " -msgstr "És még egyszer az ellenőrzéshez: " - -msgid "Would you like to use swap on zram?" -msgstr "Biztosan cserehelyet akar használni a zRam-on?" - -msgid "Desired hostname for the installation: " -msgstr "Gép neve a telepítéshez: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "A rendszergazda felhasználóneve a számítógép használatához szükséges „sudo” jogosultságokkal: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "További felhasználók hozzáadása a telepítéshez (hagyja üresen, ha nem akar több felhasználót hozzáadni): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "Ennek a felhasználónak rendszergazdának (sudoer) kell lennie?" - -msgid "Select a timezone" -msgstr "Időzóna kiválasztása" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "Szeretné használni a GRUB-ot rendszerbetöltőként a systemd-boot helyett?" - -msgid "Choose a bootloader" -msgstr "Válasszon ki egy rendszerbetöltőt" - -msgid "Choose an audio server" -msgstr "Válasszon ki egy hangkiszolgálót" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Csak az olyan csomagok mint a base, base-devel, linux, linux-firmware, efibootmgr és a nem kötelező profilcsomagok lesznek telepítve." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "Ha olyan böngészőre vágyik, mint például a Firefox vagy a Chromium, akkor azt a következő promptban adhatja meg." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "Írjon be további csomagneveket a telepítéshez (szóközzel elválasztva; hagyja üresen a kihagyáshoz): " - -msgid "Copy ISO network configuration to installation" -msgstr "Másolja be az ISO hálózati konfigurációt a telepítéshez" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "A hálózatkezelő használata (szükséges az internet grafikus konfigurálásához GNOME-ban és KDE-ben)" - -msgid "Select one network interface to configure" -msgstr "Válasszon ki egy hálózati csatolót a konfiguráláshoz" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "Válassza ki a konfigurálandó módot a következőhöz: „{}”, vagy hagyja ki ezt a lépést az alapértelmezett „{}” mód használatához" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "Adja meg az IP-címét és az alhálózatát (például: 192.168.0.5/24) a következőhöz: {}: " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "Adja meg az átjáró (elosztó) IP-címét (hagyja üresen, ha nincs ilyen): " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "Adja meg a DNS-kiszolgálókat (szóközzel elválasztva; hagyja üresen, ha nincsenek ilyenek): " - -msgid "Select which filesystem your main partition should use" -msgstr "Válassza ki, hogy a fő partíció milyen fájlrendszert használjon" - -msgid "Current partition layout" -msgstr "A partíció jelenlegi elrendezése" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"Válassza ki, hogy mi legyen a teendő a következővel:\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "Adja meg a partíció fájlrendszertípusát" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "Adja meg a kezdési helyet (felosztott egységekben: s, GB, %, stb. ; alapértelmezett: {}): " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "Adja meg a befejezési helyet (felosztott egységekben: s, GB, %, stb. ; például: {}): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "A(z) {} sorban álló partíciókat tartalmaz, ez eltávolítja azokat, biztos benne?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"Index alapján válassza ki a törlendő partíciókat" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"Index alapján válassza ki, hogy melyik partíció hová legyen csatolva" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * A partíció csatolási pontjai a telepítésen belülre vonatkoznak, a „boot” például „/boot” lesz." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "Válassza ki, hogy hová legyen csatolva a partíció (hagyja üresen a csatolási pont eltávolításához): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"Válassza ki a formázásra megjelölendő partíció(ka)t" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"Válassza ki a titkosításra megjelölendő partíció(ka)t" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"Válassza ki a rendszerbetöltőként megjelölendő partíciót" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"Válassza ki, hogy melyik partícióra legyen beállítva a fájlrendszer" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "Adja meg a partíció fájlrendszertípusát: " - -msgid "Archinstall language" -msgstr "Az Archinstall nyelve" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Törölje az összes kiválasztott meghajtót, és használja a lehető legjobb beállítást lehetővé tévő alapértelmezett partícióelrendezést" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Válassza ki, hogy mit tegyen a telepítő az egyes meghajtókkal (ezt a partícióhasználat követi)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "Válassza ki, hogy mit tegyen a telepítő a kiválasztott blokkeszközökkel" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "Ez az előre programozott profilok listája, amelyek megkönnyíthetik az olyan dolgok telepítését, mint például az asztali környezetek" - -msgid "Select keyboard layout" -msgstr "Válassza ki a billentyűzetkiosztást" - -msgid "Select one of the regions to download packages from" -msgstr "Válassza ki a régiót a csomagok letöltéséhez" - -msgid "Select one or more hard drives to use and configure" -msgstr "Válasszon ki egy vagy több meghajtót a használathoz és a konfiguráláshoz" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "Az AMD hardverrel való legjobb kompatibilitás érdekében érdemes lehet az összes nyílt forráskódú- vagy az AMD / ATI beállítást használni." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "Az Intel hardverrel való legjobb kompatibilitás érdekében érdemes lehet az összes nyílt forráskódú- vagy az Intel beállítást használni.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Az Nvidia hardverrel való legjobb kompatibilitás érdekében érdemes lehet az Nvidia saját fejlesztésű, zárt illesztőprogramját használni.\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Válasszon ki egy grafikus illesztőprogramot vagy hagyja üresen az összes nyílt forráskódú illesztőprogram telepítéséhez" - -msgid "All open-source (default)" -msgstr "Összes nyílt forráskódú (alapértelmezett)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "Válassza ki a használandó kerneleket, vagy hagyja üresen az alapértelmezett „{}” kernel használatához" - -msgid "Choose which locale language to use" -msgstr "Válassza ki a használandó területi nyelvet" - -msgid "Choose which locale encoding to use" -msgstr "Válassza ki a használandó nyelvi kódolást" - -msgid "Select one of the values shown below: " -msgstr "Válasszon az alábbi értékek egyikéből: " - -msgid "Select one or more of the options below: " -msgstr "Válasszon ki egyet vagy többet az alábbi beállítások közül: " - -msgid "Adding partition...." -msgstr "Partíció hozzáadása…" - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "A folytatáshoz meg kell adnia egy érvényes fs-típust. Az érvényes fs-típusok megtekinthetők a „man parted” részben." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Hiba: A(z) „{}” webcímen lévő profilok listázása a következőket eredményezte:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "Hiba: Nem sikerült dekódolni a(z) „{}” eredményt JSON-ként:" - -msgid "Keyboard layout" -msgstr "Billentyűzetkiosztás" - -msgid "Mirror region" -msgstr "Tükörrégió" - -msgid "Locale language" -msgstr "Helyi nyelv" - -msgid "Locale encoding" -msgstr "Helyi kódolás" - -msgid "Drive(s)" -msgstr "Meghajtó(k)" - -msgid "Disk layout" -msgstr "Lemezelrendezés" - -msgid "Encryption password" -msgstr "Titkosítási jelszó" - -msgid "Swap" -msgstr "Cserehely" - -msgid "Bootloader" -msgstr "Rendszerbetöltő" - -msgid "Root password" -msgstr "Root-jelszó" - -msgid "Superuser account" -msgstr "Rendszergazdai fiók" - -msgid "User account" -msgstr "Felhasználói fiók" - -msgid "Profile" -msgstr "Profil" - -msgid "Audio" -msgstr "Hang" - -msgid "Kernels" -msgstr "Kernelek" - -msgid "Additional packages" -msgstr "További csomagok" - -msgid "Network configuration" -msgstr "Hálózati konfiguráció" - -msgid "Automatic time sync (NTP)" -msgstr "Automatikus időszinkronizálás (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "Telepítés ({} konfiguráció hiányzik)" - -msgid "" -"You decided to skip harddrive selection\n" -"and will use whatever drive-setup is mounted at {} (experimental)\n" -"WARNING: Archinstall won't check the suitability of this setup\n" -"Do you wish to continue?" -msgstr "" -"Ön úgy döntött, hogy kihagyja a merevlemez kiválasztását\n" -"és azt a meghajtóbeállítást fogja használni, amely a(z) {} helyen van csatolva (kísérleti)\n" -"FIGYELMEZTETÉS: Az Archinstall nem ellenőrzi ennek a beállításnak a megfelelőségét\n" -"Biztosan folytatni akarja?" - -msgid "Re-using partition instance: {}" -msgstr "Partíciópéldány ismételt felhasználása: {}" - -msgid "Create a new partition" -msgstr "Új partíció létrehozása" - -msgid "Delete a partition" -msgstr "Partíció törlése" - -msgid "Clear/Delete all partitions" -msgstr "Az összes partíció tisztítása/törlése" - -msgid "Assign mount-point for a partition" -msgstr "Csatolási pont hozzárendelése egy partícióhoz" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "Egy partíció megjelölése/elvetése mint formázandó (adatok törlése)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "Egy partíció megjelölése/elvetése mint titkosított" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "Egy partíció megjelölése/elvetése mint rendszerindító (automatikus a „/boot” esetében)" - -msgid "Set desired filesystem for a partition" -msgstr "Állítsa be a partíció fájlrendszertípusát" - -msgid "Abort" -msgstr "Megszakítás" - -msgid "Hostname" -msgstr "Gép neve" - -msgid "Not configured, unavailable unless setup manually" -msgstr "Nincs konfigurálva, nem érhető el, kivéve, ha kézzel állítja be" - -msgid "Timezone" -msgstr "Időzóna" - -msgid "Set/Modify the below options" -msgstr "Az alábbi beállítások beállítása/módosítása" - -msgid "Install" -msgstr "Telepítés" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"ESC → a kihagyáshoz\n" -"\n" - -msgid "Suggest partition layout" -msgstr "Partícióelrendezési javaslat" - -msgid "Enter a password: " -msgstr "Adjon meg egy jelszót: " - -msgid "Enter a encryption password for {}" -msgstr "Adjon meg egy titkosítási jelszót a következőhöz: {}" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "Adjon meg egy jelszót a lemez titkosításához (hagyja üresen, ha nem akarja titkosítani): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "Hozzon létre egy szükséges rendszergazdát „sudo” jogosultságokkal: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "Adjon meg egy root-jelszót (hagyja üresen a „root” letiltásához): " - -msgid "Password for user \"{}\": " -msgstr "A(z) „{}” nevű felhasználó jelszava: " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "További csomagok létezésének ellenőrzése (ez eltarthat néhány másodpercig)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "Szeretné használni az automatikus időszinkronizálást (NTP) az alapértelmezett kiszolgálókkal?\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 "" -"Az NTP működéséhez szükség lehet a hardveridőre és egyéb utólagos konfigurációs lépésekre.\n" -"További információkért tekintse meg az Arch wiki-t" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "Adjon meg egy felhasználónevet egy további felhasználó létrehozásához (üresen hagyva ez a lépés kihagyható): " - -msgid "Use ESC to skip\n" -msgstr "" -"ESC → a kihagyáshoz\n" -"\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -"Válasszon ki egy objektumot a listából, majd válasszon ki egyet a végrehajtandó műveletek közül" - -msgid "Cancel" -msgstr "Mégse" - -msgid "Confirm and exit" -msgstr "Megerősítés és kilépés" - -msgid "Add" -msgstr "Hozzáadás" - -msgid "Copy" -msgstr "Másolás" - -msgid "Edit" -msgstr "Szerkesztés" - -msgid "Delete" -msgstr "Törlés" - -msgid "Select an action for '{}'" -msgstr "Válasszon ki egy műveletet a következőhöz: „{}”" - -msgid "Copy to new key:" -msgstr "Másolás új kulcsba:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "Ismeretlen nic-típus: {}. Lehetséges értékek: {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"Ez az ön által választott konfiguráció:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "A Pacman már fut, várjon maximum 10 percet a megszakításával." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "A már meglévő pacman-zár soha nem lép ki. Az Archinstall használata előtt tisztítsa meg a meglévő pacman-munkameneteket." - -msgid "Choose which optional additional repositories to enable" -msgstr "Válassza ki a további (nem kötelező) engedélyezendő tárolókat" - -msgid "Add a user" -msgstr "Felhasználó hozzáadása" - -msgid "Change password" -msgstr "Jelszó módosítása" - -msgid "Promote/Demote user" -msgstr "Felhasználó előléptetése/lefokozása" - -msgid "Delete User" -msgstr "Felhasználó törlése" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"Új felhasználó meghatározása\n" - -msgid "User Name : " -msgstr "Felhasználónév : " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "{} rendszergazda (sudoer) legyen?" - -msgid "Define users with sudo privilege: " -msgstr "A „sudo” jogosultsággal rendelkező felhasználók meghatározása: " - -msgid "No network configuration" -msgstr "Nincs hálózati konfiguráció" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "Állítsa be egy BTRFS-partíció alköteteit" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"Válassza ki, hogy melyik partícióra legyenek beállítva az alkötetek" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "A jelenlegi partíció BTRFS-alköteteinek kezelése" - -msgid "No configuration" -msgstr "Nincs konfiguráció" - -msgid "Save user configuration" -msgstr "Felhasználói konfiguráció mentése" - -msgid "Save user credentials" -msgstr "Felhasználói hitelesítési adatok mentése" - -msgid "Save disk layout" -msgstr "Lemezelrendezés mentése" - -msgid "Save all" -msgstr "Összes mentése" - -msgid "Choose which configuration to save" -msgstr "Válassza ki a mentendő konfiguráció(ka)t" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "Adjon meg egy könyvtárat a mentendő konfiguráció(k) számára: " - -msgid "Not a valid directory: {}" -msgstr "Érvénytelen könyvtár: {}" - -msgid "The password you are using seems to be weak," -msgstr "Úgy tűnik, hogy a megadott jelszó gyenge," - -msgid "are you sure you want to use it?" -msgstr "biztosan használni akarja?" - -msgid "Optional repositories" -msgstr "Nem kötelező tárolók" - -msgid "Save configuration" -msgstr "Konfiguráció mentése" - -msgid "Missing configurations:\n" -msgstr "Hiányzó konfigurációk:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "Meg kell adni egy root-jelszót vagy legalább 1 rendszergazdát" - -msgid "Manage superuser accounts: " -msgstr "Rendszergazdai fiókok kezelése: " - -msgid "Manage ordinary user accounts: " -msgstr "Normál felhasználói fiókok kezelése: " - -msgid " Subvolume :{:16}" -msgstr " Alkötet :{:16}" - -msgid " mounted at {:16}" -msgstr " csatolva a következőhöz: {:16}" - -msgid " with option {}" -msgstr " a következő beállítással: {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -"Adja meg az értékeket egy új alkötethez \n" - -msgid "Subvolume name " -msgstr "Alkötet neve " - -msgid "Subvolume mountpoint" -msgstr "Alkötet csatolási pontja" - -msgid "Subvolume options" -msgstr "Alkötetbeállítások" - -msgid "Save" -msgstr "Mentés" - -msgid "Subvolume name :" -msgstr "Alkötet neve :" - -msgid "Select a mount point :" -msgstr "Válasszon ki egy csatolási pontot :" - -msgid "Select the desired subvolume options " -msgstr "Válassza ki az alkötetbeállításokat " - -msgid "Define users with sudo privilege, by username: " -msgstr "A „sudo” jogosultsággal rendelkező felhasználók meghatározása a felhasználónév alapján: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] A naplófájl itt jött létre: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "Szeretne BTRFS-alköteteket alapértelmezett struktúrával használni?" - -msgid "Would you like to use BTRFS compression?" -msgstr "Szeretne BTRFS-tömörítést használni?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "Szeretne egy külön partíciót létrehozni a „/home” számára?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "A kiválasztott meghajtók nem rendelkeznek az automatikus javaslathoz szükséges minimális kapacitással.\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "A „/home” partíció minimális kapacitása: {} GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Az Arch Linux-partíció minimális kapacitása: {} GB" - -msgid "Continue" -msgstr "Folytatás" - -msgid "yes" -msgstr "igen" - -msgid "no" -msgstr "nem" - -msgid "set: {}" -msgstr "beállítás: {}" - -msgid "Manual configuration setting must be a list" -msgstr "A kézi konfigurációs beállításnak egy listának kell lennie" - -msgid "No iface specified for manual configuration" -msgstr "Nincs megadva iface a kézi konfigurációhoz" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "A kézi nic-konfiguráció automatikus DHCP nélkül egy IP-címet igényel" - -msgid "Add interface" -msgstr "Csatoló hozzáadása" - -msgid "Edit interface" -msgstr "Csatoló szerkesztése" - -msgid "Delete interface" -msgstr "Csatoló törlése" - -msgid "Select interface to add" -msgstr "Válassza ki a hozzáadandó csatolót" - -msgid "Manual configuration" -msgstr "Kézi konfiguráció" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "A partíció megjelölése/elvetése mint tömörített (csak BTRFS)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "Úgy tűnik, hogy a megadott jelszó gyenge. Biztosan használni akarja?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "Asztali környezetek és ablakkezelők széles választékát kínálja, például: gnome, kde, sway" - -msgid "Select your desired desktop environment" -msgstr "Válassza ki az asztali környezetet" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "Egy nagyon alapszintű telepítés, amely lehetővé teszi, hogy az Arch Linuxot saját belátása szerint testre szabja." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "Különböző kiszolgálócsomagok széles választékát kínálja a telepítéshez és az engedélyezéshez, például: httpd, nginx, mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "Válassza ki, hogy mely kiszolgálók legyenek telepítve, ha egyiket sem választja ki, akkor minimális telepítés történik" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "Telepít egy minimális rendszert, valamint a xorg és a grafikus illesztőprogramokat." - -msgid "Press Enter to continue." -msgstr "A folytatáshoz nyomja meg az „Entert”." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "Szeretne chroot-olni az újonnan létrehozott telepítésbe, és elvégezni a telepítés utáni konfigurációt?" - -msgid "Are you sure you want to reset this setting?" -msgstr "Biztosan vissza akarja állítani ezt a beállítást alapértelmezettre?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "Válasszon ki egy vagy több meghajtót a használathoz és konfiguráláshoz.\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "A meglévő beállítások bármilyen módosítása visszaállítja a lemezelrendezést az alapértelmezettre!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "Ha alapértelmezettre állítja a meghajtókiválasztást, akkor a jelenlegi lemezelrendezést is visszaállítja. Biztos benne?" - -msgid "Save and exit" -msgstr "Mentés és kilépés" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"sorban álló partíciót tartalmaz, ez eltávolítja azokat, biztos benne?" - -msgid "No audio server" -msgstr "Nincs kiválasztva hangkiszolgáló" - -msgid "(default)" -msgstr "(alapértelmezett)" - -msgid "Use ESC to skip" -msgstr "ESC → a kihagyáshoz" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"CTRL+C → a jelenlegi kiválasztás visszaállításához\n" -"\n" - -msgid "Copy to: " -msgstr "Másolás ide: " - -msgid "Edit: " -msgstr "Szerkesztés: " - -msgid "Key: " -msgstr "Kulcs: " - -msgid "Edit {}: " -msgstr "{} szerkesztése: " - -msgid "Add: " -msgstr "Hozzáadás: " - -msgid "Value: " -msgstr "Érték: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "Kihagyhatja a meghajtó kiválasztását és a particionálást, továbbá bármilyen meghajtóbeállítást használhat, amely az „/mnt” könyvtárhoz van csatolva (kísérleti)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "Válassza ki az egyik lemezt, vagy hagyja ki ezt a lépést és használja az „/mnt” csatolási pontot alapértelmezettként" - -msgid "Select which partitions to mark for formatting:" -msgstr "Válassza ki a formázásra megjelölendő partíciókat:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "HSM használata a titkosított meghajtó feloldásához" - -msgid "Device" -msgstr "Eszköz" - -msgid "Size" -msgstr "Méret" - -msgid "Free space" -msgstr "Szabad terület" - -msgid "Bus-type" -msgstr "Busztípus" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "Meg kell adni egy root-jelszót, vagy legalább 1 „sudo” jogosultsággal rendelkező felhasználót" - -msgid "Enter username (leave blank to skip): " -msgstr "Felhasználónév megadása (hagyja üresen a kihagyáshoz): " - -msgid "The username you entered is invalid. Try again" -msgstr "A megadott felhasználónév érvénytelen. Próbálja újra" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "A(z) „{}” nevű felhasználónak rendszergazdának (sudoer) kell lennie?" - -msgid "Select which partitions to encrypt" -msgstr "Válassza ki a titkosítandó partíciókat" - -msgid "very weak" -msgstr "nagyon gyenge" - -msgid "weak" -msgstr "gyenge" - -msgid "moderate" -msgstr "közepes" - -msgid "strong" -msgstr "erős" - -msgid "Add subvolume" -msgstr "Alkötet hozzáadása" - -msgid "Edit subvolume" -msgstr "Alkötet szerkesztése" - -msgid "Delete subvolume" -msgstr "Alkötet törlése" - -msgid "Configured {} interfaces" -msgstr "{} konfigurált csatoló" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "Ez a beállítás lehetővé teszi, hogy telepítéskor hány párhuzamos letöltés történhet" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"Adja meg az engedélyezendő párhuzamos letöltések számát.\n" -" (Adjon meg egy értéket 1 és {} között)\n" -"Megjegyzés:" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - Maximális érték : {} ({} párhuzamos letöltést tesz lehetővé és egyszerre {} letöltést enged meg)" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - Minimális érték : 1 (1 párhuzamos letöltést tesz lehetővé és egyszerre 2 letöltést enged meg)" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - Letiltás/alapértelmezett: 0 (Kikapcsolja a párhuzamos letöltést, egyszerre csak 1 letöltést tesz lehetővé)" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "Érvénytelen bemenet! Próbálja újra egy érvényes bemenettel [1-től {max_downloads}-ig, vagy 0-t a letiltáshoz]" - -msgid "Parallel Downloads" -msgstr "Párhuzamos letöltések" - -msgid "ESC to skip" -msgstr "ESC → a kihagyáshoz" - -msgid "CTRL+C to reset" -msgstr "CTRL+C → a visszaállításhoz" - -msgid "TAB to select" -msgstr "TAB → a listaelem(ek) kiválasztásához" - -msgid "[Default value: 0] > " -msgstr "[Alapértelmezett érték: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "A fordítás használatához telepítsen kézileg egy olyan betűtípust, amelyik támogatja ezt a nyelvet." - -msgid "The font should be stored as {}" -msgstr "A betűtípust úgy kell eltárolni mint {}" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "Az Archinstall futtatásához root-jogosultságok szükségesek. További információkért tekintse meg a súgót: --help." - -msgid "Select an execution mode" -msgstr "Válasszon ki egy végrehajtási módot" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "Nem sikerült lekérni a profilt a megadott webcímről: {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "A profiloknak egyedi névvel kell rendelkezniük, de ismétlődő névvel rendelkező profildefiníciók találhatók: {}" - -msgid "Select one or more devices to use and configure" -msgstr "Válasszon ki egy vagy több eszközt a használathoz és a konfiguráláshoz" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "Ha visszaállítja az eszközkiválasztást, akkor a jelenlegi lemezelrendezést is visszaállítja. Biztos benne?" - -msgid "Existing Partitions" -msgstr "Meglévő partíciók" - -msgid "Select a partitioning option" -msgstr "Válasszon ki egy particionálási beállítást" - -msgid "Enter the root directory of the mounted devices: " -msgstr "Adja meg a csatolt eszközök gyökérkönyvtárát: " - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "A „/home” partíció minimális kapacitása: {} GB\n" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "Az Arch Linux partíció minimális kapacitása: {} GB" - -msgid "This is a list of pre-programmed profiles_bck, they might make it easier to install things like desktop environments" -msgstr "Ez az előre programozott profiles_bck lista, ami megkönnyítheti az olyan dolgok telepítését, mint például az asztali környezetekét" - -msgid "Current profile selection" -msgstr "Jelenlegi profil kiválasztása" - -msgid "Remove all newly added partitions" -msgstr "Az összes újonnan hozzáadott partíció eltávolítása" - -msgid "Assign mountpoint" -msgstr "Csatolási pont hozzárendelése" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "Megjelölés/elvetés mint formázandó (adatok törlése)" - -msgid "Mark/Unmark as bootable" -msgstr "Megjelölés/elvetés mint rendszerindító" - -msgid "Change filesystem" -msgstr "Fájlrendszer módosítása" - -msgid "Mark/Unmark as compressed" -msgstr "Megjelölés/elvetés mint tömörített" - -msgid "Set subvolumes" -msgstr "Alkötetek beállítása" - -msgid "Delete partition" -msgstr "Partíció törlése" - -msgid "Partition" -msgstr "Partíció" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "Ez a partíció jelenleg titkosított, a formázásához meg kell adni egy fájlrendszert" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "A partíció csatolási pontok a telepítésen belülre vonatkoznak, a „boot” például „/boot” lesz." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "Ha a „/boot” csatolási pont be van állítva, akkor a partíció is rendszerbetöltőnek lesz megjelölve." - -msgid "Mountpoint: " -msgstr "Csatolási pont: " - -msgid "Current free sectors on device {}:" -msgstr "Jelenlegi szabad szektorok a(z) {} eszközön:" - -msgid "Total sectors: {}" -msgstr "Összes szektor: {}" - -msgid "Enter the start sector (default: {}): " -msgstr "Adja meg a kezdési szektort (alapértelmezett: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "Adja meg a partíció végszektorát (százalékban vagy blokkszámban, alapértelmezett: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "Ezzel eltávolítja az összes újonnan hozzáadott partíciót, folytatja?" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "Partíciókezelés: {}" - -#, python-brace-format -msgid "Total length: {}" -msgstr "Teljes hossz: {}" - -msgid "Encryption type" -msgstr "Titkosítástípus" - -msgid "Iteration time" -msgstr "Iterációs idő" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "Adja meg az iterációs időt a LUKS-titkosításhoz (ezredmásodpercben)" - -msgid "Higher values increase security but slow down boot time" -msgstr "A nagyobb értékek növelik a biztonságot, de lassítják a rendszerindítást" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "Alapértelmezett: 10 000 ms, ajánlott tartomány: 1 000 - 60 000" - -msgid "Iteration time cannot be empty" -msgstr "Az iterációs idő nem lehet üres" - -msgid "Iteration time must be at least 100ms" -msgstr "Az iterációs időnek legalább 100 ms-nek kell lennie" - -msgid "Iteration time must be at most 120000ms" -msgstr "Az iterációs idő legfeljebb 120 000 ms lehet" - -msgid "Please enter a valid number" -msgstr "Adjon meg egy érvényes számot" - -msgid "Partitions" -msgstr "Partíciók" - -msgid "No HSM devices available" -msgstr "Nem állnak rendelkezésre HSM-eszközök" - -msgid "Partitions to be encrypted" -msgstr "Titkosítandó partíciók" - -msgid "Select disk encryption option" -msgstr "Válasszon ki egy lemeztitkosítási beállítást" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "Válassza ki a HSM-hez használandó FIDO2-eszközt" - -msgid "Use a best-effort default partition layout" -msgstr "A lehető legjobb beállítást lehetővé tévő alapértelmezett partícióelrendezés használata" - -msgid "Manual Partitioning" -msgstr "Kézi particionálás" - -msgid "Pre-mounted configuration" -msgstr "Előcsatolt konfiguráció" - -msgid "Unknown" -msgstr "Ismeretlen" - -msgid "Partition encryption" -msgstr "Partíciótitkosítás" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr " ! {} formázása erre: " - -msgid "← Back" -msgstr "← Vissza" - -msgid "Disk encryption" -msgstr "Lemeztitkosítás" - -msgid "Configuration" -msgstr "Konfiguráció" - -msgid "Password" -msgstr "Jelszó" - -msgid "All settings will be reset, are you sure?" -msgstr "Az összes beállítás vissza lesz állítva az alapértelmezettre, biztos benne?" - -msgid "Back" -msgstr "Vissza" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "Válassza ki a telepítendő bejelentkezési segédet a kiválasztott profilokhoz: {}" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "Környezet típusa: {}" - -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 "A Sway nem támogatja az Nvidia saját fejlesztésű, zárt illesztőprogramját. Valószínű, hogy problémákba fog ütközni, rendben van ez így?" - -msgid "Installed packages" -msgstr "Telepített csomagok" - -msgid "Add profile" -msgstr "Profil hozzáadása" - -msgid "Edit profile" -msgstr "Profil szerkesztése" - -msgid "Delete profile" -msgstr "Profil törlése" - -msgid "Profile name: " -msgstr "Profil neve: " - -msgid "The profile name you entered is already in use. Try again" -msgstr "A megadott profilnév már használatban van. Próbálja újra" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "Ezzel a profillal telepítendő csomagok (szóközzel elválasztva; hagyja üresen a kihagyáshoz): " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "A profillal engedélyezendő szolgáltatások (szóközzel elválasztva; hagyja üresen a kihagyáshoz): " - -msgid "Should this profile be enabled for installation?" -msgstr "Engedélyezi ezt a profilt a telepítéshez?" - -msgid "Create your own" -msgstr "Hozza létre a sajátját" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"Válasszon ki egy grafikus illesztőprogramot, vagy hagyja üresen az összes nyílt forráskódú illesztőprogram telepítéséhez" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "A Swaynek hozzáférésre van szüksége (olyan hardvereszközök gyűjteményéhez mint például a billentyűzet, az egér, stb.)" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Válasszon ki egy beállítást, hogy engedélyezze a Sway számára a hardverekhez való hozzáférést" - -msgid "Graphics driver" -msgstr "Grafikus illesztőprogram" - -msgid "Greeter" -msgstr "Bejelentkezési segéd" - -msgid "Please chose which greeter to install" -msgstr "Válassza ki a telepítendő bejelentkezési segédet" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "Ez az előre programozott „default_profiles” listája" - -msgid "Disk configuration" -msgstr "Lemezkonfiguráció" - -msgid "Profiles" -msgstr "Profilok" - -msgid "Finding possible directories to save configuration files ..." -msgstr "Lehetséges könyvtárak keresése a konfigurációs fájlok mentéséhez…" - -msgid "Select directory (or directories) for saving configuration files" -msgstr "Válassza ki a könyvtára(ka)t a konfigurációs fájlok mentéséhez" - -msgid "Add a custom mirror" -msgstr "Egyéni tükör hozzáadása" - -msgid "Change custom mirror" -msgstr "Egyéni tükör módosítása" - -msgid "Delete custom mirror" -msgstr "Egyéni tükör törlése" - -msgid "Enter name (leave blank to skip): " -msgstr "Adjon meg egy nevet (hagyja üresen a kihagyáshoz): " - -msgid "Enter url (leave blank to skip): " -msgstr "Adjon megy egy webcímet (hagyja üresen a kihagyáshoz): " - -msgid "Select signature check option" -msgstr "Válasszon ki egy aláírás-ellenőrzési beállítást" - -msgid "Select signature option" -msgstr "Válasszon ki egy aláírásbeállítást" - -msgid "Custom mirrors" -msgstr "Egyéni tükrök" - -msgid "Defined" -msgstr "Meghatározott" - -msgid "Save user configuration (including disk layout)" -msgstr "Felhasználói konfiguráció mentése (beleértve a lemezelrendezést is)" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"Adjon meg egy könyvtárat a mentendő konfiguráció(k) számára (a tabulátoros kiegészítés engedélyezve van)\n" -"Mentési könyvtár: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"Szeretné elmenteni a(z) {} konfigurációs fájlt a következő helyre?\n" -"\n" -"{}" - -msgid "Saving {} configuration files to {}" -msgstr "{} konfigurációs fájl mentése ide: {}" - -msgid "Mirrors" -msgstr "Tükrök" - -msgid "Mirror regions" -msgstr "Tükörrégiók" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - Maximális érték : {} ( {} párhuzamos letöltést tesz lehetővé és egyszerre {max_downloads+1} letöltést enged meg )" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "Érvénytelen bemenet! Próbálja újra egy érvényes bemenettel [1-től {}-ig, vagy 0-t a letiltáshoz]" - -msgid "Locales" -msgstr "Nyelvi beállítások" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "A hálózatkezelő használata (szükséges az internet grafikus konfigurálásához GNOME-ban és KDE-ben)" - -msgid "Total: {} / {}" -msgstr "Összesen: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "Az összes beírt értéket mértékegységekkel kell ellátni: B, KB, KiB, MB, MiB…" - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "Ha nincs mértékegység megadva, akkor az értéket szektorokként értelmezi" - -msgid "Enter start (default: sector {}): " -msgstr "Kezdési hely megadása (alapértelmezett: {} szektor): " - -msgid "Enter end (default: {}): " -msgstr "Végpont megadása (alapértelmezett: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "Nem sikerült meghatározni a FIDO2-eszközöket. Telepítve van a libfido2?" - -msgid "Path" -msgstr "Elérési útvonal" - -msgid "Manufacturer" -msgstr "Gyártó" - -msgid "Product" -msgstr "Termék" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "Érvénytelen konfiguráció: {error}" - -msgid "Type" -msgstr "Típus" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "Ez a beállítás engedélyezi a csomagletöltéskor a lehetséges párhuzamos letöltések számát" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"Adja meg az engedélyezendő párhuzamos letöltések számát.\n" -"\n" -"Megjegyzés:\n" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - Maximális ajánlott érték : {} ( Egyszerre {} párhuzamos letöltést tesz lehetővé )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - Letiltás/Alapértelmezett: 0 (Kikapcsolja a párhuzamos letöltést, egyszerre csak 1 letöltést tesz lehetővé)\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "Érvénytelen bemenet! Próbálja újra egy érvényes bemenettel [vagy 0-t a letiltáshoz]" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "A Hyprlandnek hozzáférésre van szüksége (olyan hardvereszközök gyűjteményéhez mint például a billentyűzet, az egér, stb.)" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Válasszon ki egy beállítást, hogy engedélyezze a Hyprland számára a hardverekhez való hozzáférést" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "Az összes beírt értéket mértékegységgel kell ellátni: %, B, KB, KiB, MB, MiB…" - -msgid "Would you like to use unified kernel images?" -msgstr "Szeretne egységesített kernelképeket (UKI) használni?" - -msgid "Unified kernel images" -msgstr "Egységesített kernelképek (UKI)" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "Várakozás az időszinkronizálás (timedatectl show) befejezésére." - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Az időszinkronizálás nem fejeződik be, amíg várakozik - tekintse meg a dokumentációban a megoldásokat: https://archinstall.readthedocs.io/" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "Az automatikus időszinkronizálásra való várakozás kihagyása (ez problémákat okozhat, ha az idő nincs szinkronban a telepítéskor)" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "Várakozás az Arch Linux-kulcstartó szinkronizálásának (archlinux-keyring-wkd-sync) befejezésére." - -msgid "Selected profiles: " -msgstr "Kiválasztott profil: " - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Az időszinkronizálás nem fejeződik be, amíg várakozik - tekintse meg a dokumentációban a megoldásokat: https://archinstall.readthedocs.io/" - -msgid "Mark/Unmark as nodatacow" -msgstr "Megjelölés/elvetés mint „nodatacow”" - -msgid "Would you like to use compression or disable CoW?" -msgstr "Szeretne tömörítést használni vagy letiltani az adatmásolást íráskor?" - -msgid "Use compression" -msgstr "Tömörítés használata" - -msgid "Disable Copy-on-Write" -msgstr "Adatmásolás letiltása íráskor" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "Asztali környezetek és csempés ablakkezelők széles választékát kínálja, például: GNOME, KDE Plasma, Sway" - -#, python-brace-format -msgid "Configuration type: {}" -msgstr "Konfigurációtípus: {}" - -msgid "LVM configuration type" -msgstr "LVM-konfigurációtípus" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "Az LVM-lemez titkosítása 2-nél több partícióval jelenleg nem támogatott" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "A hálózatkezelő használata (szükséges az internet grafikus konfigurálásához GNOME-ban és KDE Plasma-ban)" - -msgid "Select a LVM option" -msgstr "Válasszon ki egy LVM-beállítást" - -msgid "Partitioning" -msgstr "Particionálás" - -msgid "Logical Volume Management (LVM)" -msgstr "Logikai kötetkezelő (LVM)" - -msgid "Physical volumes" -msgstr "Fizikai kötetek" - -msgid "Volumes" -msgstr "Kötetek" - -msgid "LVM volumes" -msgstr "LVM-kötetek" - -msgid "LVM volumes to be encrypted" -msgstr "Titkosítandó LVM-kötetek" - -msgid "Select which LVM volumes to encrypt" -msgstr "Válassza ki a titkosítandó LVM-köteteket" - -msgid "Default layout" -msgstr "Alapértelmezett elrendezés" - -msgid "No Encryption" -msgstr "Nincs titkosítás" - -msgid "LUKS" -msgstr "LUKS" - -msgid "LVM on LUKS" -msgstr "LVM a LUKS fölött" - -msgid "LUKS on LVM" -msgstr "LUKS az LVM fölött" - -msgid "Yes" -msgstr "Igen" - -msgid "No" -msgstr "Nem" - -msgid "Archinstall help" -msgstr "Archinstall súgó" - -msgid " (default)" -msgstr " (alapértelmezett)" - -msgid "Press Ctrl+h for help" -msgstr "CTRL+h → a súgó megjelenítéséhez" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "Válasszon ki egy beállítást, hogy engedélyezze a Sway számára a hardverekhez való hozzáférést" - -msgid "Seat access" -msgstr "Hozzáférés a munkaállomáshoz" - -msgid "Mountpoint" -msgstr "Csatolási pont" - -msgid "HSM" -msgstr "HSM" - -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "Adjon meg egy jelszót a lemez titkosításához (hagyja üresen, ha nem akarja titkosítani)" - -msgid "Disk encryption password" -msgstr "Lemeztitkosítási jelszó" - -msgid "Partition - New" -msgstr "Partíció - új" - -msgid "Filesystem" -msgstr "Fájlrendszer" - -msgid "Invalid size" -msgstr "Érvénytelen méret" - -msgid "Start (default: sector {}): " -msgstr "Kezdési hely megadása (alapértelmezett: {} szektor): " - -msgid "End (default: {}): " -msgstr "Végpont megadása (alapértelmezett: {}): " - -msgid "Subvolume name" -msgstr "Alkötet neve" - -msgid "Disk configuration type" -msgstr "Lemezkonfiguráció típusa" - -msgid "Root mount directory" -msgstr "Root csatolási könyvtár" - -msgid "Select language" -msgstr "Nyelv kiválasztása" - -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "Írjon be további csomagneveket a telepítéshez (szóközzel elválasztva; hagyja üresen a kihagyáshoz)" - -msgid "Invalid download number" -msgstr "Érvénytelen letöltésszám" - -msgid "Number downloads" -msgstr "Letöltésszám" - -msgid "The username you entered is invalid" -msgstr "A megadott felhasználónév érvénytelen" - -msgid "Username" -msgstr "Felhasználónév" - -#, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "A(z) „{}” nevű felhasználónak rendszergazdának (sudoer) kell lennie?\n" - -msgid "Interfaces" -msgstr "Csatolók" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "Meg kell adnia egy érvényes IP-címet az IP-cím-konfigurációs módban" - -msgid "Modes" -msgstr "Módok" - -msgid "IP address" -msgstr "IP-cím" - -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "Adja meg az átjáró (elosztó) IP-címét (hagyja üresen, ha nincs ilyen)" - -msgid "Gateway address" -msgstr "Átjárócím" - -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "Adja meg a DNS-kiszolgálókat (szóközzel elválasztva; hagyja üresen, ha nincsenek ilyenek)" - -msgid "DNS servers" -msgstr "DNS-kiszolgálók" - -msgid "Configure interfaces" -msgstr "Csatolók konfigurálása" - -msgid "Kernel" -msgstr "Kernel" - -msgid "UEFI is not detected and some options are disabled" -msgstr "Az UEFI nem észlelhető, és egyes beállítások le vannak tiltva" - -msgid "Info" -msgstr "Információ" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "A Sway nem támogatja az Nvidia saját fejlesztésű, zárt illesztőprogramját." - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "Valószínű, hogy problémákba fog ütközni, rendben van ez így?" - -msgid "Main profile" -msgstr "Fő profil" - -msgid "Confirm password" -msgstr "Jelszó megerősítése" - -msgid "The confirmation password did not match, please try again" -msgstr "A megerősítéshez használt jelszó nem egyezik meg, próbálja újra" - -msgid "Not a valid directory" -msgstr "Érvénytelen könyvtár" - -msgid "Would you like to continue?" -msgstr "Szeretné folytatni?" - -msgid "Directory" -msgstr "Könyvtár" - -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "Adjon meg egy könyvtárat a mentendő konfiguráció(k) számára (a tabulátoros kiegészítés engedélyezve van)" - -#, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "Szeretné elmenteni a konfigurációs fájl(oka)t a következő helyre: {}?" - -msgid "Enabled" -msgstr "Engedélyezve" - -msgid "Disabled" -msgstr "Letiltva" - -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "Jelentse ezt a problémát (a naplófájllal együtt) itt: https://github.com/archlinux/archinstall/issues" - -msgid "Mirror name" -msgstr "Tükörnév" - -msgid "Url" -msgstr "Webcím" - -msgid "Select signature check" -msgstr "Aláírás-ellenőrzés kiválasztása" - -msgid "Select execution mode" -msgstr "Végrehajtási mód kiválasztása" - -msgid "Press ? for help" -msgstr "? → a súgó megjelenítéséhez" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "Válasszon ki egy beállítást, hogy engedélyezze a Hyprland számára a hardverekhez való hozzáférést" - -msgid "Additional repositories" -msgstr "További tárolók" - -msgid "NTP" -msgstr "NTP" - -msgid "Swap on zram" -msgstr "Swap a zram fölött" - -msgid "Name" -msgstr "Név" - -msgid "Signature check" -msgstr "Aláírás-ellenőrzés" - -#, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "A kiválasztott szabad szakaszok a(z) {} eszközön:" - -#, python-brace-format -msgid "Size: {} / {}" -msgstr "Méret: {} / {}" - -#, python-brace-format -msgid "Size (default: {}): " -msgstr "Méret (alapértelmezett: {}): " - -msgid "HSM device" -msgstr "HSM-eszköz" - -msgid "Some packages could not be found in the repository" -msgstr "Néhány csomag nem található a tárolóban" - -msgid "User" -msgstr "Felhasználó" - -msgid "The specified configuration will be applied" -msgstr "A megadott konfiguráció lesz alkalmazva" - -msgid "Wipe" -msgstr "Törlés" - -msgid "Mark/Unmark as XBOOTLDR" -msgstr "Megjelölés/elvetés mint XBOOTLDR" - -msgid "Loading packages..." -msgstr "Csomagok betöltése…" - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "Válassza ki az alábbi listából azokat a csomagokat, amelyeket hozzá akar adni a telepítéshez" - -msgid "Add a custom repository" -msgstr "Egyéni tároló hozzáadása" - -msgid "Change custom repository" -msgstr "Egyéni tároló módosítása" - -msgid "Delete custom repository" -msgstr "Egyéni tároló törlése" - -msgid "Repository name" -msgstr "Tároló neve" - -msgid "Add a custom server" -msgstr "Egyéni kiszolgáló hozzáadása" - -msgid "Change custom server" -msgstr "Egyéni kiszolgáló módosítása" - -msgid "Delete custom server" -msgstr "Egyéni kiszolgáló törlése" - -msgid "Server url" -msgstr "Kiszolgáló webcíme" - -msgid "Select regions" -msgstr "Régiók kiválasztása" - -msgid "Add custom servers" -msgstr "Egyéni kiszolgálók hozzáadása" - -msgid "Add custom repository" -msgstr "Egyéni tároló hozzáadása" - -msgid "Loading mirror regions..." -msgstr "Tükörrégiók betöltése…" - -msgid "Mirrors and repositories" -msgstr "Tükrök és tárolók" - -msgid "Selected mirror regions" -msgstr "Kiválasztott tükörrégiók" - -msgid "Custom servers" -msgstr "Egyéni kiszolgálók" - -msgid "Custom repositories" -msgstr "Egyéni tárolók" - -msgid "Only ASCII characters are supported" -msgstr "Csak ASCII karakterek támogatottak" - -msgid "Show help" -msgstr "Súgó megjelenítése" - -msgid "Exit help" -msgstr "Kilépés a súgóból" - -msgid "Preview scroll up" -msgstr "Előnézet felfelé görgetése" - -msgid "Preview scroll down" -msgstr "Előnézet lefelé görgetése" - -msgid "Move up" -msgstr "Felfelé léptetés" - -msgid "Move down" -msgstr "Lefelé léptetés" - -msgid "Move right" -msgstr "Jobbra léptetés" - -msgid "Move left" -msgstr "Balra léptetés" - -msgid "Jump to entry" -msgstr "Ugrás a bejegyzésre" - -msgid "Skip selection (if available)" -msgstr "Kiválasztás kihagyása (ha elérhető)" - -msgid "Reset selection (if available)" -msgstr "Kiválasztás visszaállítása (ha elérhető)" - -msgid "Select on single select" -msgstr "Egyetlen elem kiválasztása" - -msgid "Select on multi select" -msgstr "Több elem kiválasztása" - -msgid "Reset" -msgstr "Visszaállítás" - -msgid "Skip selection menu" -msgstr "Kiválasztási menü kihagyása" - -msgid "Start search mode" -msgstr "Keresési mód indítása" - -msgid "Exit search mode" -msgstr "Kilépés a keresési módból" - -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "A Labwc-nek hozzáférésre van szüksége az Ön munkamenetéhez (olyan hardvereszközök gyűjteményéhez, mint például a billentyűzet, az egér, stb.)" - -msgid "Choose an option to give labwc access to your hardware" -msgstr "Válasszon ki egy beállítást, hogy engedélyezze a Labwc számára a hardverekhez való hozzáférést" - -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "A Nirinek hozzáférésre van szüksége az Ön munkamenetéhez (olyan hardvereszközök gyűjteményéhez, mint például a billentyűzet, az egér, stb.)" - -msgid "Choose an option to give niri access to your hardware" -msgstr "Válasszon ki egy beállítást, hogy engedélyezze a Niri számára a hardverekhez való hozzáférést" - -msgid "Mark/Unmark as ESP" -msgstr "Megjelölés/elvetés mint EFI-rendszerpartíció (ESP)" - -msgid "Package group:" -msgstr "Csomagcsoport:" - -msgid "Exit archinstall" -msgstr "Kilépés az Archinstallból" - -msgid "Reboot system" -msgstr "Rendszer újraindítása" - -msgid "chroot into installation for post-installation configurations" -msgstr "Belépés a telepített rendszer gyökerébe (chroot) a telepítés utáni konfigurációk elvégzéséhez" - -msgid "Installation completed" -msgstr "A telepítés sikeresen befejeződött" - -msgid "What would you like to do next?" -msgstr "Mit szeretne tenni?" - -#, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "Válassza ki a konfigurálandó módot a következőhöz: „{}”" - -msgid "Incorrect credentials file decryption password" -msgstr "Helytelen a jelszó a hitelesítési adatok fájljának visszafejtéséhez" - -msgid "Incorrect password" -msgstr "Helytelen jelszó" - -msgid "Credentials file decryption password" -msgstr "A hitelesítőadat-fájl visszafejtési jelszava" - -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "Szeretné titkosítani a user_credentials.json fájlt?" - -msgid "Credentials file encryption password" -msgstr "A hitelesítőadat-fájl titkosítási jelszava" - -#, python-brace-format -msgid "Repositories: {}" -msgstr "Tárolók: {}" - -msgid "New version available" -msgstr "Új verzió érhető el" - -msgid "Passwordless login" -msgstr "Jelszó nélküli bejelentkezés" - -msgid "Second factor login" -msgstr "Második lépcsős bejelentkezés" - -msgid "Bluetooth" -msgstr "Bluetooth" - -msgid "Would you like to configure Bluetooth?" -msgstr "Szeretné konfigurálni a Bluetooth-t?" - -msgid "Authentication" -msgstr "Hitelesítés" - -msgid "Applications" -msgstr "Alkalmazások" - -msgid "U2F login method: " -msgstr "U2F bejelentkezési eljárás: " - -msgid "Passwordless sudo: " -msgstr "Jelszó nélküli sudo: " - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "BTRFS-pillanatkép típusa: {}" - -msgid "Syncing the system..." -msgstr "Rendszer szinkronizálása…" - -msgid "Value cannot be empty" -msgstr "Az érték nem lehet üres" - -msgid "Snapshot type" -msgstr "Pillanatkép típusa" - -#, python-brace-format -msgid "Snapshot type: {}" -msgstr "Pillanatkép típusa: {}" - -msgid "U2F login setup" -msgstr "U2F bejelentkezés beállítása" - -msgid "No U2F devices found" -msgstr "Nem található U2F-eszköz" - -msgid "U2F Login Method" -msgstr "U2F bejelentkezési eljárás" - -msgid "Enable passwordless sudo?" -msgstr "Engedélyezi a jelszó nélküli sudo-t?" - -#, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "U2F-eszköz beállítása a következő felhasználónak: {}" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "Lehet, hogy meg kell adnia a PIN-kódot, majd ki kell választania az U2F-eszközt a regisztrációhoz" - -msgid "Starting device modifications in " -msgstr "Eszközmódosítások indítása a következőben: " - -msgid "No network connection found" -msgstr "Nem található hálózati kapcsolat" - -msgid "Would you like to connect to a Wifi?" -msgstr "Szeretne kapcsolódni egy Wi-Fi-hálózathoz?" - -msgid "No wifi interface found" -msgstr "Nem található Wi-Fi-csatoló" - -msgid "Select wifi network to connect to" -msgstr "Válassza ki azt a Wi-Fi-hálózatot, amelyhez kapcsolódni szeretne" - -msgid "Scanning wifi networks..." -msgstr "Wi-Fi-hálózatok keresése…" - -msgid "No wifi networks found" -msgstr "Nem találhatók Wi-Fi-hálózatok" - -msgid "Failed setting up wifi" -msgstr "Nem sikerült beállítani a Wi-Fi-t" - -msgid "Enter wifi password" -msgstr "Adja meg a Wi-Fi-jelszót" - -msgid "Ok" -msgstr "OK" diff --git a/examples/archinstall/archinstall/locales/id/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/id/LC_MESSAGES/base.mo deleted file mode 100644 index b4a3502..0000000 Binary files a/examples/archinstall/archinstall/locales/id/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/id/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/id/LC_MESSAGES/base.po deleted file mode 100644 index c9afb0a..0000000 --- a/examples/archinstall/archinstall/locales/id/LC_MESSAGES/base.po +++ /dev/null @@ -1,1940 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Ali Rohman \n" -"Language-Team: \n" -"Language: id\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.2.2\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] File log telah dibuat di sini: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Silakan kirimkan masalah ini (dan file) ke https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "Apakah Anda benar-benar ingin membatalkan?" - -msgid "And one more time for verification: " -msgstr "Dan sekali lagi untuk verifikasi: " - -msgid "Would you like to use swap on zram?" -msgstr "Apakah Anda ingin menggunakan swap di zram?" - -msgid "Desired hostname for the installation: " -msgstr "Nama host yang diinginkan untuk instalasi: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "Nama pengguna untuk superuser yang diperlukan dengan hak sudo: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "Beberapa pengguna tambahan untuk dipasang (biarkan kosong untuk tidak menambahkan): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "Haruskah pengguna ini menjadi superuser (sudoer)?" - -msgid "Select a timezone" -msgstr "Pilih zona waktu" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "Apakah Anda ingin menggunakan GRUB sebagai bootloader daripada systemd-boot?" - -msgid "Choose a bootloader" -msgstr "Pilih bootloader" - -msgid "Choose an audio server" -msgstr "Pilih server audio" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Hanya paket seperti base, base-devel, linux, linux-firmware, efibootmgr dan paket profil opsional yang diinstal." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "Jika Anda menginginkan web browser, seperti firefox atau chromium, Anda dapat menentukannya di prompt berikut." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "Ketik paket tambahan untuk diinstal (dipisahkan dengan spasi, biarkan kosong untuk dilewati): " - -msgid "Copy ISO network configuration to installation" -msgstr "Salin konfigurasi jaringan ISO ke instalasi" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "Gunakan NetworkManager (diperlukan untuk mengkonfigurasi internet secara grafis di GNOME dan KDE)" - -msgid "Select one network interface to configure" -msgstr "Pilih satu interface jaringan untuk dikonfigurasi" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "Pilih mode mana yang akan dikonfigurasi untuk \"{}\" atau lewati untuk menggunakan mode default \"{}\"" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "Masukkan IP dan subnet untuk {} (contoh: 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "Masukkan IP gateway (router) Anda atau biarkan kosong untuk tidak menggunakan apa pun: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "Masukkan server DNS Anda (dipisahkan dengan spasi, untuk kosongkan tidak menggunakan apa pun): " - -msgid "Select which filesystem your main partition should use" -msgstr "Pilih filesystem mana yang harus digunakan partisi utama Anda" - -msgid "Current partition layout" -msgstr "Tata letak partisi saat ini" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"Pilih apa yang harus dilakukan dengan\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "Masukkan jenis filesystem yang diinginkan untuk partisi" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "Masukkan lokasi awal (dalam satuan parted: s, GB, %, dll. ; default: {}): " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "Masukkan lokasi akhir (dalam satuan parted: s, GB, %, dll. ; cth: {}): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} berisi partisi yang telah di-queue, tindakan ini akan menghapusnya, apakah Anda yakin?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"Pilih berdasarkan indeks partisi mana yang akan dihapus" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"Pilih berdasarkan indeks partisi mana yang akan di mount" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * Mount point partisi relatif terhadap di dalam instalasi, boot akan menjadi /boot sebagai contoh." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "Pilih tempat untuk memasang partisi (biarkan kosong untuk menghapus mountpoint): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"Pilih partisi mana yang akan di mask untuk pemformatan" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"Pilih partisi mana yang akan ditandai sebagai terenkripsi" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"Pilih partisi mana yang akan ditandai sebagai bootable" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"Pilih partisi mana untuk mengatur sistem file" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "Masukkan jenis filesystem yang diinginkan untuk partisi: " - -msgid "Archinstall language" -msgstr "Bahasa Archinstall" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Hapus semua drive yang dipilih dan gunakan upaya terbaik tata letak partisi default" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Pilih apa yang harus dilakukan dengan setiap drive individu (diikuti dengan penggunaan partisi)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "Pilih apa yang ingin Anda lakukan dengan perangkat blok yang dipilih" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "Ini adalah daftar profil yang telah diprogram sebelumnya, mereka mungkin memudahkan untuk menginstal hal-hal seperti desktop environment" - -msgid "Select keyboard layout" -msgstr "Pilih tata letak keyboard" - -msgid "Select one of the regions to download packages from" -msgstr "Pilih salah satu wilayah untuk mengunduh paket dari mana" - -msgid "Select one or more hard drives to use and configure" -msgstr "Pilih satu atau lebih hard drive untuk digunakan dan dikonfigurasi" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "Untuk kompatibilitas terbaik dengan perangkat keras AMD Anda, Anda mungkin ingin menggunakan opsi semua sumber terbuka atau 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 "Untuk kompatibilitas terbaik dengan perangkat keras Intel Anda, Anda mungkin ingin menggunakan opsi semua sumber terbuka atau Intel.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Untuk kompatibilitas terbaik dengan perangkat keras Nvidia Anda, Anda mungkin ingin menggunakan driver proprietary Nvidia.\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Pilih driver grafis atau biarkan kosong untuk menginstal semua driver open-source" - -msgid "All open-source (default)" -msgstr "Semua sumber terbuka (default)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "Pilih kernel mana yang akan digunakan atau biarkan kosong untuk \"{}\" default" - -msgid "Choose which locale language to use" -msgstr "Pilih locale bahasa yang akan digunakan" - -msgid "Choose which locale encoding to use" -msgstr "Pilih locale encoding yang akan digunakan" - -msgid "Select one of the values shown below: " -msgstr "Pilih salah satu nilai yang ditunjukkan di bawah ini: " - -msgid "Select one or more of the options below: " -msgstr "Pilih satu atau beberapa opsi di bawah ini: " - -msgid "Adding partition...." -msgstr "Menambahkan partisi...." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "Anda harus memasukkan tipe fs yang valid untuk melanjutkan. Lihat `man parted` untuk tipe fs yang valid." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Kesalahan: Mencantumkan profil pada URL \"{}\" mengakibatkan:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "Kesalahan: Tidak dapat mendekode hasil \"{}\" sebagai JSON:" - -msgid "Keyboard layout" -msgstr "Tata letak keyboard" - -msgid "Mirror region" -msgstr "Wilayah mirror" - -msgid "Locale language" -msgstr "Locale language" - -msgid "Locale encoding" -msgstr "Locale encoding" - -msgid "Drive(s)" -msgstr "Drive" - -msgid "Disk layout" -msgstr "Tata letak disk" - -msgid "Encryption password" -msgstr "Kata sandi enkripsi" - -msgid "Swap" -msgstr "Swap" - -msgid "Bootloader" -msgstr "Bootloader" - -msgid "Root password" -msgstr "Kata sandi root" - -msgid "Superuser account" -msgstr "Akun superuser" - -msgid "User account" -msgstr "Akun pengguna" - -msgid "Profile" -msgstr "Profil" - -msgid "Audio" -msgstr "Audio" - -msgid "Kernels" -msgstr "Kernel" - -msgid "Additional packages" -msgstr "Paket tambahan" - -msgid "Network configuration" -msgstr "Konfigurasi jaringan" - -msgid "Automatic time sync (NTP)" -msgstr "Sinkronisasi waktu otomatis (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "Instal ({} konfigurasi tidak ada)" - -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 "" -"Anda memutuskan untuk melewati pemilihan harddisk\n" -"dan akan menggunakan pengaturan drive apa pun yang dipasang di {} (eksperimental)\n" -"PERINGATAN: Archinstall tidak akan memeriksa kesesuaian pengaturan ini\n" -"Apakah Anda ingin melanjutkan?" - -msgid "Re-using partition instance: {}" -msgstr "Menggunakan kembali instance partisi: {}" - -msgid "Create a new partition" -msgstr "Buat partisi baru" - -msgid "Delete a partition" -msgstr "Hapus partisi" - -msgid "Clear/Delete all partitions" -msgstr "Bersihkan/Hapus semua partisi" - -msgid "Assign mount-point for a partition" -msgstr "Tetapkan titik-mount untuk sebuah partisi" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "Tandai/Hapus tanda partisi yang akan diformat (menghapus data)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "Tandai/Hapus tanda partisi sebagai terenkripsi" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "Tandai/Hapus tanda partisi sebagai bootable (otomatis untuk /boot)" - -msgid "Set desired filesystem for a partition" -msgstr "Atur filesystem yang diinginkan untuk sebuah partisi" - -msgid "Abort" -msgstr "Batalkan" - -msgid "Hostname" -msgstr "Hostname" - -msgid "Not configured, unavailable unless setup manually" -msgstr "Tidak dikonfigurasi, tidak tersedia kecuali diatur secara manual" - -msgid "Timezone" -msgstr "Zona waktu" - -msgid "Set/Modify the below options" -msgstr "Atur/Ubah opsi di bawah ini" - -msgid "Install" -msgstr "Install" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"Gunakan ESC untuk melewati\n" -"\n" - -msgid "Suggest partition layout" -msgstr "Saran tata letak partisi" - -msgid "Enter a password: " -msgstr "Masukan kata sandi: " - -msgid "Enter a encryption password for {}" -msgstr "Masukkan sandi enkripsi untuk {}" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "Masukkan kata sandi enkripsi disk (biarkan kosong jika tidak ada enkripsi): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "Buat pengguna super yang diperlukan dengan hak sudo: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "Masukkan kata sandi root (biarkan kosong untuk menonaktifkan root): " - -msgid "Password for user \"{}\": " -msgstr "Kata sandi untuk pengguna \"{}\": " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "Memverifikasi bahwa ada paket tambahan (ini mungkin memakan waktu beberapa detik)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "Apakah Anda ingin menggunakan sinkronisasi waktu otomatis (NTP) dengan server waktu default?\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 "" -"Waktu perangkat keras dan langkah-langkah pasca-konfigurasi lainnya mungkin diperlukan agar NTP berfungsi.\n" -"Untuk informasi lebih lanjut, silakan periksa Arch wiki" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "Masukkan nama pengguna untuk membuat pengguna tambahan (biarkan kosong untuk melewati): " - -msgid "Use ESC to skip\n" -msgstr "Gunakan ESC untuk melewati\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -"Pilih objek dari daftar, dan pilih salah satu tindakan yang tersedia untuk dieksekusi" - -msgid "Cancel" -msgstr "Batalkan" - -msgid "Confirm and exit" -msgstr "Konfirmasi dan keluar" - -msgid "Add" -msgstr "Tambah" - -msgid "Copy" -msgstr "Salin" - -msgid "Edit" -msgstr "Edit" - -msgid "Delete" -msgstr "Hapus" - -msgid "Select an action for '{}'" -msgstr "Pilih tindakan untuk '{}'" - -msgid "Copy to new key:" -msgstr "Salin ke kunci baru:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "Jenis nic tidak dikenal: {}. Nilai yang mungkin adalah {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"Ini adalah konfigurasi yang Anda pilih:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Pacman sudah berjalan, menunggu maksimal 10 menit untuk berhenti." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "Pacman lock yang sudah ada tidak pernah keluar. Harap bersihkan sesi pacman yang ada sebelum menggunakan archinstall." - -msgid "Choose which optional additional repositories to enable" -msgstr "Pilih repositori tambahan opsional mana yang akan diaktifkan" - -msgid "Add a user" -msgstr "Tambahkan pengguna" - -msgid "Change password" -msgstr "Ganti kata sandi" - -msgid "Promote/Demote user" -msgstr "Promosikan/Turunkan pengguna" - -msgid "Delete User" -msgstr "Hapus pengguna" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"Tentukan pengguna baru\n" - -msgid "User Name : " -msgstr "Nama Pengguna : " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "Haruskah {} menjadi superuser (sudoer)?" - -msgid "Define users with sudo privilege: " -msgstr "Tentukan pengguna dengan hak sudo: " - -msgid "No network configuration" -msgstr "Tidak ada konfigurasi jaringan" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "Atur subvolume yang diinginkan pada partisi btrfs" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"Pilih partisi mana untuk mengatur subvolume" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "Kelola subvolume btrfs untuk partisi saat ini" - -msgid "No configuration" -msgstr "Tidak ada konfigurasi" - -msgid "Save user configuration" -msgstr "Simpan konfigurasi pengguna" - -msgid "Save user credentials" -msgstr "Simpan kredensial pengguna" - -msgid "Save disk layout" -msgstr "Simpan tata letak disk" - -msgid "Save all" -msgstr "Simpan semua" - -msgid "Choose which configuration to save" -msgstr "Pilih konfigurasi mana yang akan disimpan" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "Masukkan direktori untuk konfigurasi yang akan disimpan: " - -msgid "Not a valid directory: {}" -msgstr "Bukan direktori yang valid: {}" - -msgid "The password you are using seems to be weak," -msgstr "Kata sandi yang Anda gunakan tampaknya lemah," - -msgid "are you sure you want to use it?" -msgstr "apakah Anda yakin ingin menggunakannya?" - -msgid "Optional repositories" -msgstr "Repositori opsional" - -msgid "Save configuration" -msgstr "Simpan konfigurasi" - -msgid "Missing configurations:\n" -msgstr "Konfigurasi tidak ada: \n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "Salah satu root-password atau setidaknya 1 superuser harus ditentukan" - -msgid "Manage superuser accounts: " -msgstr "Kelola akun superuser: " - -msgid "Manage ordinary user accounts: " -msgstr "Kelola akun pengguna biasa: " - -msgid " Subvolume :{:16}" -msgstr " Subvolume :{:16}" - -msgid " mounted at {:16}" -msgstr " di mount di {:16}" - -msgid " with option {}" -msgstr " dengan opsi {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -"Isi nilai yang diinginkan untuk subvolume baru\n" - -msgid "Subvolume name " -msgstr "Nama subvolume " - -msgid "Subvolume mountpoint" -msgstr "Titik mount subvolume" - -msgid "Subvolume options" -msgstr "Opsi subvolume" - -msgid "Save" -msgstr "Simpan" - -msgid "Subvolume name :" -msgstr "Nama subvolume :" - -msgid "Select a mount point :" -msgstr "Pilih titik mount :" - -msgid "Select the desired subvolume options " -msgstr "Pilih opsi subvolume yang diinginkan " - -msgid "Define users with sudo privilege, by username: " -msgstr "Tentukan pengguna dengan hak sudo, berdasarkan nama pengguna: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] File log telah dibuat di sini: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "Apakah Anda ingin menggunakan subvolume BTRFS dengan struktur default?" - -msgid "Would you like to use BTRFS compression?" -msgstr "Apakah Anda ingin menggunakan kompresi BTRFS?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "Apakah Anda ingin membuat partisi terpisah untuk /home?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "Drive yang dipilih tidak memiliki kapasitas minimum yang diperlukan untuk saran otomatis\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "Kapasitas minimum untuk partisi /home: {}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Kapasitas minimum untuk partisi Arch Linux: {}GB" - -msgid "Continue" -msgstr "Lanjutkan" - -msgid "yes" -msgstr "ya" - -msgid "no" -msgstr "tidak" - -msgid "set: {}" -msgstr "atur: {}" - -msgid "Manual configuration setting must be a list" -msgstr "Pengaturan konfigurasi manual harus berupa list" - -msgid "No iface specified for manual configuration" -msgstr "Tidak ada iface yang ditentukan untuk konfigurasi manual" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "Konfigurasi nic manual tanpa DHCP otomatis memerlukan alamat IP" - -msgid "Add interface" -msgstr "Tambahkan interface" - -msgid "Edit interface" -msgstr "Edit interface" - -msgid "Delete interface" -msgstr "Hapus interface" - -msgid "Select interface to add" -msgstr "Pilih interface untuk ditambahkan" - -msgid "Manual configuration" -msgstr "Konfigurasi manual" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "Tandai/Hapus tanda partisi sebagai terkompresi (hanya btrfs)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "Kata sandi yang Anda gunakan tampaknya lemah, apakah Anda yakin ingin menggunakannya?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "Menyediakan pilihan desktop environment dan tiling window manager, cth. gnome, kde, sway" - -msgid "Select your desired desktop environment" -msgstr "Pilih desktop environment yang Anda inginkan" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "Instalasi yang sangat basic yang memungkinkan Anda untuk menyesuaikan Arch Linux sesuai keinginan Anda." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "Menyediakan pilihan berbagai paket server untuk diinstal dan diaktifkan, cth. httpd, nginx, mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "Pilih server mana yang akan diinstal, jika tidak ada maka instalasi minimal akan dilakukan" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "Install sistem minimal serta xorg dan driver grafis." - -msgid "Press Enter to continue." -msgstr "Tekan Enter untuk melanjutkan." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "Apakah Anda ingin melakukan chroot ke instalasi yang baru dibuat dan melakukan konfigurasi pasca-instalasi?" - -msgid "Are you sure you want to reset this setting?" -msgstr "Anda yakin ingin menyetel ulang setelan ini?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "Pilih satu atau lebih hard drive untuk digunakan dan dikonfigurasi\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "Setiap modifikasi pada pengaturan yang ada akan mengatur ulang tata letak disk!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "Jika Anda mengatur ulang pilihan harddrive, ini juga akan mengatur ulang tata letak disk saat ini. Apakah Anda yakin?" - -msgid "Save and exit" -msgstr "Simpan dan keluar" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"berisi partisi yang mengantri, ini akan menghapusnya, apakah Anda yakin?" - -msgid "No audio server" -msgstr "Tidak ada server audio" - -msgid "(default)" -msgstr "(default)" - -msgid "Use ESC to skip" -msgstr "Gunakan ESC untuk melewati" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"Gunakan CTRL + C untuk mengatur ulang pilihan saat ini\n" -"\n" - -msgid "Copy to: " -msgstr "Salin ke: " - -msgid "Edit: " -msgstr "Edit: " - -msgid "Key: " -msgstr "Kunci: " - -msgid "Edit {}: " -msgstr "Edit {}: " - -msgid "Add: " -msgstr "Tambah: " - -msgid "Value: " -msgstr "Nilai: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "Anda dapat melewatkan memilih drive dan mempartisi dan menggunakan pengaturan drive apa pun yang dipasang di /mnt (eksperimental)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "Pilih salah satu disk atau lewati dan gunakan /mnt sebagai default" - -msgid "Select which partitions to mark for formatting:" -msgstr "Pilih partisi mana yang akan ditandai untuk pemformatan:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "Gunakan HSM untuk membuka kunci drive terenkripsi" - -msgid "Device" -msgstr "Perangkat" - -msgid "Size" -msgstr "Ukuran" - -msgid "Free space" -msgstr "Ruang kosong" - -msgid "Bus-type" -msgstr "Tipe bus" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "Baik kata sandi root atau setidaknya 1 pengguna dengan hak sudo harus ditentukan" - -msgid "Enter username (leave blank to skip): " -msgstr "Masukkan nama pengguna (kosongkan untuk melewati): " - -msgid "The username you entered is invalid. Try again" -msgstr "Nama pengguna yang Anda masukkan tidak valid. Coba lagi" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "Haruskah \"{}\" menjadi superuser (sudo)?" - -msgid "Select which partitions to encrypt" -msgstr "Pilih partisi mana yang akan dienkripsi" - -msgid "very weak" -msgstr "sangat lemah" - -msgid "weak" -msgstr "lemah" - -msgid "moderate" -msgstr "sedang" - -msgid "strong" -msgstr "kuat" - -msgid "Add subvolume" -msgstr "Tambah subvolume" - -msgid "Edit subvolume" -msgstr "Edit subvolume" - -msgid "Delete subvolume" -msgstr "Hapus subvolume" - -msgid "Configured {} interfaces" -msgstr "Interface {} dikonfigurasi" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "Opsi ini memungkinkan jumlah unduhan paralel yang dapat terjadi selama instalasi" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"Masukkan jumlah unduhan paralel yang akan diaktifkan.\n" -" (Masukkan nilai antara 1 hingga {})\n" -"Catatan:" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - Nilai maksimum : {} ( Memungkinkan {} unduhan paralel, memungkinkan {} unduhan sekaligus)" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - Nilai minimum : 1 (Mengizinkan 1 unduhan paralel, memungkinkan 2 unduhan sekaligus)" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - Nonaktifkan/Default: 0 (Menonaktifkan pengunduhan paralel, hanya mengizinkan 1 unduhan pada satu waktu)" - -#, fuzzy, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "Input tidak valid! Coba lagi dengan input yang valid [1 untuk {}, atau 0 untuk menonaktifkan]" - -msgid "Parallel Downloads" -msgstr "Unduhan Paralel" - -msgid "ESC to skip" -msgstr "ESC untuk melewati" - -msgid "CTRL+C to reset" -msgstr "CTRL + C untuk mengatur ulang" - -msgid "TAB to select" -msgstr "TAB untuk memilih" - -msgid "[Default value: 0] > " -msgstr "[Nilai default: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "" - -msgid "The font should be stored as {}" -msgstr "" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "" - -#, fuzzy -msgid "Select an execution mode" -msgstr "Pilih tindakan untuk '{}'" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "" - -#, fuzzy -msgid "Select one or more devices to use and configure" -msgstr "Pilih satu atau lebih hard drive untuk digunakan dan dikonfigurasi" - -#, fuzzy -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "Jika Anda mengatur ulang pilihan harddrive, ini juga akan mengatur ulang tata letak disk saat ini. Apakah Anda yakin?" - -#, fuzzy -msgid "Existing Partitions" -msgstr "Menambahkan partisi...." - -#, fuzzy -msgid "Select a partitioning option" -msgstr "Hapus partisi" - -#, fuzzy -msgid "Enter the root directory of the mounted devices: " -msgstr "Masukkan direktori untuk konfigurasi yang akan disimpan: " - -#, fuzzy, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "Kapasitas minimum untuk partisi /home: {}GB\n" - -#, fuzzy, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "Kapasitas minimum untuk partisi Arch Linux: {}GB" - -#, fuzzy -msgid "This is a list of pre-programmed profiles_bck, they might make it easier to install things like desktop environments" -msgstr "Ini adalah daftar profil yang telah diprogram sebelumnya, mereka mungkin memudahkan untuk menginstal hal-hal seperti desktop environment" - -#, fuzzy -msgid "Current profile selection" -msgstr "Tata letak partisi saat ini" - -#, fuzzy -msgid "Remove all newly added partitions" -msgstr "Buat partisi baru" - -#, fuzzy -msgid "Assign mountpoint" -msgstr "Tetapkan titik-mount untuk sebuah partisi" - -#, fuzzy -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "Tandai/Hapus tanda partisi yang akan diformat (menghapus data)" - -msgid "Mark/Unmark as bootable" -msgstr "" - -msgid "Change filesystem" -msgstr "" - -#, fuzzy -msgid "Mark/Unmark as compressed" -msgstr "Tandai/Hapus tanda partisi sebagai terkompresi (hanya btrfs)" - -#, fuzzy -msgid "Set subvolumes" -msgstr "Hapus subvolume" - -#, fuzzy -msgid "Delete partition" -msgstr "Hapus partisi" - -msgid "Partition" -msgstr "" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "" - -#, fuzzy -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * Mount point partisi relatif terhadap di dalam instalasi, boot akan menjadi /boot sebagai contoh." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "" - -msgid "Mountpoint: " -msgstr "" - -msgid "Current free sectors on device {}:" -msgstr "" - -#, fuzzy -msgid "Total sectors: {}" -msgstr "Bukan direktori yang valid: {}" - -#, fuzzy -msgid "Enter the start sector (default: {}): " -msgstr "Masukkan sektor awal (persentase atau nomor blok, default: {}): " - -#, fuzzy -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "Masukkan sektor akhir partisi (persentase atau nomor blok, mis: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "" - -#, python-brace-format -msgid "Total length: {}" -msgstr "" - -#, fuzzy -msgid "Encryption type" -msgstr "Kata sandi enkripsi" - -msgid "Iteration time" -msgstr "" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "" - -msgid "Higher values increase security but slow down boot time" -msgstr "" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "" - -msgid "Iteration time cannot be empty" -msgstr "" - -msgid "Iteration time must be at least 100ms" -msgstr "" - -msgid "Iteration time must be at most 120000ms" -msgstr "" - -msgid "Please enter a valid number" -msgstr "" - -msgid "Partitions" -msgstr "" - -msgid "No HSM devices available" -msgstr "" - -#, fuzzy -msgid "Partitions to be encrypted" -msgstr "Pilih partisi mana yang akan dienkripsi" - -msgid "Select disk encryption option" -msgstr "" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "" - -#, fuzzy -msgid "Use a best-effort default partition layout" -msgstr "Hapus semua drive yang dipilih dan gunakan upaya terbaik tata letak partisi default" - -#, fuzzy -msgid "Manual Partitioning" -msgstr "Konfigurasi manual" - -#, fuzzy -msgid "Pre-mounted configuration" -msgstr "Tidak ada konfigurasi" - -msgid "Unknown" -msgstr "" - -msgid "Partition encryption" -msgstr "" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr "" - -msgid "← Back" -msgstr "" - -msgid "Disk encryption" -msgstr "" - -#, fuzzy -msgid "Configuration" -msgstr "Tidak ada konfigurasi" - -#, fuzzy -msgid "Password" -msgstr "Kata sandi root" - -#, fuzzy -msgid "All settings will be reset, are you sure?" -msgstr "{} berisi partisi yang mengantri, ini akan menghapusnya, apakah Anda yakin?" - -msgid "Back" -msgstr "" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "" - -msgid "The proprietary Nvidia driver is not supported by Sway. It is likely that you will run into issues, are you okay with that?" -msgstr "" - -#, fuzzy -msgid "Installed packages" -msgstr "Paket tambahan" - -#, fuzzy -msgid "Add profile" -msgstr "Profil" - -#, fuzzy -msgid "Edit profile" -msgstr "Profil" - -#, fuzzy -msgid "Delete profile" -msgstr "Hapus interface" - -#, fuzzy -msgid "Profile name: " -msgstr "Profil" - -#, fuzzy -msgid "The profile name you entered is already in use. Try again" -msgstr "Nama pengguna yang Anda masukkan tidak valid. Coba lagi" - -#, fuzzy -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "Ketik paket tambahan untuk diinstal (dipisahkan dengan spasi, biarkan kosong untuk dilewati): " - -#, fuzzy -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "Ketik paket tambahan untuk diinstal (dipisahkan dengan spasi, biarkan kosong untuk dilewati): " - -msgid "Should this profile be enabled for installation?" -msgstr "" - -msgid "Create your own" -msgstr "" - -#, fuzzy -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Pilih driver grafis atau biarkan kosong untuk menginstal semua driver open-source" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" - -msgid "Graphics driver" -msgstr "" - -msgid "Greeter" -msgstr "" - -msgid "Please chose which greeter to install" -msgstr "" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "" - -#, fuzzy -msgid "Disk configuration" -msgstr "Tidak ada konfigurasi" - -#, fuzzy -msgid "Profiles" -msgstr "Profil" - -msgid "Finding possible directories to save configuration files ..." -msgstr "" - -#, fuzzy -msgid "Select directory (or directories) for saving configuration files" -msgstr "Pilih satu atau lebih hard drive untuk digunakan dan dikonfigurasi" - -#, fuzzy -msgid "Add a custom mirror" -msgstr "Tambahkan pengguna" - -msgid "Change custom mirror" -msgstr "" - -msgid "Delete custom mirror" -msgstr "" - -#, fuzzy -msgid "Enter name (leave blank to skip): " -msgstr "Masukkan nama pengguna (kosongkan untuk melewati): " - -#, fuzzy -msgid "Enter url (leave blank to skip): " -msgstr "Masukkan nama pengguna (kosongkan untuk melewati): " - -#, fuzzy -msgid "Select signature check option" -msgstr "Pilih interface untuk ditambahkan" - -#, fuzzy -msgid "Select signature option" -msgstr "Pilih interface untuk ditambahkan" - -msgid "Custom mirrors" -msgstr "" - -msgid "Defined" -msgstr "" - -#, fuzzy -msgid "Save user configuration (including disk layout)" -msgstr "Simpan konfigurasi pengguna" - -#, fuzzy -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "Masukkan direktori untuk konfigurasi yang akan disimpan: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" - -#, fuzzy -msgid "Saving {} configuration files to {}" -msgstr "Simpan konfigurasi" - -#, fuzzy -msgid "Mirrors" -msgstr "Wilayah mirror" - -#, fuzzy -msgid "Mirror regions" -msgstr "Wilayah mirror" - -#, fuzzy -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - Nilai maksimum : {} ( Memungkinkan {} unduhan paralel, memungkinkan {} unduhan sekaligus)" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "Input tidak valid! Coba lagi dengan input yang valid [1 untuk {}, atau 0 untuk menonaktifkan]" - -msgid "Locales" -msgstr "" - -#, fuzzy -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "Gunakan NetworkManager (diperlukan untuk mengkonfigurasi internet secara grafis di GNOME dan KDE)" - -msgid "Total: {} / {}" -msgstr "" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "" - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "" - -#, fuzzy -msgid "Enter start (default: sector {}): " -msgstr "Masukkan sektor awal (persentase atau nomor blok, default: {}): " - -#, fuzzy -msgid "Enter end (default: {}): " -msgstr "Masukkan sektor awal (persentase atau nomor blok, default: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "" - -msgid "Path" -msgstr "" - -msgid "Manufacturer" -msgstr "" - -msgid "Product" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "Konfigurasi manual" - -msgid "Type" -msgstr "" - -#, fuzzy -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "Opsi ini memungkinkan jumlah unduhan paralel yang dapat terjadi selama instalasi" - -#, fuzzy -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"Masukkan jumlah unduhan paralel yang akan diaktifkan.\n" -" (Masukkan nilai antara 1 hingga {})\n" -"Catatan:" - -#, fuzzy, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - Nilai maksimum : {} ( Memungkinkan {} unduhan paralel, memungkinkan {} unduhan sekaligus)" - -#, fuzzy -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - Nonaktifkan/Default: 0 (Menonaktifkan pengunduhan paralel, hanya mengizinkan 1 unduhan pada satu waktu)" - -#, fuzzy -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "Input tidak valid! Coba lagi dengan input yang valid [1 untuk {}, atau 0 untuk menonaktifkan]" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "" - -#, fuzzy -msgid "Would you like to use unified kernel images?" -msgstr "Apakah Anda ingin menggunakan swap di zram?" - -msgid "Unified kernel images" -msgstr "" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "" - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "" - -#, fuzzy -msgid "Selected profiles: " -msgstr "Hapus interface" - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "" - -#, fuzzy -msgid "Mark/Unmark as nodatacow" -msgstr "Tandai/Hapus tanda partisi sebagai terkompresi (hanya btrfs)" - -#, fuzzy -msgid "Would you like to use compression or disable CoW?" -msgstr "Apakah Anda ingin menggunakan kompresi BTRFS?" - -msgid "Use compression" -msgstr "" - -msgid "Disable Copy-on-Write" -msgstr "" - -#, fuzzy -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "Menyediakan pilihan desktop environment dan tiling window manager, cth. gnome, kde, sway" - -#, fuzzy, python-brace-format -msgid "Configuration type: {}" -msgstr "Tidak ada konfigurasi" - -#, fuzzy -msgid "LVM configuration type" -msgstr "Tidak ada konfigurasi" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "" - -#, fuzzy -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "Gunakan NetworkManager (diperlukan untuk mengkonfigurasi internet secara grafis di GNOME dan KDE)" - -#, fuzzy -msgid "Select a LVM option" -msgstr "Pilih zona waktu" - -#, fuzzy -msgid "Partitioning" -msgstr "Konfigurasi manual" - -msgid "Logical Volume Management (LVM)" -msgstr "" - -msgid "Physical volumes" -msgstr "" - -msgid "Volumes" -msgstr "" - -#, fuzzy -msgid "LVM volumes" -msgstr "Hapus subvolume" - -#, fuzzy -msgid "LVM volumes to be encrypted" -msgstr "Pilih partisi mana yang akan dienkripsi" - -#, fuzzy -msgid "Select which LVM volumes to encrypt" -msgstr "Pilih partisi mana yang akan dienkripsi" - -#, fuzzy -msgid "Default layout" -msgstr "Tata letak disk" - -#, fuzzy -msgid "No Encryption" -msgstr "Kata sandi enkripsi" - -msgid "LUKS" -msgstr "" - -msgid "LVM on LUKS" -msgstr "" - -msgid "LUKS on LVM" -msgstr "" - -#, fuzzy -msgid "Yes" -msgstr "ya" - -msgid "No" -msgstr "" - -#, fuzzy -msgid "Archinstall help" -msgstr "Bahasa Archinstall" - -#, fuzzy -msgid " (default)" -msgstr "(default)" - -msgid "Press Ctrl+h for help" -msgstr "" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "" - -msgid "Seat access" -msgstr "" - -#, fuzzy -msgid "Mountpoint" -msgstr "Tetapkan titik-mount untuk sebuah partisi" - -msgid "HSM" -msgstr "" - -#, fuzzy -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "Masukkan kata sandi enkripsi disk (biarkan kosong jika tidak ada enkripsi): " - -#, fuzzy -msgid "Disk encryption password" -msgstr "Kata sandi enkripsi" - -#, fuzzy -msgid "Partition - New" -msgstr "Konfigurasi manual" - -msgid "Filesystem" -msgstr "" - -msgid "Invalid size" -msgstr "" - -#, fuzzy -msgid "Start (default: sector {}): " -msgstr "Masukkan sektor awal (persentase atau nomor blok, default: {}): " - -#, fuzzy -msgid "End (default: {}): " -msgstr "Masukkan sektor awal (persentase atau nomor blok, default: {}): " - -#, fuzzy -msgid "Subvolume name" -msgstr "Nama subvolume " - -#, fuzzy -msgid "Disk configuration type" -msgstr "Tidak ada konfigurasi" - -msgid "Root mount directory" -msgstr "" - -#, fuzzy -msgid "Select language" -msgstr "Locale language" - -#, fuzzy -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "Ketik paket tambahan untuk diinstal (dipisahkan dengan spasi, biarkan kosong untuk dilewati): " - -msgid "Invalid download number" -msgstr "" - -msgid "Number downloads" -msgstr "" - -#, fuzzy -msgid "The username you entered is invalid" -msgstr "Nama pengguna yang Anda masukkan tidak valid. Coba lagi" - -#, fuzzy -msgid "Username" -msgstr "Nama Pengguna : " - -#, fuzzy, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "Haruskah \"{}\" menjadi superuser (sudo)?" - -#, fuzzy -msgid "Interfaces" -msgstr "Tambahkan interface" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "" - -msgid "Modes" -msgstr "" - -msgid "IP address" -msgstr "" - -#, fuzzy -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "Masukkan IP gateway (router) Anda atau biarkan kosong untuk tidak menggunakan apa pun: " - -msgid "Gateway address" -msgstr "" - -#, fuzzy -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "Masukkan server DNS Anda (dipisahkan dengan spasi, untuk kosongkan tidak menggunakan apa pun): " - -#, fuzzy -msgid "DNS servers" -msgstr "Tidak ada server audio" - -#, fuzzy -msgid "Configure interfaces" -msgstr "Interface {} dikonfigurasi" - -#, fuzzy -msgid "Kernel" -msgstr "Kernel" - -msgid "UEFI is not detected and some options are disabled" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "" - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "" - -#, fuzzy -msgid "Main profile" -msgstr "Profil" - -#, fuzzy -msgid "Confirm password" -msgstr "Ganti kata sandi" - -msgid "The confirmation password did not match, please try again" -msgstr "" - -#, fuzzy -msgid "Not a valid directory" -msgstr "Bukan direktori yang valid: {}" - -#, fuzzy -msgid "Would you like to continue?" -msgstr "Apakah Anda ingin menggunakan kompresi BTRFS?" - -msgid "Directory" -msgstr "" - -#, fuzzy -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "Masukkan direktori untuk konfigurasi yang akan disimpan: " - -#, fuzzy, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "Simpan konfigurasi" - -msgid "Enabled" -msgstr "" - -msgid "Disabled" -msgstr "" - -#, fuzzy -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Silakan kirimkan masalah ini (dan file) ke https://github.com/archlinux/archinstall/issues" - -#, fuzzy -msgid "Mirror name" -msgstr "Wilayah mirror" - -msgid "Url" -msgstr "" - -#, fuzzy -msgid "Select signature check" -msgstr "Pilih interface untuk ditambahkan" - -#, fuzzy -msgid "Select execution mode" -msgstr "Pilih tindakan untuk '{}'" - -msgid "Press ? for help" -msgstr "" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "" - -#, fuzzy -msgid "Additional repositories" -msgstr "Repositori opsional" - -msgid "NTP" -msgstr "" - -msgid "Swap on zram" -msgstr "" - -msgid "Name" -msgstr "" - -#, fuzzy -msgid "Signature check" -msgstr "Pilih interface untuk ditambahkan" - -#, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "" - -#, python-brace-format -msgid "Size: {} / {}" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Size (default: {}): " -msgstr "Masukkan sektor awal (persentase atau nomor blok, default: {}): " - -#, fuzzy -msgid "HSM device" -msgstr "Perangkat" - -msgid "Some packages could not be found in the repository" -msgstr "" - -#, fuzzy -msgid "User" -msgstr "Nama Pengguna : " - -msgid "The specified configuration will be applied" -msgstr "" - -msgid "Wipe" -msgstr "" - -#, fuzzy -msgid "Mark/Unmark as XBOOTLDR" -msgstr "Tandai/Hapus tanda partisi sebagai terkompresi (hanya btrfs)" - -#, fuzzy -msgid "Loading packages..." -msgstr "Paket tambahan" - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "" - -#, fuzzy -msgid "Add a custom repository" -msgstr "Tambahkan pengguna" - -msgid "Change custom repository" -msgstr "" - -msgid "Delete custom repository" -msgstr "" - -#, fuzzy -msgid "Repository name" -msgstr "Wilayah mirror" - -#, fuzzy -msgid "Add a custom server" -msgstr "Tambahkan pengguna" - -#, fuzzy -msgid "Change custom server" -msgstr "Pilih server audio" - -#, fuzzy -msgid "Delete custom server" -msgstr "Hapus pengguna" - -msgid "Server url" -msgstr "" - -#, fuzzy -msgid "Select regions" -msgstr "Pilih interface untuk ditambahkan" - -#, fuzzy -msgid "Add custom servers" -msgstr "Tambahkan pengguna" - -#, fuzzy -msgid "Add custom repository" -msgstr "Tambahkan pengguna" - -#, fuzzy -msgid "Loading mirror regions..." -msgstr "Wilayah mirror" - -#, fuzzy -msgid "Mirrors and repositories" -msgstr "Repositori opsional" - -#, fuzzy -msgid "Selected mirror regions" -msgstr "Wilayah mirror" - -#, fuzzy -msgid "Custom servers" -msgstr "Tidak ada server audio" - -#, fuzzy -msgid "Custom repositories" -msgstr "Repositori opsional" - -msgid "Only ASCII characters are supported" -msgstr "" - -msgid "Show help" -msgstr "" - -msgid "Exit help" -msgstr "" - -msgid "Preview scroll up" -msgstr "" - -msgid "Preview scroll down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move right" -msgstr "" - -msgid "Move left" -msgstr "" - -msgid "Jump to entry" -msgstr "" - -msgid "Skip selection (if available)" -msgstr "" - -msgid "Reset selection (if available)" -msgstr "" - -#, fuzzy -msgid "Select on single select" -msgstr "Pilih interface untuk ditambahkan" - -#, fuzzy -msgid "Select on multi select" -msgstr "Pilih zona waktu" - -msgid "Reset" -msgstr "" - -#, fuzzy -msgid "Skip selection menu" -msgstr "Pilih tindakan untuk '{}'" - -msgid "Start search mode" -msgstr "" - -msgid "Exit search mode" -msgstr "" - -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "Choose an option to give labwc access to your hardware" -msgstr "" - -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "Choose an option to give niri access to your hardware" -msgstr "" - -#, fuzzy -msgid "Mark/Unmark as ESP" -msgstr "Tandai/Hapus tanda partisi sebagai terkompresi (hanya btrfs)" - -msgid "Package group:" -msgstr "" - -#, fuzzy -msgid "Exit archinstall" -msgstr "Bahasa Archinstall" - -msgid "Reboot system" -msgstr "" - -#, fuzzy -msgid "chroot into installation for post-installation configurations" -msgstr "Apakah Anda ingin melakukan chroot ke instalasi yang baru dibuat dan melakukan konfigurasi pasca-instalasi?" - -msgid "Installation completed" -msgstr "" - -#, fuzzy -msgid "What would you like to do next?" -msgstr "Apakah Anda ingin menggunakan kompresi BTRFS?" - -#, fuzzy, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "Pilih mode mana yang akan dikonfigurasi untuk \"{}\" atau lewati untuk menggunakan mode default \"{}\"" - -#, fuzzy -msgid "Incorrect credentials file decryption password" -msgstr "Kata sandi enkripsi" - -#, fuzzy -msgid "Incorrect password" -msgstr "Kata sandi root" - -#, fuzzy -msgid "Credentials file decryption password" -msgstr "Kata sandi enkripsi" - -#, fuzzy -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "Simpan konfigurasi" - -#, fuzzy -msgid "Credentials file encryption password" -msgstr "Kata sandi enkripsi" - -#, fuzzy, python-brace-format -msgid "Repositories: {}" -msgstr "Wilayah mirror" - -msgid "New version available" -msgstr "" - -#, fuzzy -msgid "Passwordless login" -msgstr "Kata sandi root" - -msgid "Second factor login" -msgstr "" - -msgid "Bluetooth" -msgstr "" - -#, fuzzy -msgid "Would you like to configure Bluetooth?" -msgstr "Apakah Anda ingin menggunakan kompresi BTRFS?" - -msgid "Authentication" -msgstr "" - -msgid "Applications" -msgstr "" - -msgid "U2F login method: " -msgstr "" - -msgid "Passwordless sudo: " -msgstr "" - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "" - -msgid "Syncing the system..." -msgstr "" - -msgid "Value cannot be empty" -msgstr "" - -msgid "Snapshot type" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Snapshot type: {}" -msgstr "Tidak ada konfigurasi" - -msgid "U2F login setup" -msgstr "" - -msgid "No U2F devices found" -msgstr "" - -msgid "U2F Login Method" -msgstr "" - -#, fuzzy -msgid "Enable passwordless sudo?" -msgstr "Masukan kata sandi: " - -#, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "" - -msgid "Starting device modifications in " -msgstr "" - -#, fuzzy -msgid "No network connection found" -msgstr "Tidak ada konfigurasi jaringan" - -#, fuzzy -msgid "Would you like to connect to a Wifi?" -msgstr "Apakah Anda ingin menggunakan kompresi BTRFS?" - -#, fuzzy -msgid "No wifi interface found" -msgstr "Interface {} dikonfigurasi" - -#, fuzzy -msgid "Select wifi network to connect to" -msgstr "Pilih satu interface jaringan untuk dikonfigurasi" - -msgid "Scanning wifi networks..." -msgstr "" - -#, fuzzy -msgid "No wifi networks found" -msgstr "Tidak ada konfigurasi jaringan" - -msgid "Failed setting up wifi" -msgstr "" - -#, fuzzy -msgid "Enter wifi password" -msgstr "Masukan kata sandi: " - -msgid "Ok" -msgstr "" diff --git a/examples/archinstall/archinstall/locales/it/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/it/LC_MESSAGES/base.mo deleted file mode 100644 index 98c0b50..0000000 Binary files a/examples/archinstall/archinstall/locales/it/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/it/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/it/LC_MESSAGES/base.po deleted file mode 100644 index 8b4e275..0000000 --- a/examples/archinstall/archinstall/locales/it/LC_MESSAGES/base.po +++ /dev/null @@ -1,1813 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2025-11-06 21:03+0100\n" -"Last-Translator: Van Matten\n" -"Language-Team: \n" -"Language: it\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"2nd-Last-Translator: Alessio Cuccovillo \n" -"X-Generator: Poedit 3.8\n" -"X-Poedit-Basepath: ../..\n" -"X-Poedit-SearchPath-0: base.pot\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] Un file di log è stato creato qui: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Invia questo problema (e il file) a https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "Vuoi davvero interrompere?" - -msgid "And one more time for verification: " -msgstr "E ancora una volta per verifica: " - -msgid "Would you like to use swap on zram?" -msgstr "Desideri usare lo swap su zram?" - -msgid "Desired hostname for the installation: " -msgstr "Nome host desiderato per l'installazione: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "Nome utente per il superuser richiesto con privilegi sudo: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "Eventuali utenti aggiuntivi da installare (lascia vuoto per nessun utente): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "Questo utente dovrebbe essere un superuser (sudoer)?" - -msgid "Select a timezone" -msgstr "Seleziona un fuso orario" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "Desideri usare GRUB come bootloader invece di systemd-boot?" - -msgid "Choose a bootloader" -msgstr "Scegli un bootloader" - -msgid "Choose an audio server" -msgstr "Scegli un server audio" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Vengono installati solo pacchetti come base, base-devel, linux, linux-firmware, efibootmgr e pacchetti di profilo opzionali." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "Se desideri un browser web, come firefox o chromium, puoi specificarlo nel seguente prompt." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "Scrivi i pacchetti aggiuntivi da installare (separati da spazi, lascia vuoto per saltare): " - -msgid "Copy ISO network configuration to installation" -msgstr "Copia la configurazione di rete ISO nell'installazione" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "Usa NetworkManager (necessario per configurare graficamente Internet in GNOME e KDE)" - -msgid "Select one network interface to configure" -msgstr "Seleziona un'interfaccia di rete da configurare" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "Seleziona la modalità da configurare per \"{}\" o salta per utilizzare la modalità predefinita \"{}\"" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "Inserisci l'IP e la sottorete per {} (esempio: 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "Inserisci l'indirizzo IP del tuo gateway (router) o lascia vuoto per nessuno: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "Inserisci i tuoi server DNS (separati da spazi, vuoto per nessuno): " - -msgid "Select which filesystem your main partition should use" -msgstr "Seleziona quale filesystem dovrebbe usare la tua partizione principale" - -msgid "Current partition layout" -msgstr "Layout della partizione corrente" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"Seleziona cosa fare con\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "Inserisci un tipo di filesystem desiderato per la partizione" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "Inserisci la posizione iniziale (in unità separate: s, GB, %, ecc.; impostazione predefinita: {}): " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "Inserisci la posizione finale (in unità separate: s, GB, %, ecc.; es: {}): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} contiene partizioni in coda, questo le rimuoverà, sei sicuro?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"Seleziona per indice quali partizioni eliminare" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"Seleziona per indice quale partizione montare dove" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * I punti di montaggio della partizione sono relativi all'interno dell'installazione, per esempio l'avvio sarebbe /boot." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "Seleziona dove montare la partizione (lascia vuoto per rimuovere il punto di montaggio): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"Seleziona quale partizione mascherare per la formattazione" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"Seleziona quale partizione contrassegnare come crittografata" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"Seleziona quale partizione contrassegnare come avviabile" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"Seleziona su quale partizione impostare un filesystem" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "Inserisci un tipo di filesystem desiderato per la partizione: " - -msgid "Archinstall language" -msgstr "Lingua di Archinstall" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Cancella tutte le unità selezionate e utilizza un layout di partizione predefinito ottimale" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Seleziona cosa fare con ogni singola unità (seguito dall'utilizzo della partizione)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "Seleziona cosa desideri fare con i dispositivi a blocchi selezionati" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "Questo è un elenco di profili pre-programmati, che potrebbero semplificare l'installazione di elementi come gli ambienti desktop" - -msgid "Select keyboard layout" -msgstr "Seleziona il layout della tastiera" - -msgid "Select one of the regions to download packages from" -msgstr "Seleziona una delle regioni da cui scaricare i pacchetti" - -msgid "Select one or more hard drives to use and configure" -msgstr "Seleziona uno o più dischi rigidi da utilizzare e configurare" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "Per la migliore compatibilità con il tuo hardware AMD, potresti voler utilizzare tutte le opzioni open source o AMD / ATI." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "Per la migliore compatibilità con il tuo hardware Intel, potresti voler utilizzare tutte le opzioni open source o Intel.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Per la migliore compatibilità con il tuo hardware Nvidia, potresti voler utilizzare il driver proprietario Nvidia.\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Seleziona un driver grafico o lascia vuoto per installare tutti i driver open source" - -msgid "All open-source (default)" -msgstr "Tutti gli open source (predefinito)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "Scegli quali kernel usare o lascia vuoto per il predefinito \"{}\"" - -msgid "Choose which locale language to use" -msgstr "Scegli quale lingua locale utilizzare" - -msgid "Choose which locale encoding to use" -msgstr "Scegli quale codifica locale utilizzare" - -msgid "Select one of the values shown below: " -msgstr "Seleziona uno dei valori mostrati di seguito: " - -msgid "Select one or more of the options below: " -msgstr "Seleziona una o più delle seguenti opzioni " - -msgid "Adding partition...." -msgstr "Aggiungendo la partizione...." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "Devi inserire un tipo di filesystem valido per continuare. Vedi `man parted` per tipi di filesystem validi." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Errore: l'elenco dei profili sull'URL \"{}\" ha prodotto:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "Errore: impossibile decodificare il risultato \"{}\" come JSON:" - -msgid "Keyboard layout" -msgstr "Layout della tastiera" - -msgid "Mirror region" -msgstr "Regione dei mirror" - -msgid "Locale language" -msgstr "Lingua locale" - -msgid "Locale encoding" -msgstr "Codifica locale" - -msgid "Drive(s)" -msgstr "Dischi" - -msgid "Disk layout" -msgstr "Layout del disco" - -msgid "Encryption password" -msgstr "Password di crittografia" - -msgid "Swap" -msgstr "Swap" - -msgid "Bootloader" -msgstr "Bootloader" - -msgid "Root password" -msgstr "Password di root" - -msgid "Superuser account" -msgstr "Account superuser" - -msgid "User account" -msgstr "Account utente" - -msgid "Profile" -msgstr "Profilo" - -msgid "Audio" -msgstr "Audio" - -msgid "Kernels" -msgstr "Kernel" - -msgid "Additional packages" -msgstr "Pacchetti aggiuntivi" - -msgid "Network configuration" -msgstr "Configurazione di rete" - -msgid "Automatic time sync (NTP)" -msgstr "Sincronizzazione automatica dell'ora (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "Installa ({} configurazioni mancanti)" - -msgid "" -"You decided to skip harddrive selection\n" -"and will use whatever drive-setup is mounted at {} (experimental)\n" -"WARNING: Archinstall won't check the suitability of this setup\n" -"Do you wish to continue?" -msgstr "" -"Hai deciso di saltare la selezione del disco rigido\n" -"e utilizzerà qualsiasi configurazione dell'unità montata su {} (sperimentale)\n" -"ATTENZIONE: Archinstall non verificherà l'idoneità di questa configurazione\n" -"Vuoi continuare?" - -msgid "Re-using partition instance: {}" -msgstr "Riutilizzo dell'istanza di partizione: {}" - -msgid "Create a new partition" -msgstr "Crea una nuova partizione" - -msgid "Delete a partition" -msgstr "Elimina una partizione" - -msgid "Clear/Delete all partitions" -msgstr "Cancella/Elimina tutte le partizioni" - -msgid "Assign mount-point for a partition" -msgstr "Assegna punto di montaggio per una partizione" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "Seleziona/Deseleziona una partizione da formattare (cancella i dati)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "Seleziona/Deseleziona una partizione come crittografata" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "Seleziona/Deseleziona una partizione come avviabile (automatico per /boot)" - -msgid "Set desired filesystem for a partition" -msgstr "Imposta il filesystem desiderato per una partizione" - -msgid "Abort" -msgstr "Interrompi" - -msgid "Hostname" -msgstr "Nome host" - -msgid "Not configured, unavailable unless setup manually" -msgstr "Non configurato, non disponibile a meno che non venga configurato manualmente" - -msgid "Timezone" -msgstr "Fuso orario" - -msgid "Set/Modify the below options" -msgstr "Imposta/Modifica le seguenti opzioni" - -msgid "Install" -msgstr "Installa" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"Usa ESC per saltare\n" -"\n" - -msgid "Suggest partition layout" -msgstr "Suggerisci il layout della partizione" - -msgid "Enter a password: " -msgstr "Inserisci una password: " - -msgid "Enter a encryption password for {}" -msgstr "Inserisci una password di crittografia per {}" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "Inserisci la password di crittografia del disco (lasciare vuoto per nessuna crittografia): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "Crea un superuser richiesto con privilegi sudo: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "Inserisci la password di root (lascia vuoto per disabilitare il root): " - -msgid "Password for user \"{}\": " -msgstr "Password per l'utente \"{}\": " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "Verifico l'esistenza dei pacchetti aggiuntivi (potrebbe richiedere alcuni secondi)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "Desideri usare la sincronizzazione automatica dell'ora (NTP) con i server orari predefiniti?\n" - -msgid "" -"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" -"For more information, please check the Arch wiki" -msgstr "" -"Per il funzionamento di NTP potrebbero essere necessari l'ora dell'hardware e altri passaggi successivi alla configurazione.\n" -"Per ulteriori informazioni, consultare Arch Wiki" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "Inserisci un nome utente per creare un utente aggiuntivo (lascia vuoto per saltare): " - -msgid "Use ESC to skip\n" -msgstr "Usa ESC per saltare\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -" Scegli un oggetto dall'elenco e seleziona una delle azioni disponibili per l'esecuzione" - -msgid "Cancel" -msgstr "Annulla" - -msgid "Confirm and exit" -msgstr "Conferma ed esci" - -msgid "Add" -msgstr "Aggiungi" - -msgid "Copy" -msgstr "Copia" - -msgid "Edit" -msgstr "Modifica" - -msgid "Delete" -msgstr "Elimina" - -msgid "Select an action for '{}'" -msgstr "Seleziona un'azione per '{}'" - -msgid "Copy to new key:" -msgstr "Copia su nuova chiave:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "Tipo nic sconosciuto: {}. I valori possibili sono {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"Questa è la configurazione scelta:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Pacman è già in esecuzione, in attesa di un massimo di 10 minuti per la sua terminazione." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "Il lock di pacman preesistente non è mai terminato. Rimuovi ogni sessione pacman esistente prima di usare archinstall." - -msgid "Choose which optional additional repositories to enable" -msgstr "Scegli quali repository aggiuntivi facoltativi abilitare" - -msgid "Add a user" -msgstr "Aggiungi un utente" - -msgid "Change password" -msgstr "Cambia password" - -msgid "Promote/Demote user" -msgstr "Promuovi/Retrocedi un utente" - -msgid "Delete User" -msgstr "Elimina utente" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"Definisci un nuovo utente\n" - -msgid "User Name : " -msgstr "Nome utente : " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "{} dovrebbe essere un superutente (sudoer)?" - -msgid "Define users with sudo privilege: " -msgstr "Definisci utenti con privilegi sudo: " - -msgid "No network configuration" -msgstr "Nessuna configurazione di rete" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "Imposta i sottovolumi desiderati su una partizione btrfs" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"Seleziona su quale partizione impostare i sottovolumi" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "Gestisci i sottovolumi btrfs per la partizione corrente" - -msgid "No configuration" -msgstr "Nessuna configurazione" - -msgid "Save user configuration" -msgstr "Salva configurazione utente" - -msgid "Save user credentials" -msgstr "Salva le credenziali dell'utente" - -msgid "Save disk layout" -msgstr "Salva layout del disco" - -msgid "Save all" -msgstr "Salva tutto" - -msgid "Choose which configuration to save" -msgstr "Scegli quale configurazione salvare" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "Inserisci una directory per le configurazioni da salvare: " - -msgid "Not a valid directory: {}" -msgstr "Directory non valida: {}" - -msgid "The password you are using seems to be weak," -msgstr "La password che stai utilizzando sembra essere debole," - -msgid "are you sure you want to use it?" -msgstr "sei sicuro di volerla usare?" - -msgid "Optional repositories" -msgstr "Repository opzionali" - -msgid "Save configuration" -msgstr "Salva configurazione" - -msgid "Missing configurations:\n" -msgstr "Configurazioni mancanti:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "È necessario specificare la password di root o almeno 1 superuser" - -msgid "Manage superuser accounts: " -msgstr "Gestisci account superusers: " - -msgid "Manage ordinary user accounts: " -msgstr "Gestisci gli account utente ordinari: " - -msgid " Subvolume :{:16}" -msgstr " Sottovolume :{:16}" - -msgid " mounted at {:16}" -msgstr " montato su {:16}" - -msgid " with option {}" -msgstr " con opzione {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -" Riempi i valori desiderati per un nuovo sottovolume \n" - -msgid "Subvolume name " -msgstr "Nome del sottovolume " - -msgid "Subvolume mountpoint" -msgstr "Punto di montaggio del sottovolume" - -msgid "Subvolume options" -msgstr "Opzioni del sottovolume" - -msgid "Save" -msgstr "Salva" - -msgid "Subvolume name :" -msgstr "Nome del sottovolume :" - -msgid "Select a mount point :" -msgstr "Seleziona un punto di montaggio:" - -msgid "Select the desired subvolume options " -msgstr "Seleziona le opzioni del sottovolume desiderate " - -msgid "Define users with sudo privilege, by username: " -msgstr "Definisci gli utenti con privilegi sudo, per nome utente: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] Un file di log è stato creato qui: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "Desideri usare i sottovolumi BTRFS con una struttura predefinita?" - -msgid "Would you like to use BTRFS compression?" -msgstr "Desideri usare la compressione BTRFS?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "Desideri creare una partizione separata per /home?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "Le unità selezionate non hanno la capacità minima richiesta per un suggerimento automatico\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "Capacità minima per la partizione /home: {}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Capacità minima per la partizione Arch Linux: {}GB" - -msgid "Continue" -msgstr "Continua" - -msgid "yes" -msgstr "sì" - -msgid "no" -msgstr "no" - -msgid "set: {}" -msgstr "imposta: {}" - -msgid "Manual configuration setting must be a list" -msgstr "L'impostazione della configurazione manuale deve essere un elenco" - -msgid "No iface specified for manual configuration" -msgstr "Nessuna iface specificata per la configurazione manuale" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "La configurazione manuale del nic senza DHCP automatico richiede un indirizzo IP" - -msgid "Add interface" -msgstr "Aggiungi interfaccia" - -msgid "Edit interface" -msgstr "Modifica interfaccia" - -msgid "Delete interface" -msgstr "Elimina interfaccia" - -msgid "Select interface to add" -msgstr "Seleziona l'interfaccia da aggiungere" - -msgid "Manual configuration" -msgstr "Configurazione manuale" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "Seleziona/Deseleziona una partizione come compressa (solo btrfs)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "La password che stai utilizzando sembra essere debole, sei sicuro di volerla usare?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "Fornisce una selezione di ambienti desktop e gestori di finestre, per esempio gnome, kde, sway" - -msgid "Select your desired desktop environment" -msgstr "Seleziona l'ambiente desktop desiderato" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "Un'installazione molto semplice che ti consente di personalizzare Arch Linux come meglio credi." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "Fornisce una selezione di vari pacchetti server da installare e abilitare, per esempio httpd, nginx, mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "Scegli quali server installare, se nessuno verrà eseguita un'installazione minima" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "Installa un sistema minimo oltre a xorg e driver grafici." - -msgid "Press Enter to continue." -msgstr "Premi Invio per continuare." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "Desideri eseguire il chroot nell'installazione appena creata e fare la configurazione post-installazione?" - -msgid "Are you sure you want to reset this setting?" -msgstr "Sei sicuro di voler ripristinare questa impostazione?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "Seleziona uno o più dischi rigidi da utilizzare e configurare\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "Qualsiasi modifica all'impostazione esistente ripristinerà il layout del disco!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "Se si ripristina la selezione del disco rigido, verrà ripristinato anche il layout del disco corrente. Sei sicuro?" - -msgid "Save and exit" -msgstr "Salva ed esci" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"contiene partizioni in coda, questo le rimuoverà, sei sicuro?" - -msgid "No audio server" -msgstr "Nessun server audio" - -msgid "(default)" -msgstr "(predefinito)" - -msgid "Use ESC to skip" -msgstr "Usa ESC per saltare" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"Usa CTRL+C per reimpostare la selezione corrente\n" -"\n" - -msgid "Copy to: " -msgstr "Copia su: " - -msgid "Edit: " -msgstr "Modifica: " - -msgid "Key: " -msgstr "Chiave: " - -msgid "Edit {}: " -msgstr "Modifica {}: " - -msgid "Add: " -msgstr "Aggiungi: " - -msgid "Value: " -msgstr "Valore: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "Puoi saltare la selezione e il partizionamento di un'unità e utilizzare qualsiasi configurazione di unità sia montata in /mnt (sperimentale)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "Seleziona uno dei dischi o salta e usa /mnt come predefinito" - -msgid "Select which partitions to mark for formatting:" -msgstr "Seleziona quali partizioni contrassegnare per la formattazione:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "Utilizza HSM per sbloccare l'unità crittografata" - -msgid "Device" -msgstr "Dispositivo" - -msgid "Size" -msgstr "Dimensione" - -msgid "Free space" -msgstr "Spazio libero" - -msgid "Bus-type" -msgstr "Tipo di bus" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "È necessario specificare la password di root o almeno 1 utente con privilegi sudo" - -msgid "Enter username (leave blank to skip): " -msgstr "Inserisci il nome utente (lascia vuoto per saltare): " - -msgid "The username you entered is invalid. Try again" -msgstr "Il nome utente inserito non è valido. Riprova" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "\"{}\" dovrebbe essere un superuser (sudo)?" - -msgid "Select which partitions to encrypt" -msgstr "Seleziona le partizioni da crittografare" - -msgid "very weak" -msgstr "molto debole" - -msgid "weak" -msgstr "debole" - -msgid "moderate" -msgstr "discreta" - -msgid "strong" -msgstr "forte" - -msgid "Add subvolume" -msgstr "Aggiungi sottovolume" - -msgid "Edit subvolume" -msgstr "Modifica sottovolume" - -msgid "Delete subvolume" -msgstr "Elimina sottovolume" - -msgid "Configured {} interfaces" -msgstr "Interfacce {} configurate" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "Questa opzione consente di impostare il numero di download paralleli che possono avvenire durante l'installazione" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"Inserisci il numero di download paralleli da abilitare.\n" -" (Inserisci un valore compreso tra 1 e {})\n" -"Nota:" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - Valore massimo : {} ( Consente {} download parallelo, consente {} download alla volta )" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - Valore minimo : 1 ( Consente 1 download parallelo, consente 2 download alla volta )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - Disabilita/Predefinito : 0 ( Disabilita il download parallelo, consente solo 1 download alla volta )" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "Input non valido! Riprova con un input valido [da 1 a {max_downloads}, o 0 per disabilitare]." - -msgid "Parallel Downloads" -msgstr "Download paralleli" - -msgid "ESC to skip" -msgstr "ESC per saltare" - -msgid "CTRL+C to reset" -msgstr "CTRL+C per resettare" - -msgid "TAB to select" -msgstr "TAB per selezionare" - -msgid "[Default value: 0] > " -msgstr "[Valore predefinito: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "Per poter utilizzare questa traduzione, installa manualmente un font che supporti la lingua." - -msgid "The font should be stored as {}" -msgstr "Il carattere dovrebbe essere memorizzato come {}" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "Archinstall richiede i privilegi di root per essere eseguito. Vedi --help per ulteriori informazioni." - -msgid "Select an execution mode" -msgstr "Seleziona una modalità d’esecuzione" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "Impossibile recuperare il profilo dall’URL specificato: {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "I profili devono avere un nome univoco, ma sono state trovate definizioni di profilo con nome duplicato: {}" - -msgid "Select one or more devices to use and configure" -msgstr "Seleziona uno o più dispositivi da utilizzare e configurare" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "Se si ripristina la selezione del disco rigido, verrà ripristinato anche il layout del disco corrente. Sei sicuro?" - -msgid "Existing Partitions" -msgstr "Partizioni esistenti" - -msgid "Select a partitioning option" -msgstr "Selezione opzione di partizionamento" - -msgid "Enter the root directory of the mounted devices: " -msgstr "Inserisci la directory principale dei dispositivi montati: " - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "Capacità minima per la partizione /home: {}GiB\n" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "Capacità minima per la partizione 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 "Questo è un elenco di profili pre-programmati, che potrebbero semplificare l'installazione di elementi come gli ambienti desktop" - -msgid "Current profile selection" -msgstr "Selezione profilo corrente" - -msgid "Remove all newly added partitions" -msgstr "Elimina tutte le partizioni appena aggiunte" - -msgid "Assign mountpoint" -msgstr "Assegna punto di montaggio" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "Seleziona/Deseleziona come da formattare (cancella i dati)" - -msgid "Mark/Unmark as bootable" -msgstr "Contrassegna/Deseleziona come avviabile" - -msgid "Change filesystem" -msgstr "Cambia filesystem" - -msgid "Mark/Unmark as compressed" -msgstr "Seleziona/Deseleziona come compressa" - -msgid "Set subvolumes" -msgstr "Imposta sottovolumi" - -msgid "Delete partition" -msgstr "Elimina partizione" - -msgid "Partition" -msgstr "Partizione" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "Questa partizione è attualmente crittografata, per formattarla è necessario specificare un filesystem" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "I punti di montaggio della partizione sono relativi all'interno dell'installazione, l'avvio sarebbe per esempio /boot." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "Se il mountpoint /boot è impostato, anche la partizione sarà contrassegnata come avviabile." - -msgid "Mountpoint: " -msgstr "Punto di mount: " - -msgid "Current free sectors on device {}:" -msgstr "Settori attualmente liberi sul dispositivo {}:" - -msgid "Total sectors: {}" -msgstr "Settori totali: {}" - -msgid "Enter the start sector (default: {}): " -msgstr "Inserisci il settore iniziale (predefinito: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "Inserisci il settore finale della partizione (percentuale o numero di blocco, predefinito: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "Questo rimuoverà tutte le partizioni appena aggiunte, continuare?" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "Gestione partizione: {}" - -#, python-brace-format -msgid "Total length: {}" -msgstr "Lunghezza totale: {}" - -msgid "Encryption type" -msgstr "Tipo di crittografia" - -msgid "Iteration time" -msgstr "Tempo di iterazione" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "Inserisci il tempo di iterazione per la crittografia LUKS (in millisecondi)" - -msgid "Higher values increase security but slow down boot time" -msgstr "Valori alti aumentano la sicurezza ma rallentano l'avvio" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "Predefinito: 10000 ms, Intervallo consigliato: 1000-60000" - -msgid "Iteration time cannot be empty" -msgstr "Il tempo di iterazione non può essere vuoto" - -msgid "Iteration time must be at least 100ms" -msgstr "Il tempo di iterazione deve essere almeno 100 ms" - -msgid "Iteration time must be at most 120000ms" -msgstr "Il tempo di iterazione deve essere al massimo 120000 ms" - -msgid "Please enter a valid number" -msgstr "Inserisci un numero valido" - -msgid "Partitions" -msgstr "Partizioni" - -msgid "No HSM devices available" -msgstr "Nessun dispositivo HSM disponibile" - -msgid "Partitions to be encrypted" -msgstr "Partizioni da crittografare" - -msgid "Select disk encryption option" -msgstr "Selezione opzione per crittografia disco" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "Seleziona un dispositivo FIDO2 da utilizzare per HSM" - -msgid "Use a best-effort default partition layout" -msgstr "Utilizza un layout di partizione predefinito ottimale" - -msgid "Manual Partitioning" -msgstr "Partizionamento manuale" - -msgid "Pre-mounted configuration" -msgstr "Configurazione pre caricata" - -msgid "Unknown" -msgstr "Sconosciuto" - -msgid "Partition encryption" -msgstr "Crittografia partizione" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr " ! Formattazione {} in " - -msgid "← Back" -msgstr "← Indietro" - -msgid "Disk encryption" -msgstr "Crittografia disco" - -msgid "Configuration" -msgstr "Configurazione" - -msgid "Password" -msgstr "Password" - -msgid "All settings will be reset, are you sure?" -msgstr "Tutte le impostazioni verranno resettate, sei sicuro?" - -msgid "Back" -msgstr "Indietro" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "Scegli quale messaggio di benvenuto installare per i profili scelti: {}" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "Tipo di ambiente: {}" - -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 "Il driver proprietario Nvidia non è supportato da Sway. È probabile che incontrerai dei problemi, ti va bene?" - -msgid "Installed packages" -msgstr "Pacchetti installati" - -msgid "Add profile" -msgstr "Aggiungi profilo" - -msgid "Edit profile" -msgstr "Modifica profilo" - -msgid "Delete profile" -msgstr "Elimina profilo" - -msgid "Profile name: " -msgstr "Profilo: " - -msgid "The profile name you entered is already in use. Try again" -msgstr "Il nome utente inserito non è già in uso. Riprova" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "Pacchetti da installare con questo profilo (separati da spazi, lascia vuoto per saltare): " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "Servizi da abilitare con questo profilo (separati da spazi, lascia vuoto per saltare): " - -msgid "Should this profile be enabled for installation?" -msgstr "Questo profilo dovrebbe essere abilitato per l’installazione?" - -msgid "Create your own" -msgstr "Crea il tuo" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"Seleziona un driver grafico o lascia vuoto per installare tutti i driver open source" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway ha bisogno dell’accesso al tuo posto (insieme di dispositivi hardware, ad esempio tastiera, mouse, ecc.)" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Scegli un’opzione per concedere a Sway l’accesso al tuo hardware" - -msgid "Graphics driver" -msgstr "Driver grafici" - -msgid "Greeter" -msgstr "Programma di benvenuto" - -msgid "Please chose which greeter to install" -msgstr "Scegli quale programma di benvenuto installare" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "Questo è un elenco di default_profiles preprogrammati" - -msgid "Disk configuration" -msgstr "Configurazione disco" - -msgid "Profiles" -msgstr "Profili" - -msgid "Finding possible directories to save configuration files ..." -msgstr "Ricerca di possibili directory in cui salvare i file di configurazione …" - -msgid "Select directory (or directories) for saving configuration files" -msgstr "Seleziona uno o più directory per salvare i file di configurazione" - -msgid "Add a custom mirror" -msgstr "Aggiungi un mirror personalizzato" - -msgid "Change custom mirror" -msgstr "Cambia mirror personalizzato" - -msgid "Delete custom mirror" -msgstr "Elimina mirror personalizzato" - -msgid "Enter name (leave blank to skip): " -msgstr "Inserisci il nome (lascia vuoto per saltare): " - -msgid "Enter url (leave blank to skip): " -msgstr "Inserisci url (lascia vuoto per saltare): " - -msgid "Select signature check option" -msgstr "Seleziona opzione di controllo della firma" - -msgid "Select signature option" -msgstr "Seleziona opzioni di firma" - -msgid "Custom mirrors" -msgstr "Mirror personalizzati" - -msgid "Defined" -msgstr "Definito" - -msgid "Save user configuration (including disk layout)" -msgstr "Salva configurazione utente (incluso layout del disco)" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"Inserisci una directory per le configurazioni da salvare: (completamento col tasto tab abilitato)\n" -"Directory di salvataggio: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"Vuoi salvare file di configurazione {} al seguente percorso?\n" -"\n" -"{}" - -msgid "Saving {} configuration files to {}" -msgstr "Salva file di configurazione {} in {}" - -msgid "Mirrors" -msgstr "Mirror" - -msgid "Mirror regions" -msgstr "Regione dei mirror" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - Valore massimo : {} ( Consente {} download paralleli, consente {max_downloads+1} downloads alla vola )" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "Input non valido! Riprova con un input valido [da 1 a {}, o 0 per disabilitare]." - -msgid "Locales" -msgstr "Localizzazione" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "Usa NetworkManager (necessario per configurare graficamente Internet in GNOME e KDE)" - -msgid "Total: {} / {}" -msgstr "Totale: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "Tutti i valori immessi possono avere come suffisso un’unità: %, B, KB, KiB, MB, MiB…" - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "Se non viene fornita alcuna unità, il valore viene interpretato come settori" - -msgid "Enter start (default: sector {}): " -msgstr "Inserisci inizio (predefinito: {}): " - -msgid "Enter end (default: {}): " -msgstr "Inserisci fine (predefinito: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "Impossibile determinare i dispositivi fido2. libfido2 è installato?" - -msgid "Path" -msgstr "Percorso" - -msgid "Manufacturer" -msgstr "Costruttore" - -msgid "Product" -msgstr "Prodotto" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "Configurazione non valida: {error}" - -msgid "Type" -msgstr "Tipo" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "Questa opzione consente di impostare il numero di download paralleli che possono avvenire durante l'installazione" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"Inserisci il numero di download paralleli da abilitare.\n" -"\n" -"Nota:\n" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - Valore massimo raccomandato : {} ( Consente {} download paralleli)" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - Disabilita/Predefinito : 0 ( Disabilita il download parallelo, consente solo 1 download alla volta )\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "Input non valido! Riprova con un input valido [0 per disabilitare]." - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Hyprland ha bisogno dell’accesso al tuo posto (insieme di dispositivi hardware, ad esempio tastiera, mouse, ecc.)" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Scegli un’opzione per concedere a Hyprland l'accesso al tuo hardware a Hyprland" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "Tutti i valori immessi possono avere come suffisso un’unità: %, B, KB, KiB, MB, MiB…" - -msgid "Would you like to use unified kernel images?" -msgstr "Desideri usare le immagini kernel unificate?" - -msgid "Unified kernel images" -msgstr "Immagini kernel unificate" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "In attesa del completamento della sincronizzazione dell’orario (timedatectl show)" - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "La sincronizzazione dell’orario non si sta completando, mentre aspetti leggi la documentazione alla ricerca di una soluzione: https://archinstall.readthedocs.io/" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "Salto l’attesa della sincronizzazione automatica dell’ora (potrebbe causare problemi se l’orario non è sincronizzato durante l’installazione)" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "In attesa che la sincronizzazione del portachiavi di Arch Linux (archlinux-keyring-wkd-sync) sia completa." - -msgid "Selected profiles: " -msgstr "Profili selezionati: " - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "La sincronizzazione dell’orario non si sta completando, in attesa, leggi la documentazione alla ricerca di una soluzione: https://archinstall.readthedocs.io/" - -msgid "Mark/Unmark as nodatacow" -msgstr "Seleziona/Deseleziona come nodatacow" - -msgid "Would you like to use compression or disable CoW?" -msgstr "Desideri usare la compressione o disabilitare CoW?" - -msgid "Use compression" -msgstr "Usa la compressione" - -msgid "Disable Copy-on-Write" -msgstr "Disabilita Copy-on-Write" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "Fornisce una selezione di ambienti desktop e gestori di finestre, per esempio GNOME, KDE Plasma, Sway" - -#, python-brace-format -msgid "Configuration type: {}" -msgstr "Tipo configurazione: {}" - -msgid "LVM configuration type" -msgstr "Tipo configurazione LVM" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "La crittografia del disco LVM con più di 2 partizioni non è supportata al momento" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "Usa NetworkManager (necessario per configurare graficamente Internet in GNOME e KDE Plasma)" - -msgid "Select a LVM option" -msgstr "Seleziona una opzione LVM" - -msgid "Partitioning" -msgstr "Partizionamento in corso" - -msgid "Logical Volume Management (LVM)" -msgstr "Logical Volume Management (LVM)" - -msgid "Physical volumes" -msgstr "Volumi fisici" - -msgid "Volumes" -msgstr "Volumi" - -msgid "LVM volumes" -msgstr "Volumi LVM" - -msgid "LVM volumes to be encrypted" -msgstr "Volumi LVM da crittografare" - -msgid "Select which LVM volumes to encrypt" -msgstr "Seleziona volumi LVM da crittografare" - -msgid "Default layout" -msgstr "Layout predefinito" - -msgid "No Encryption" -msgstr "Nessuna crittografia" - -msgid "LUKS" -msgstr "LUKS" - -msgid "LVM on LUKS" -msgstr "LVM su LUKS" - -msgid "LUKS on LVM" -msgstr "LUKS su LVM" - -msgid "Yes" -msgstr "Sì" - -msgid "No" -msgstr "No" - -msgid "Archinstall help" -msgstr "Aiuto di Archinstall" - -msgid " (default)" -msgstr " (predefinito)" - -msgid "Press Ctrl+h for help" -msgstr "Premi CTRL+H per aiuto" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "Scegli un’opzione per concedere a Sway l’accesso al tuo hardware" - -msgid "Seat access" -msgstr "Accesso al posto" - -msgid "Mountpoint" -msgstr "Punto di mount" - -msgid "HSM" -msgstr "HSM" - -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "Inserisci la password di crittografia del disco (lascia vuoto per nessuna crittografia)" - -msgid "Disk encryption password" -msgstr "Password di crittografia del disco" - -msgid "Partition - New" -msgstr "Partizione - Nuova" - -msgid "Filesystem" -msgstr "Filesystem" - -msgid "Invalid size" -msgstr "Dimensione non valida" - -msgid "Start (default: sector {}): " -msgstr "Inizio (predefinito: settore{}): " - -msgid "End (default: {}): " -msgstr "Fine (predefinito: {}): " - -msgid "Subvolume name" -msgstr "Nome del sottovolume" - -msgid "Disk configuration type" -msgstr "Tipo configurazione disco" - -msgid "Root mount directory" -msgstr "Cartella di montaggio di root" - -msgid "Select language" -msgstr "Seleziona lingua" - -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "Scrivi i pacchetti aggiuntivi da installare (separati da spazi, lascia vuoto per saltare)" - -msgid "Invalid download number" -msgstr "Numero di download non valido" - -msgid "Number downloads" -msgstr "Numero di download" - -msgid "The username you entered is invalid" -msgstr "Il nome utente inserito non è valido" - -msgid "Username" -msgstr "Nome utente" - -#, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "\"{}\" dovrebbe essere un superuser (sudo)?\n" - -msgid "Interfaces" -msgstr "Interfacce" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "Devi inserire un IP valido nella modalità IP-config" - -msgid "Modes" -msgstr "Modalità" - -msgid "IP address" -msgstr "Indirizzo IP" - -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "Inserisci l'indirizzo IP del tuo gateway (router) o lascia vuoto per nessuno" - -msgid "Gateway address" -msgstr "Indirizzo gateway" - -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "Inserisci i tuoi server DNS (separati da spazi, vuoto per nessuno)" - -msgid "DNS servers" -msgstr "Server DNS" - -msgid "Configure interfaces" -msgstr "Configurazione interfacce" - -msgid "Kernel" -msgstr "Kernel" - -msgid "UEFI is not detected and some options are disabled" -msgstr "L'UEFI non è stato rilevato ed alcune opzioni sono disattivate" - -msgid "Info" -msgstr "Info" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "Il driver proprietario Nvidia non è supportato da Sway." - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "È possibile che incorrerai in problemi, ti va bene?" - -msgid "Main profile" -msgstr "Profilo principale" - -msgid "Confirm password" -msgstr "Conferma password" - -msgid "The confirmation password did not match, please try again" -msgstr "Le password non corrispondono, prova di nuovo" - -msgid "Not a valid directory" -msgstr "Non è una cartella valida" - -msgid "Would you like to continue?" -msgstr "Desideri continuare?" - -msgid "Directory" -msgstr "Cartella" - -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "Inserisci una cartella dove salvare le configurazioni (completamento col tasto tab abilitato)" - -#, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "Vuoi salvare i file di configurazione in {}?" - -msgid "Enabled" -msgstr "Attivato" - -msgid "Disabled" -msgstr "Disattivato" - -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "Invia questo problema (e il file) a https://github.com/archlinux/archinstall/issues" - -msgid "Mirror name" -msgstr "Nome mirror" - -msgid "Url" -msgstr "URL" - -msgid "Select signature check" -msgstr "Seleziona controllo della firma" - -msgid "Select execution mode" -msgstr "Seleziona una modalità d’esecuzione" - -msgid "Press ? for help" -msgstr "Premi ? per aiuto" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "Scegli un’opzione per concedere a Hyprland l'accesso al tuo hardware" - -msgid "Additional repositories" -msgstr "Repository aggiuntive" - -msgid "NTP" -msgstr "NTP" - -msgid "Swap on zram" -msgstr "Swap su zram" - -msgid "Name" -msgstr "Nome" - -msgid "Signature check" -msgstr "Controllo della firma" - -#, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "Segmento di spazio libero selezionato sul dispositivo {}:" - -#, python-brace-format -msgid "Size: {} / {}" -msgstr "Dimensione: {} / {}" - -#, python-brace-format -msgid "Size (default: {}): " -msgstr "Dimensione (predefinita: {}): " - -msgid "HSM device" -msgstr "Dispositivo HSM" - -msgid "Some packages could not be found in the repository" -msgstr "Alcuni pacchetti non sono stati trovati nella repository" - -msgid "User" -msgstr "Utente" - -msgid "The specified configuration will be applied" -msgstr "La configurazione specificata verrà applicata" - -msgid "Wipe" -msgstr "Cancella" - -msgid "Mark/Unmark as XBOOTLDR" -msgstr "Contrassegna/Deseleziona come XBOOTLDR" - -msgid "Loading packages..." -msgstr "Caricamento pacchetti in corso..." - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "Seleziona dalla lista sotto i pacchetti da installare" - -msgid "Add a custom repository" -msgstr "Aggiungi una repository personalizzata" - -msgid "Change custom repository" -msgstr "Cambia repository personalizzata" - -msgid "Delete custom repository" -msgstr "Elimina repository personalizzata" - -msgid "Repository name" -msgstr "Nome repository" - -msgid "Add a custom server" -msgstr "Aggiungi un server personalizzato" - -msgid "Change custom server" -msgstr "Cambia server personalizzato" - -msgid "Delete custom server" -msgstr "Elimina server personalizzato" - -msgid "Server url" -msgstr "URL server" - -msgid "Select regions" -msgstr "Seleziona regioni" - -msgid "Add custom servers" -msgstr "Aggiungi server personalizzati" - -msgid "Add custom repository" -msgstr "Aggiungi repository personalizzate" - -msgid "Loading mirror regions..." -msgstr "Caricamento regioni dei mirror in corso..." - -msgid "Mirrors and repositories" -msgstr "Mirror e repository" - -msgid "Selected mirror regions" -msgstr "Regioni dei mirror selezionate" - -msgid "Custom servers" -msgstr "Server personalizzati" - -msgid "Custom repositories" -msgstr "Repository personalizzate" - -msgid "Only ASCII characters are supported" -msgstr "Sono supportati solo caratteri ASCII" - -msgid "Show help" -msgstr "Mostra aiuto" - -msgid "Exit help" -msgstr "Chiudi aiuto" - -msgid "Preview scroll up" -msgstr "Anteprima scorrimento vero l'alto" - -msgid "Preview scroll down" -msgstr "Anteprima scorrimento vero il basso" - -msgid "Move up" -msgstr "Muovi su" - -msgid "Move down" -msgstr "Muovi giù" - -msgid "Move right" -msgstr "Muovi a destra" - -msgid "Move left" -msgstr "Muovi a sinistra" - -msgid "Jump to entry" -msgstr "Vai alla voce" - -msgid "Skip selection (if available)" -msgstr "Salta selezione (se disponibile)" - -msgid "Reset selection (if available)" -msgstr "Ripristina selezione (se disponibile)" - -msgid "Select on single select" -msgstr "Seleziona con selezione singola" - -msgid "Select on multi select" -msgstr "Seleziona con selezione multipla" - -msgid "Reset" -msgstr "Ripristina" - -msgid "Skip selection menu" -msgstr "Salta menu di selezione" - -msgid "Start search mode" -msgstr "Avvia modalità ricerca" - -msgid "Exit search mode" -msgstr "Chiudi modalità ricerca" - -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "labwc ha bisogno dell’accesso al tuo posto (insieme di dispositivi hardware, ad esempio tastiera, mouse, ecc.)" - -msgid "Choose an option to give labwc access to your hardware" -msgstr "Scegli un’opzione per concedere a labwc l’accesso al tuo hardware" - -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "niri ha bisogno dell’accesso al tuo posto (insieme di dispositivi hardware, ad esempio tastiera, mouse, ecc.)" - -msgid "Choose an option to give niri access to your hardware" -msgstr "Scegli un’opzione per concedere a niri l’accesso al tuo hardware" - -msgid "Mark/Unmark as ESP" -msgstr "Contrassegna/Deseleziona come ESP" - -msgid "Package group:" -msgstr "Gruppo di pacchetti:" - -msgid "Exit archinstall" -msgstr "Esci da archinstall" - -msgid "Reboot system" -msgstr "Riavvia il sistema" - -msgid "chroot into installation for post-installation configurations" -msgstr "chroot nell'installazione per la configurazione post-installazione" - -msgid "Installation completed" -msgstr "Installazione completata" - -msgid "What would you like to do next?" -msgstr "Cosa desideri fare dopo?" - -#, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "Seleziona la modalità da configurare per \"{}\"" - -msgid "Incorrect credentials file decryption password" -msgstr "Password di decrittazione del file delle credenziali errata" - -msgid "Incorrect password" -msgstr "Password errata" - -msgid "Credentials file decryption password" -msgstr "Password di decrittazione del file delle credenziali" - -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "Vuoi criptare il file di user_credentials.json?" - -msgid "Credentials file encryption password" -msgstr "Password di crittazione del file delle credenziali" - -#, python-brace-format -msgid "Repositories: {}" -msgstr "Repository: {}" - -msgid "New version available" -msgstr "Nuova versione disponibile" - -msgid "Passwordless login" -msgstr "Accesso senza password" - -msgid "Second factor login" -msgstr "Accesso con secondo fattore" - -msgid "Bluetooth" -msgstr "Bluetooth" - -msgid "Would you like to configure Bluetooth?" -msgstr "Desideri configurare il Bluetooth?" - -msgid "Authentication" -msgstr "Autenticazione" - -msgid "Applications" -msgstr "Applicazioni" - -msgid "U2F login method: " -msgstr "Metodo di accesso U2F: " - -msgid "Passwordless sudo: " -msgstr "Sudo senza password: " - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "Tipo di snapshot Btrfs: {}" - -msgid "Syncing the system..." -msgstr "Sincronizzazione del sistema in corso…" - -msgid "Value cannot be empty" -msgstr "Il valore non può essere vuoto" - -msgid "Snapshot type" -msgstr "Tipo di snapshot" - -#, python-brace-format -msgid "Snapshot type: {}" -msgstr "Tipo di snapshot: {}" - -msgid "U2F login setup" -msgstr "Imposta accesso U2F" - -msgid "No U2F devices found" -msgstr "Nessun dispositivo U2F trovato" - -msgid "U2F Login Method" -msgstr "Metodo di accesso U2F" - -msgid "Enable passwordless sudo?" -msgstr "Attivare sudo senza password?" - -#, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "Impostazione dispositivo U2F per l'utente: {}" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "Devi inserire il PIN e toccare il tuo dispositivo U2F per registrarlo" - -msgid "Starting device modifications in " -msgstr "Avvio delle modifiche del dispositivo in " - -msgid "No network connection found" -msgstr "Nessuna connessione di rete trovata" - -msgid "Would you like to connect to a Wifi?" -msgstr "Desideri connetterti ad una Wi-FI?" - -msgid "No wifi interface found" -msgstr "Nessuna interfaccia Wi-Fi trovata" - -msgid "Select wifi network to connect to" -msgstr "Seleziona una rete Wi-Fi a cui connettersi" - -msgid "Scanning wifi networks..." -msgstr "Scansione reti Wi-Fi in corso..." - -msgid "No wifi networks found" -msgstr "Nessuna rete Wi-Fi trovata" - -msgid "Failed setting up wifi" -msgstr "Impostazione del Wi-Fi non riuscita" - -msgid "Enter wifi password" -msgstr "Inserisci la password del Wi-Fi" - -msgid "Ok" -msgstr "Ok" diff --git a/examples/archinstall/archinstall/locales/ja/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/ja/LC_MESSAGES/base.mo deleted file mode 100644 index 089f843..0000000 Binary files a/examples/archinstall/archinstall/locales/ja/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/ja/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/ja/LC_MESSAGES/base.po deleted file mode 100644 index 1069cb1..0000000 --- a/examples/archinstall/archinstall/locales/ja/LC_MESSAGES/base.po +++ /dev/null @@ -1,1816 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: UTUMI Hirosi \n" -"Language-Team: \n" -"Language: ja\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.6\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] ここにログファイルが作成されました: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " この問題(およびファイル)を https://github.com/archlinux/archinstall/issues に送信してください" - -msgid "Do you really want to abort?" -msgstr "本当に中止しますか?" - -msgid "And one more time for verification: " -msgstr "確認のためにもう1度: " - -msgid "Would you like to use swap on zram?" -msgstr "zram でスワップを使用しますか?" - -msgid "Desired hostname for the installation: " -msgstr "インストール時のホスト名: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "sudo 権限を持つスーパーユーザーのユーザー名: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "インストールする追加のユーザー(ユーザーがない場合は無記入): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "このユーザーはスーパーユーザーに昇格しますか(sudoer)?" - -msgid "Select a timezone" -msgstr "タイムゾーンを選択" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "systemd-boot の代わりに GRUB をブートローダーとして使用しますか?" - -msgid "Choose a bootloader" -msgstr "ブートローダーを選択" - -msgid "Choose an audio server" -msgstr "オーディオサーバーを選択" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "base, base-devel, linux, linux-firmware, efibootmgr などのパッケージとオプションのプロファイルパッケージのみがインストールされます。" - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "firefox や chromium などのウェブブラウザーをインストールする場合は、次のプロンプトで指定できます。" - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "追加でインストールするパッケージを書く(スペースで区切る。無記入でスキップ): " - -msgid "Copy ISO network configuration to installation" -msgstr "ISO ネットワーク設定をインストール環境にコピー" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "NetworkManager を使用(GNOME と KDE でインターネットをグラフィカルに設定するのに必要)" - -msgid "Select one network interface to configure" -msgstr "設定するネットワークインターフェイスを 1 つ選択" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "どのモードを \"{}\" に設定するかを選択。スキップでデフォルトモード \"{}\" を使用" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "{} の IP とサブネットを入力(例: 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "ゲートウェイ(ルーター)の IP アドレスを入力。無い場合は無記入: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "DNS サーバーを入力(スペースで区切る。無い場合は無記入): " - -msgid "Select which filesystem your main partition should use" -msgstr "メインパーティションで使用するファイルシステムを選択" - -msgid "Current partition layout" -msgstr "現在のパーティションレイアウト" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"何をするか選択\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "パーティションのファイルシステムを入力" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "開始場所を入力(単位: s, GB, % など。デフォルト: {}): " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "終了場所を入力(単位: s, GB, % など。例: {}): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} にはキューに入っているパーティションが含まれます。それらが削除されますがよろしいですか?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"削除するパーティションをインデックスで選択" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"どのパーティションをどこにマウントするかをインデックスで選択" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "* パーティションのマウントポイントはインストールにおける相対的なものであり、例として boot は /boot になります。" - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "パーティションをマウントする場所を選択(無記入でマウントポイントを削除): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"フォーマット対象としてマークするパーティションを選択" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"暗号化対象としてマークするパーティションを選択" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"ブータブルとしてマークするパーティションを選択" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"ファイルシステムを設定するパーティションを選択" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "パーティションのファイルシステムを入力: " - -msgid "Archinstall language" -msgstr "Archinstall の言語" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "選択したすべてのドライブを消去し、ベストエフォートのデフォルトパーティションレイアウトを使用する" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "個々のドライブをどうするかを選択(次にパーティションの使用方法が続く)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "選択したブロックデバイスで何をするかを選択" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "これは事前にプログラムされたプロファイルのリストです。デスクトップ環境などのインストールが簡単になる可能性があります" - -msgid "Select keyboard layout" -msgstr "キーボードレイアウトを選択" - -msgid "Select one of the regions to download packages from" -msgstr "パッケージをダウンロードする地域を 1 つ選択" - -msgid "Select one or more hard drives to use and configure" -msgstr "使用・設定する 1 つ以上のハードドライブを選択" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "AMD ハードウェアとの互換性を最大限に高めるには、すべてのオープンソースまたは AMD/ATI オプションのいずれかを使用することをお勧めします。" - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "Intel ハードウェアとの互換性を最大限に高めるには、すべてのオープンソースまたは Intel オプションのいずれかを使用することをお勧めします。\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Nvidia ハードウェアとの互換性を最大限に高めるには、Nvidia 独自のドライバーを使用することをお勧めします。\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"グラフィックドライバーを選択するか、無記入ですべてのオープンソースドライバーをインストール" - -msgid "All open-source (default)" -msgstr "すべてのオープンソース(デフォルト)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "使用するカーネルを選択。無記入でデフォルトの \"{}\"" - -msgid "Choose which locale language to use" -msgstr "使用するロケール言語を選択" - -msgid "Choose which locale encoding to use" -msgstr "使用するロケール エンコーディングを選択" - -msgid "Select one of the values shown below: " -msgstr "以下の値のいずれかを選択: " - -msgid "Select one or more of the options below: " -msgstr "以下のオプションを 1 つ以上選択: " - -msgid "Adding partition...." -msgstr "パーティションを追加...." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "続行するには、有効な fs-type を入力する必要があります。有効な fs-type については、 `man parted` を参照してください。" - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "エラー: URL \"{}\" のプロファイルをリストすると、次の結果が発生:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "エラー: \"{}\" の結果を JSON としてデコードできませんでした:" - -msgid "Keyboard layout" -msgstr "キーボードレイアウト" - -msgid "Mirror region" -msgstr "ミラーの地域" - -msgid "Locale language" -msgstr "ロケール言語" - -msgid "Locale encoding" -msgstr "ロケールエンコーディング" - -msgid "Drive(s)" -msgstr "ドライブ" - -msgid "Disk layout" -msgstr "ディスクレイアウト" - -msgid "Encryption password" -msgstr "暗号化パスワード" - -msgid "Swap" -msgstr "スワップ" - -msgid "Bootloader" -msgstr "ブートローダー" - -msgid "Root password" -msgstr "root パスワード" - -msgid "Superuser account" -msgstr "スーパーユーザーアカウント" - -msgid "User account" -msgstr "ユーザーアカウント" - -msgid "Profile" -msgstr "プロファイル" - -msgid "Audio" -msgstr "オーディオ" - -msgid "Kernels" -msgstr "カーネル" - -msgid "Additional packages" -msgstr "追加パッケージ" - -msgid "Network configuration" -msgstr "ネットワーク設定" - -msgid "Automatic time sync (NTP)" -msgstr "時刻の自動同期(NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "インストール({} 個の設定がありません)" - -msgid "" -"You decided to skip harddrive selection\n" -"and will use whatever drive-setup is mounted at {} (experimental)\n" -"WARNING: Archinstall won't check the suitability of this setup\n" -"Do you wish to continue?" -msgstr "" -"ハードドライブの選択をスキップし、\n" -"{} にマウントしているドライブのセットアップを使用します(実験的)\n" -"警告: Archinstall はこのセットアップの適合性をチェックしません\n" -"続行しますか?" - -msgid "Re-using partition instance: {}" -msgstr "パーティションインスタンスの再利用: {}" - -msgid "Create a new partition" -msgstr "新しいパーティションを作成" - -msgid "Delete a partition" -msgstr "パーティションを削除" - -msgid "Clear/Delete all partitions" -msgstr "すべてのパーティションをクリア/削除" - -msgid "Assign mount-point for a partition" -msgstr "パーティションにマウントポイントを割り当てる" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "フォーマットするパーティションとしてマーク/マーク解除(データを消去)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "暗号化するパーティションとしてマーク/マーク解除" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "ブータブルパーティションとしてマーク/マーク解除(/boot の場合は自動)" - -msgid "Set desired filesystem for a partition" -msgstr "パーティションのファイルシステムを設定" - -msgid "Abort" -msgstr "中止" - -msgid "Hostname" -msgstr "ホスト名" - -msgid "Not configured, unavailable unless setup manually" -msgstr "未設定。手動で設定しない限り使用できません" - -msgid "Timezone" -msgstr "タイムゾーン" - -msgid "Set/Modify the below options" -msgstr "以下のオプションを設定/変更" - -msgid "Install" -msgstr "インストール" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"Esc でスキップ\n" -"\n" - -msgid "Suggest partition layout" -msgstr "パーティションレイアウトを提案" - -msgid "Enter a password: " -msgstr "パスワードを入力: " - -msgid "Enter a encryption password for {}" -msgstr "{} の暗号化パスワードを入力" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "ディスクの暗号化パスワードを入力(暗号化しない場合は無記入): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "sudo 権限を持つスーパーユーザーを作成: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "root パスワードを入力(root を無効にする場合は無記入): " - -msgid "Password for user \"{}\": " -msgstr "ユーザー \"{}\" のパスワード: " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "追加のパッケージが存在することを確認(これには数秒かかる場合があります)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "デフォルトのタイムサーバーで時刻の自動同期(NTP)を使用しますか?\n" - -msgid "" -"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" -"For more information, please check the Arch wiki" -msgstr "" -"NTP が機能するには、ハードウェアクロックおよびその他の設定後のステップが必要になる場合があります。\n" -"詳細については Arch wiki を確認してください" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "ユーザー名を入力して追加ユーザーを作成(無記入でスキップ): " - -msgid "Use ESC to skip\n" -msgstr "Esc でスキップ\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -"リストからオブジェクトを選択し、そのオブジェクトで実行できるアクションの 1 つを選択" - -msgid "Cancel" -msgstr "キャンセル" - -msgid "Confirm and exit" -msgstr "確認して終了" - -msgid "Add" -msgstr "追加" - -msgid "Copy" -msgstr "コピー" - -msgid "Edit" -msgstr "編集" - -msgid "Delete" -msgstr "削除" - -msgid "Select an action for '{}'" -msgstr "'{}' へのアクションを選択" - -msgid "Copy to new key:" -msgstr "新しいキーにコピー:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "不明な NIC タイプ: {}。可能な値は {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"これが選択した設定です:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Pacman はすでに実行されており、終了するまで最大 10 分間待機します。" - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "既存の pacman のロックが終了しませんでした。Archinstall を使用する前に、既存の pacman セッションをクリーンアップしてください。" - -msgid "Choose which optional additional repositories to enable" -msgstr "オプションで有効にする追加リポジトリを選択" - -msgid "Add a user" -msgstr "ユーザーを追加" - -msgid "Change password" -msgstr "パスワードを変更" - -msgid "Promote/Demote user" -msgstr "ユーザーを昇格/降格" - -msgid "Delete User" -msgstr "ユーザーを削除" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"新しいユーザーを定義\n" - -msgid "User Name : " -msgstr "ユーザー名: " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "{} はスーパーユーザーに昇格しますか(sudoer)?" - -msgid "Define users with sudo privilege: " -msgstr "sudo 権限を持つユーザーを定義: " - -msgid "No network configuration" -msgstr "ネットワーク設定なし" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "Btrfs パーティションに必要なサブボリュームを設定" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"サブボリュームを設定するパーティションを選択" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "現在のパーティションの Btrfs サブボリュームを管理" - -msgid "No configuration" -msgstr "設定なし" - -msgid "Save user configuration" -msgstr "ユーザー設定を保存" - -msgid "Save user credentials" -msgstr "ユーザーの認証情報を保存" - -msgid "Save disk layout" -msgstr "ディスクレイアウトを保存" - -msgid "Save all" -msgstr "すべて保存" - -msgid "Choose which configuration to save" -msgstr "保存する設定を選択" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "設定を保存するディレクトリを入力: " - -msgid "Not a valid directory: {}" -msgstr "有効なディレクトリではありません: {}" - -msgid "The password you are using seems to be weak," -msgstr "使用しているパスワードは弱いようです、" - -msgid "are you sure you want to use it?" -msgstr "本当に使用してもよろしいですか?" - -msgid "Optional repositories" -msgstr "オプションのリポジトリ" - -msgid "Save configuration" -msgstr "設定を保存" - -msgid "Missing configurations:\n" -msgstr "設定が存在しません:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "root パスワードか、1人以上のスーパーユーザーを指定してください" - -msgid "Manage superuser accounts: " -msgstr "スーパーユーザーアカウントを管理: " - -msgid "Manage ordinary user accounts: " -msgstr "一般ユーザーのアカウントを管理: " - -msgid " Subvolume :{:16}" -msgstr " サブボリューム :{:16}" - -msgid " mounted at {:16}" -msgstr " マウント場所 {:16}" - -msgid " with option {}" -msgstr " 次のオプションで {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -" 新しいサブボリュームに必要な値を入力 \n" - -msgid "Subvolume name " -msgstr "サブボリューム名 " - -msgid "Subvolume mountpoint" -msgstr "サブボリュームのマウントポイント" - -msgid "Subvolume options" -msgstr "サブボリュームのオプション" - -msgid "Save" -msgstr "保存" - -msgid "Subvolume name :" -msgstr "サブボリューム名:" - -msgid "Select a mount point :" -msgstr "マウントポイントを選択:" - -msgid "Select the desired subvolume options " -msgstr "サブボリュームのオプションを選択" - -msgid "Define users with sudo privilege, by username: " -msgstr "sudo 権限を持つユーザーを、ユーザー名で定義: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] ここにログファイルが作成されました: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "デフォルトの設定で Btrfs サブボリュームを使用しますか?" - -msgid "Would you like to use BTRFS compression?" -msgstr "Btrfs の圧縮を使用しますか?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "/home 用に別のパーティションを作成しますか?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "選択したドライブには、自動提案に必要な最小容量がありません\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "/home パーティションの最小容量: {}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Arch Linux パーティションの最小容量: {}GB" - -msgid "Continue" -msgstr "続行" - -msgid "yes" -msgstr "yes" - -msgid "no" -msgstr "no" - -msgid "set: {}" -msgstr "セット: {}" - -msgid "Manual configuration setting must be a list" -msgstr "手動設定はリストである必要があります" - -msgid "No iface specified for manual configuration" -msgstr "手動設定に iface が指定されていません" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "自動 DHCP を使用しない手動 NIC 設定には、IP アドレスが必要です" - -msgid "Add interface" -msgstr "インターフェイスを追加" - -msgid "Edit interface" -msgstr "インターフェイスを編集" - -msgid "Delete interface" -msgstr "インターフェイスを削除" - -msgid "Select interface to add" -msgstr "追加するインターフェースを選択" - -msgid "Manual configuration" -msgstr "手動設定" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "圧縮するパーティションとしてマーク/マーク解除(Btrfs のみ)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "使用しているパスワードは弱いようですが、本当に使用してもよろしいですか?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "デスクトップ環境とタイルウィンドウマネージャーの選択を提供します。e.g. gnome, kde, sway" - -msgid "Select your desired desktop environment" -msgstr "デスクトップ環境を選択" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "Arch Linux を必要に応じてカスタマイズできる非常に基本的なインストールです。" - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "さまざまなサーバー パッケージの選択肢を提供します。e.g. httpd, nginx, mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "インストールするサーバーを選択。存在しない場合は最小限のインストールが実行されます" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "最小限のシステムと xorg およびグラフィックドライバーをインストール。" - -msgid "Press Enter to continue." -msgstr "Enter キーで続行します。" - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "新しく作成したインストールに chroot して、インストール後の設定を実行しますか?" - -msgid "Are you sure you want to reset this setting?" -msgstr "この設定をリセットしてもよろしいですか?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "使用・設定する 1 つ以上のハードドライブを選択\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "既存の設定を変更すると、ディスクレイアウトがリセットされます!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "ハードドライブの選択をリセットすると、現在のディスクレイアウトもリセットされます。よろしいですか?" - -msgid "Save and exit" -msgstr "保存して終了" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"キューに入れられたパーティションが含まれています。削除しますがよろしいですか?" - -msgid "No audio server" -msgstr "オーディオサーバーなし" - -msgid "(default)" -msgstr "(デフォルト)" - -msgid "Use ESC to skip" -msgstr "Esc でスキップ" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"Ctrl+C で現在の選択をリセット\n" -"\n" - -msgid "Copy to: " -msgstr "コピー先: " - -msgid "Edit: " -msgstr "編集: " - -msgid "Key: " -msgstr "キー: " - -msgid "Edit {}: " -msgstr "編集 {}: " - -msgid "Add: " -msgstr "追加: " - -msgid "Value: " -msgstr "値: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "ドライブ選択とパーティション作成をスキップして、/mnt にマウントしているドライブのセットアップを使用できます(実験的)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "いずれかのディスクを選択するか、スキップして /mnt をデフォルトとして使用" - -msgid "Select which partitions to mark for formatting:" -msgstr "フォーマットするパーティションを選択:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "HSM を使用して暗号化されたドライブのロックを解除" - -msgid "Device" -msgstr "デバイス" - -msgid "Size" -msgstr "サイズ" - -msgid "Free space" -msgstr "空き容量" - -msgid "Bus-type" -msgstr "Bus タイプ" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "root パスワードか、1人以上の sudo 権限を持つユーザーを指定する必要があります" - -msgid "Enter username (leave blank to skip): " -msgstr "ユーザー名を入力(無記入でスキップ): " - -msgid "The username you entered is invalid. Try again" -msgstr "入力したユーザー名は無効です。もう1度やり直してください" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "\"{}\" はスーパーユーザーに昇格しますか(sudo)?" - -msgid "Select which partitions to encrypt" -msgstr "暗号化するパーティションを選択" - -msgid "very weak" -msgstr "非常に弱い" - -msgid "weak" -msgstr "弱い" - -msgid "moderate" -msgstr "中程度" - -msgid "strong" -msgstr "強い" - -msgid "Add subvolume" -msgstr "サブボリュームを追加" - -msgid "Edit subvolume" -msgstr "サブボリュームを編集" - -msgid "Delete subvolume" -msgstr "サブボリュームを削除" - -msgid "Configured {} interfaces" -msgstr "設定した {} インターフェース" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "このオプションは、インストール中に実行できる並列ダウンロードの数を有効にします" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"有効にする並列ダウンロードの数を入力してください。\n" -" (1 から {} の値を入力)\n" -"注意:" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - 最大値 : {} ({} 個の並列ダウンロードを許可して、1度に {} 個のダウンロードを許可する)" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - 最小値 : 1 (1 個の並列ダウンロードを許可して、1度に 2 個のダウンロードを許可する)" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - 無効/デフォルト : 0 (並列ダウンロードを無効にして、1度に 1 個のみダウンロードを許可する)" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "無効な入力です!有効な入力を使用して再試行してください [1 - {max_downloads}、0 で無効]" - -msgid "Parallel Downloads" -msgstr "並行ダウンロード" - -msgid "ESC to skip" -msgstr "Esc でスキップ" - -msgid "CTRL+C to reset" -msgstr "Ctrl+C でリセット" - -msgid "TAB to select" -msgstr "Tab で選択" - -msgid "[Default value: 0] > " -msgstr "[デフォルト値: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "この翻訳を使用できるようにするには、その言語をサポートするフォントを手動でインストールしてください。" - -msgid "The font should be stored as {}" -msgstr "フォントは {} として保存する必要があります" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "Archinstall を実行するには root 権限が必要です。詳細については --help を参照してください。" - -msgid "Select an execution mode" -msgstr "実行モードを選択" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "指定された URL からプロファイルを取得できません: {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "プロファイルには一意の名前が必要ですが、重複した名前のプロファイル定義が見つかりました: {}" - -msgid "Select one or more devices to use and configure" -msgstr "使用・設定する 1 つ以上のデバイスを選択" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "デバイスの選択をリセットすると、現在のディスクレイアウトもリセットされます。よろしいですか?" - -msgid "Existing Partitions" -msgstr "既存のパーティション" - -msgid "Select a partitioning option" -msgstr "パーティション作成のオプションを選択" - -msgid "Enter the root directory of the mounted devices: " -msgstr "マウントしているデバイスのルートディレクトリを入力: " - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "/home パーティションの最小容量: {}GiB\n" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "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 "これは事前にプログラムされたプロファイルのリストです。デスクトップ環境などのインストールが簡単になる可能性があります" - -msgid "Current profile selection" -msgstr "現在のプロファイルの選択" - -msgid "Remove all newly added partitions" -msgstr "新しく追加されたパーティションをすべて削除" - -msgid "Assign mountpoint" -msgstr "マウントポイントを割り当てる" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "フォーマット対象としてマーク/マーク解除(データを消去)" - -msgid "Mark/Unmark as bootable" -msgstr "ブータブルとしてマーク/マーク解除" - -msgid "Change filesystem" -msgstr "ファイルシステムを変更" - -msgid "Mark/Unmark as compressed" -msgstr "圧縮対象としてマーク/マーク解除" - -msgid "Set subvolumes" -msgstr "サブボリュームを設定" - -msgid "Delete partition" -msgstr "パーティションを削除" - -msgid "Partition" -msgstr "パーティション" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "このパーティションは現在暗号化されています。フォーマットするにはファイルシステムを指定してください" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "パーティションのマウントポイントはインストールにおける相対的なもので、例として boot は /boot になります。" - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "マウントポイントに /boot が設定された場合、パーティションはブータブルとしてマークされます。" - -msgid "Mountpoint: " -msgstr "マウントポイント: " - -msgid "Current free sectors on device {}:" -msgstr "デバイス {} の現在の空きセクター:" - -msgid "Total sectors: {}" -msgstr "総セクター数: {}" - -msgid "Enter the start sector (default: {}): " -msgstr "開始セクターを入力(デフォルト: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "パーティションの終了セクターを入力(パーセンテージかブロック番号。デフォルト: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "これは新しく追加されたパーティションをすべて削除します。続けますか?" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "パーティションを管理: {}" - -#, python-brace-format -msgid "Total length: {}" -msgstr "全体のサイズ: {}" - -msgid "Encryption type" -msgstr "暗号化のタイプ" - -msgid "Iteration time" -msgstr "反復時間" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "LUKS 暗号化のイテレーション時間(ミリ秒単位)を入力" - -msgid "Higher values increase security but slow down boot time" -msgstr "値を大きくするとセキュリティは向上しますが、起動時間が遅くなります" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "デフォルト: 10000ms, 推奨範囲: 1000-60000" - -msgid "Iteration time cannot be empty" -msgstr "イテレーション時間は空にできません" - -msgid "Iteration time must be at least 100ms" -msgstr "イテレーション時間は最低 100ms にしてください" - -msgid "Iteration time must be at most 120000ms" -msgstr "イテレーション時間は最大 120000ms にしてください" - -msgid "Please enter a valid number" -msgstr "有効な数字を入力してください" - -msgid "Partitions" -msgstr "パーティション" - -msgid "No HSM devices available" -msgstr "利用可能な HSM デバイスがありません" - -msgid "Partitions to be encrypted" -msgstr "暗号化するパーティション" - -msgid "Select disk encryption option" -msgstr "ディスクの暗号化オプションを選択" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "HSM に使用する FIDO2 デバイスを選択" - -msgid "Use a best-effort default partition layout" -msgstr "ベストエフォートのデフォルトパーティションレイアウトを使用" - -msgid "Manual Partitioning" -msgstr "手動でパーティションを作成" - -msgid "Pre-mounted configuration" -msgstr "現在のマウント設定" - -msgid "Unknown" -msgstr "不明" - -msgid "Partition encryption" -msgstr "パーティションの暗号化" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr " ! {} のフォーマットまで " - -msgid "← Back" -msgstr "← 戻る" - -msgid "Disk encryption" -msgstr "ディスクの暗号化" - -msgid "Configuration" -msgstr "設定" - -msgid "Password" -msgstr "パスワード" - -msgid "All settings will be reset, are you sure?" -msgstr "すべての設定がリセットされます。よろしいですか?" - -msgid "Back" -msgstr "戻る" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "選択したプロファイルにインストールするグリーターを選択: {}" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "環境のタイプ: {}" - -msgid "The proprietary Nvidia driver is not supported by Sway. It is likely that you will run into issues, are you okay with that?" -msgstr "プロプライエタリの Nvidia ドライバーは Sway ではサポートされていません。問題が発生する可能性がありますが、よろしいですか?" - -msgid "Installed packages" -msgstr "インストールするパッケージ" - -msgid "Add profile" -msgstr "プロファイルを追加" - -msgid "Edit profile" -msgstr "プロファイルを編集" - -msgid "Delete profile" -msgstr "プロファイルを削除" - -msgid "Profile name: " -msgstr "プロファイル名: " - -msgid "The profile name you entered is already in use. Try again" -msgstr "入力したプロファイル名はすでに使用されています。もう1度やり直してください" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "このプロファイルでインストールするパッケージ(スペースで区切る。無記入でスキップ): " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "このプロファイルで有効にするサービス(スペースで区切る。未記入でスキップ): " - -msgid "Should this profile be enabled for installation?" -msgstr "このプロファイルのインストールを有効にしますか?" - -msgid "Create your own" -msgstr "自分で作成" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"グラフィックドライバーを選択。無記入ですべてのオープンソースドライバーをインストール" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway はお使いの Seat(キーボード、マウスなどのハードウェアデバイス群)にアクセスする必要があります" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Sway にハードウェアへのアクセスを許可するオプションを選択" - -msgid "Graphics driver" -msgstr "グラフィックドライバー" - -msgid "Greeter" -msgstr "グリーター" - -msgid "Please chose which greeter to install" -msgstr "インストールするグリーターを選択" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "これは、事前にプログラムされた default_profile のリストです" - -msgid "Disk configuration" -msgstr "ディスクの設定" - -msgid "Profiles" -msgstr "プロファイル" - -msgid "Finding possible directories to save configuration files ..." -msgstr "設定ファイルを保存できるディレクトリを検索しています..." - -msgid "Select directory (or directories) for saving configuration files" -msgstr "設定ファイルを保存するディレクトリを選択" - -msgid "Add a custom mirror" -msgstr "カスタムミラーを追加" - -msgid "Change custom mirror" -msgstr "カスタムミラーを変更" - -msgid "Delete custom mirror" -msgstr "カスタムミラーを削除" - -msgid "Enter name (leave blank to skip): " -msgstr "名前を入力(無記入でスキップ): " - -msgid "Enter url (leave blank to skip): " -msgstr "URL を入力(未記入でスキップ): " - -msgid "Select signature check option" -msgstr "署名チェックのオプションを選択" - -msgid "Select signature option" -msgstr "署名オプションを選択" - -msgid "Custom mirrors" -msgstr "カスタムミラー" - -msgid "Defined" -msgstr "定義済み" - -msgid "Save user configuration (including disk layout)" -msgstr "ユーザー設定を保存(ディスクレイアウトを含む)" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"設定を保存するディレクトリを入力(Tab で補完可能)\n" -"保存ディレクトリ: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"{} 設定ファイルを次の場所に保存しますか?\n" -"\n" -"{}" - -msgid "Saving {} configuration files to {}" -msgstr "{} 設定ファイルを {} に保存" - -msgid "Mirrors" -msgstr "ミラー" - -msgid "Mirror regions" -msgstr "ミラーの地域" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - 最大値 : {}({} 個の並列ダウンロードを許可し、1度に {max_downloads+1} 個のダウンロードを許可する)" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "無効な入力です!有効な入力でやり直してください [1 から {}、または 0 で無効]" - -msgid "Locales" -msgstr "ロケール" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "NetworkManager を使用(GNOME と KDE でインターネットをグラフィカルに設定するのに必要)" - -msgid "Total: {} / {}" -msgstr "全体: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "入力したすべての値に、B、KB、KiB、MB、MiB などの単位を付けることができます。" - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "単位が指定されていない場合、値はセクターとして解釈されます" - -msgid "Enter start (default: sector {}): " -msgstr "開始値を入力(デフォルト: セクター {}): " - -msgid "Enter end (default: {}): " -msgstr "終了値を入力(デフォルト: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "fido2 デバイスを特定できません。lifido2 はインストールされていますか?" - -msgid "Path" -msgstr "パス" - -msgid "Manufacturer" -msgstr "メーカー" - -msgid "Product" -msgstr "製品" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "無効な設定: {error}" - -msgid "Type" -msgstr "タイプ" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "このオプションは、パッケージのダウンロード中に実行できる並列ダウンロードの数を設定します" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"並列ダウンロードの数を入力してください。\n" -"\n" -"注意:\n" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - 最大推奨値 : {} (1度に {} 個の並列ダウンロードを許可する)" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - 無効/デフォルト : 0 (並列ダウンロードを無効にして、1度に 1 個のダウンロードのみ許可する)\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "無効な入力です!有効な入力でやり直してください(無効にする場合は 0)" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Hyprland はお使いの Seat(キーボード、マウスなどのハードウェアデバイス群)にアクセスする必要があります" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Hyprland にハードウェアへのアクセスを許可するオプションを選択" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "入力したすべての値に、%、B、KB、KiB、MB、MiB などの単位を付けることができます。" - -msgid "Would you like to use unified kernel images?" -msgstr "Unified カーネルイメージを使用しますか?" - -msgid "Unified kernel images" -msgstr "Unified カーネルイメージ" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "時刻の同期(timedatectl show)が完了するのを待機しています。" - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "待機中に時刻同期が完了しません - 回避策についてはドキュメントを確認してください: https://archinstall.readthedocs.io/" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "自動での時刻同期の待機をスキップします(インストール中に時刻が同期していない場合は、問題が発生する可能性があります)" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "Arch Linux キーリングの同期(archlinux-keyring-wkd-sync)が完了するのを待っています。" - -msgid "Selected profiles: " -msgstr "選択したプロファイル: " - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "待機中に時刻同期が完了しません - 回避策についてはドキュメントを確認してください: https://archinstall.readthedocs.io/" - -msgid "Mark/Unmark as nodatacow" -msgstr "nodatacow としてマーク/マーク解除" - -msgid "Would you like to use compression or disable CoW?" -msgstr "圧縮を使用しますか、それとも CoW を無効にしますか?" - -msgid "Use compression" -msgstr "圧縮する" - -msgid "Disable Copy-on-Write" -msgstr "コピーオンライトを無効にする" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "デスクトップ環境とタイルウィンドウマネージャーの選択を提供します。例: GNOME, KDE Plasma, Sway" - -#, python-brace-format -msgid "Configuration type: {}" -msgstr "設定タイプ: {}" - -msgid "LVM configuration type" -msgstr "LVM の設定タイプ" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "パーティションが2個を超える場合の LVM ディスク暗号化は、現在サポートしていません" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "NetworkManager を使用する(GNOME と KDE Plasma でインターネットをグラフィカルに設定するのに必要)" - -msgid "Select a LVM option" -msgstr "LVM のオプションを選択" - -msgid "Partitioning" -msgstr "パーティションを作成" - -msgid "Logical Volume Management (LVM)" -msgstr "論理ボリューム管理(LVM)" - -msgid "Physical volumes" -msgstr "物理ボリューム" - -msgid "Volumes" -msgstr "ボリューム" - -msgid "LVM volumes" -msgstr "LVM ボリューム" - -msgid "LVM volumes to be encrypted" -msgstr "暗号化する LVM ボリューム" - -msgid "Select which LVM volumes to encrypt" -msgstr "暗号化する LVM ボリュームを選択" - -msgid "Default layout" -msgstr "デフォルトのレイアウト" - -msgid "No Encryption" -msgstr "暗号化なし" - -msgid "LUKS" -msgstr "LUKS" - -msgid "LVM on LUKS" -msgstr "LUKS 上の LVM" - -msgid "LUKS on LVM" -msgstr "LVM 上の LUKS" - -msgid "Yes" -msgstr "Yes" - -msgid "No" -msgstr "No" - -msgid "Archinstall help" -msgstr "Archinstall ヘルプ" - -msgid " (default)" -msgstr " (デフォルト)" - -msgid "Press Ctrl+h for help" -msgstr "Ctrl+H でヘルプを表示" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "Sway にハードウェアへのアクセスを許可するオプションを選択" - -msgid "Seat access" -msgstr "Seat アクセス" - -msgid "Mountpoint" -msgstr "マウントポイント" - -msgid "HSM" -msgstr "HSM" - -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "ディスクの暗号化パスワードを入力(暗号化しない場合は無記入)" - -msgid "Disk encryption password" -msgstr "ディスク暗号化パスワード" - -msgid "Partition - New" -msgstr "パーティション - 新規" - -msgid "Filesystem" -msgstr "ファイルシステム" - -msgid "Invalid size" -msgstr "無効なサイズ" - -msgid "Start (default: sector {}): " -msgstr "開始値(デフォルト: セクター {}): " - -msgid "End (default: {}): " -msgstr "終了値(デフォルト: {}): " - -msgid "Subvolume name" -msgstr "サブボリューム名" - -msgid "Disk configuration type" -msgstr "ディスク設定のタイプ" - -msgid "Root mount directory" -msgstr "ルートマウントディレクトリ" - -msgid "Select language" -msgstr "言語を選択" - -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "追加でインストールするパッケージを書く(スペースで区切る。無記入でスキップ)" - -msgid "Invalid download number" -msgstr "ダウンロード数が無効です" - -msgid "Number downloads" -msgstr "ダウンロード数" - -msgid "The username you entered is invalid" -msgstr "入力したユーザー名は無効です" - -msgid "Username" -msgstr "ユーザー名" - -#, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "\"{}\" はスーパーユーザーに昇格しますか(sudo)?\n" - -msgid "Interfaces" -msgstr "インターフェイス" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "IP設定モードで有効なIPを入力する必要があります" - -msgid "Modes" -msgstr "モード" - -msgid "IP address" -msgstr "IPアドレス" - -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "ゲートウェイ(ルーター)の IP アドレスを入力。無い場合は無記入" - -msgid "Gateway address" -msgstr "ゲートウェイアドレス" - -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "DNS サーバーをスペースで区切って入力(無い場合は無記入)" - -msgid "DNS servers" -msgstr "DNSサーバー" - -msgid "Configure interfaces" -msgstr "インターフェースを設定" - -msgid "Kernel" -msgstr "カーネル" - -msgid "UEFI is not detected and some options are disabled" -msgstr "UEFIが検出されず、一部のオプションが無効になります" - -msgid "Info" -msgstr "情報" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "プロプライエタリの Nvidia ドライバーは Sway ではサポートされていません。" - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "問題が発生する可能性が高いですが、よろしいですか?" - -msgid "Main profile" -msgstr "メインプロファイル" - -msgid "Confirm password" -msgstr "パスワードを確認" - -msgid "The confirmation password did not match, please try again" -msgstr "確認のパスワードが一致しませんでした。もう一度試してください" - -msgid "Not a valid directory" -msgstr "有効なディレクトリではありません" - -msgid "Would you like to continue?" -msgstr "続行しますか?" - -msgid "Directory" -msgstr "ディレクトリ" - -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "設定を保存するディレクトリを入力(Tab で補完可能)" - -#, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "設定ファイルを次の場所に保存しますか? {}" - -msgid "Enabled" -msgstr "有効" - -msgid "Disabled" -msgstr "無効" - -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "この問題(およびファイル)を https://github.com/archlinux/archinstall/issues に送信してください" - -msgid "Mirror name" -msgstr "ミラーの名前" - -msgid "Url" -msgstr "URL" - -msgid "Select signature check" -msgstr "署名チェックを選択" - -msgid "Select execution mode" -msgstr "実行モードを選択" - -msgid "Press ? for help" -msgstr "? を押すとヘルプを表示" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "Hyprland にハードウェアへのアクセスを許可するオプションを選択" - -msgid "Additional repositories" -msgstr "追加のリポジトリ" - -msgid "NTP" -msgstr "NTP" - -msgid "Swap on zram" -msgstr "zram のスワップ" - -msgid "Name" -msgstr "名前" - -msgid "Signature check" -msgstr "署名チェック" - -#, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "デバイス {} の選択された空きスペースセグメント:" - -#, python-brace-format -msgid "Size: {} / {}" -msgstr "サイズ: {} / {}" - -#, python-brace-format -msgid "Size (default: {}): " -msgstr "サイズ (デフォルト: {}): " - -msgid "HSM device" -msgstr "HSM デバイス" - -msgid "Some packages could not be found in the repository" -msgstr "リポジトリ内にいくつかのパッケージが見つかりませんでした" - -msgid "User" -msgstr "ユーザー" - -msgid "The specified configuration will be applied" -msgstr "指定された設定が適用されます" - -msgid "Wipe" -msgstr "ワイプ" - -msgid "Mark/Unmark as XBOOTLDR" -msgstr "XBOOTLDR としてマーク/マーク解除" - -msgid "Loading packages..." -msgstr "パッケージを読み込んでいます..." - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "追加でインストールする必要があるパッケージをリストから選択してください" - -msgid "Add a custom repository" -msgstr "カスタムリポジトリを追加" - -msgid "Change custom repository" -msgstr "カスタムリポジトリを変更" - -msgid "Delete custom repository" -msgstr "カスタムリポジトリを削除" - -msgid "Repository name" -msgstr "リポジトリの名前" - -msgid "Add a custom server" -msgstr "カスタムサーバーを追加" - -msgid "Change custom server" -msgstr "カスタムサーバーを変更" - -msgid "Delete custom server" -msgstr "カスタムサーバーを削除" - -msgid "Server url" -msgstr "サーバー URL" - -msgid "Select regions" -msgstr "地域を選択" - -msgid "Add custom servers" -msgstr "カスタムサーバーを追加" - -msgid "Add custom repository" -msgstr "カスタムリポジトリを追加" - -msgid "Loading mirror regions..." -msgstr "ミラーの地域を読み込んでいます..." - -msgid "Mirrors and repositories" -msgstr "ミラーとリポジトリ" - -msgid "Selected mirror regions" -msgstr "選択されたミラーの地域" - -msgid "Custom servers" -msgstr "カスタムサーバー" - -msgid "Custom repositories" -msgstr "カスタムリポジトリ" - -msgid "Only ASCII characters are supported" -msgstr "ASCII 文字のみサポートされます" - -msgid "Show help" -msgstr "ヘルプを表示" - -msgid "Exit help" -msgstr "ヘルプを終了" - -msgid "Preview scroll up" -msgstr "プレビューを上にスクロール" - -msgid "Preview scroll down" -msgstr "プレビューを下にスクロール" - -msgid "Move up" -msgstr "上に移動" - -msgid "Move down" -msgstr "下に移動" - -msgid "Move right" -msgstr "右に移動" - -msgid "Move left" -msgstr "左に移動" - -msgid "Jump to entry" -msgstr "エントリーへジャンプ" - -msgid "Skip selection (if available)" -msgstr "選択をスキップ(利用可能な場合)" - -msgid "Reset selection (if available)" -msgstr "選択をリセット(利用可能な場合)" - -msgid "Select on single select" -msgstr "単一で選択" - -msgid "Select on multi select" -msgstr "複数で選択" - -msgid "Reset" -msgstr "リセット" - -msgid "Skip selection menu" -msgstr "選択メニューをスキップ" - -msgid "Start search mode" -msgstr "検索モードを開始" - -msgid "Exit search mode" -msgstr "検索モードを終了" - -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "labwc はお使いの Seat(キーボード、マウスなどのハードウェアデバイス群)にアクセスする必要があります" - -msgid "Choose an option to give labwc access to your hardware" -msgstr "labwc にハードウェアへのアクセスを許可するオプションを選択" - -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "niri はお使いの Seat(キーボード、マウスなどのハードウェアデバイス群)にアクセスする必要があります" - -msgid "Choose an option to give niri access to your hardware" -msgstr "niri にハードウェアへのアクセスを許可するオプションを選択" - -msgid "Mark/Unmark as ESP" -msgstr "ESP としてマーク/マーク解除" - -msgid "Package group:" -msgstr "パッケージグループ:" - -msgid "Exit archinstall" -msgstr "archinstall を終了" - -msgid "Reboot system" -msgstr "システムを再起動" - -msgid "chroot into installation for post-installation configurations" -msgstr "インストール後の設定を行うためインストールディレクトリに chroot する" - -msgid "Installation completed" -msgstr "インストール完了" - -msgid "What would you like to do next?" -msgstr "次は何をしますか?" - -#, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "「{}」に設定するモードを選択" - -msgid "Incorrect credentials file decryption password" -msgstr "認証情報ファイルの復号化パスワードが正しくありません" - -msgid "Incorrect password" -msgstr "パスワードが間違っています" - -msgid "Credentials file decryption password" -msgstr "認証情報ファイルの復号化パスワード" - -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "user_credentials.json ファイルを暗号化しますか?" - -msgid "Credentials file encryption password" -msgstr "認証情報ファイルの暗号化パスワード" - -#, python-brace-format -msgid "Repositories: {}" -msgstr "リポジトリ: {}" - -msgid "New version available" -msgstr "新しいバージョンが利用可能" - -msgid "Passwordless login" -msgstr "パスワードなしのログイン" - -msgid "Second factor login" -msgstr "2要素ログイン" - -msgid "Bluetooth" -msgstr "Bluetooth" - -msgid "Would you like to configure Bluetooth?" -msgstr "Bluetooth を設定しますか?" - -msgid "Authentication" -msgstr "認証" - -msgid "Applications" -msgstr "アプリケーション" - -msgid "U2F login method: " -msgstr "U2F ログインメソッド: " - -msgid "Passwordless sudo: " -msgstr "パスワードなしの sudo: " - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "Btrfs スナップショットのタイプ: {}" - -msgid "Syncing the system..." -msgstr "システムを同期..." - -msgid "Value cannot be empty" -msgstr "値は空にできません" - -msgid "Snapshot type" -msgstr "スナップショットのタイプ" - -#, python-brace-format -msgid "Snapshot type: {}" -msgstr "スナップショットのタイプ: {}" - -msgid "U2F login setup" -msgstr "U2F ログインの設定" - -msgid "No U2F devices found" -msgstr "U2F デバイスが見つかりません" - -msgid "U2F Login Method" -msgstr "U2F ログインメソッド" - -msgid "Enable passwordless sudo?" -msgstr "パスワードなしの sudo を有効にしますか?" - -#, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "ユーザー用 U2F デバイスの設定: {}" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "PIN を入力したのち U2F デバイスをタッチして登録しなければならない場合があります" - -msgid "Starting device modifications in " -msgstr "" - -#, fuzzy -msgid "No network connection found" -msgstr "ネットワーク設定なし" - -#, fuzzy -msgid "Would you like to connect to a Wifi?" -msgstr "続行しますか?" - -#, fuzzy -msgid "No wifi interface found" -msgstr "インターフェースを設定" - -#, fuzzy -msgid "Select wifi network to connect to" -msgstr "設定するネットワークインターフェイスを 1 つ選択" - -msgid "Scanning wifi networks..." -msgstr "" - -#, fuzzy -msgid "No wifi networks found" -msgstr "ネットワーク設定なし" - -msgid "Failed setting up wifi" -msgstr "" - -#, fuzzy -msgid "Enter wifi password" -msgstr "パスワードを入力: " - -msgid "Ok" -msgstr "" diff --git a/examples/archinstall/archinstall/locales/ka/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/ka/LC_MESSAGES/base.mo deleted file mode 100644 index 1edea66..0000000 Binary files a/examples/archinstall/archinstall/locales/ka/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/ka/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/ka/LC_MESSAGES/base.po deleted file mode 100644 index d8d065a..0000000 --- a/examples/archinstall/archinstall/locales/ka/LC_MESSAGES/base.po +++ /dev/null @@ -1,1911 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: archinstall\n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Temuri Doghonadze \n" -"Language-Team: Georgian <(nothing)>\n" -"Language: ka\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.3.2\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] ჟურნალის ფაილი შეიქმნა აქ: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " ეს პრობლემა და ფაილი გადმოგვიგზავნეთ ბმულზე https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "გნებავთ, გააუქმოთ?" - -msgid "And one more time for verification: " -msgstr "და კიდევ ერთხელ, გადასამოწმებლად: " - -msgid "Would you like to use swap on zram?" -msgstr "გნებავთ სვოპის ZRAM-ზე გამოყენება?" - -msgid "Desired hostname for the installation: " -msgstr "ჰოსტის სასურველი სახელი, დაყენებისთვის: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "Sudo პრივილეგიების მქონე ზემომხმარებლის მომხმარებლის სახელი: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "დამატებითი მომხმარებლები დასაყენებლად (მომხმარებლების გარეშე გასაგრძელებლად ცარიელი დატოვეთ): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "უნდა იყოს ეს მომხმარებელი ზემომხმარებელი (sudoer)?" - -msgid "Select a timezone" -msgstr "აირჩიეთ დროის სარტყელი" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "გნებავთ ჩამტვირთავად system-boot-ის მაგიერ GRUB-ი გამოიყენოთ?" - -msgid "Choose a bootloader" -msgstr "აირჩიეთ ჩამტვირთავი" - -msgid "Choose an audio server" -msgstr "აირჩიეთ აუდიოსერვერი" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "მოხდება მხოლოდ ისეთი პაკეტების დაყენება, როგორებიცაა base, base-devel, linux, linux-firmware, efibootmgr და არასავალდებულო პროფილის პაკეტი." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "თუ გნებავთ ბრაუზერის, როგორებიცაა firefox ან chromium, ქონა, შემდეგი რამ უნდა მიუთითოთ." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "დამატებითი პაკეტები დასაყენებლად (გამოტოვებით გამოყოფილი, გამოსატოვებლად ცარიელი დატოვეთ): " - -msgid "Copy ISO network configuration to installation" -msgstr "ISO-ის ქსელის კონფიგურაციის კოპირება დაყენების დროს" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "NetworkManager-ის გამოყენება (აუცილებელია ინტერნეტის GNOME/KDE-დან მოსარგებად)" - -msgid "Select one network interface to configure" -msgstr "მოსარგებად ერთ-ერთი ქსელის ინტერფეისი აირჩიეთ" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "აირჩიეთ მოსარგები რეჟიმი \"{}\"-სთვის ან გამოტოვეთ ნაგულისხმევი რეჟიმის \"{}\" გამოსაყენებლად" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "შეიყვანეთ IP მისამართი და ქვექსელი {}-სთვის (მაგ: 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "აირჩიეთ ნაგულისხმევი რაუტერის IP მისამართი, ან ცარიელი დატოვეთ: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "შეიყვანეთ თქვენი DNS სერვერების მისამართები (გამოყოფილი ცარიელი ადგილით. ცარიელი, თუ არ გნებავთ, გამოიყენოთ): " - -msgid "Select which filesystem your main partition should use" -msgstr "რომელ ფაილურ სისტემას გამოიყენებს თქვენი მთავარი დანაყოფი" - -msgid "Current partition layout" -msgstr "მიმდინარე დანაყოფების განლაგება" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"აირჩიეთ, რა მოუვა\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "შეიყვანეთ დანაყოფის სასურველი ფაილური სისტემის ტიპი" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "აირჩიეთ დაწყების მდებარეობა (parted-ის ერთეულებში: s, GB, % და ა.შ. ; ნაგულისხმევი: {}): " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "აირჩიეთ დასრულების მდებარეობა (parted-ის ერთეულებში: s, GB, % და ა.შ. ; მაგ: {}): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} რიგში ჩაყენებულ დანაყოფებს შეიცავს. ეს წაშლის მათ. დარწმუნებული ბრძანდებით?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"წასაშლელი დანაყოფების ინდექსით არჩევა" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"ინდექსით არჩევა, რომელი დანაყოფი სად იქნება მიმაგრებული" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * დანაყოფის მიმაგრების წერტილები შედარებითია დაყენების შიგნით. ჩატვირთვა, მაგალითად, /boot შეიძლება, იყოს." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "აირჩიეთ, სად გნებავთ მიამაგროთ დანაყოფი (მიმაგრების წერტილის წასაშლელად დატოვეთ ის ცარიელი): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"აირჩიეთ, რომელი დანაყოფი იქნება მონიშნული ფორმატირებისთვის" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"აირჩიეთ, რომელი დანაყოფი მოინიშნება, როგორც დაშიფრული" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"აირჩიეთ, რომელი დანაყოფი მოინიშნება, როგორც ჩატვირთვადი" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"აირჩიეთ, ფაილური სისტემა რომელ დანაყოფზე დავაყენო" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "შეიყვანეთ დანაყოფის სასურველი ფაილური სისტემის ტიპი: " - -msgid "Archinstall language" -msgstr "Archinstall-ის ენა" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "მონიშნულ დისკებზე ყველაფრის წაშლა და დანაყოფების განლაგების საუკეთესო განლაგების გამოყენება" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "აირჩიეთ, რა ვუყო ინდივიდუალურ დისკს (დანაყოფების გამოყენების შემდეგ)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "აირჩიეთ, მონიშნულ ბლოკურ მოწყობილობებს რა გნებავთ, უქნათ" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "ეს წინასწარ მითითებული პროფილების სიაა. მათი დახმარებით ისეთი რამების, როგორიცაა სამუშაო მაგიდის გარემოები, დაყენება უფრო ადვილია" - -msgid "Select keyboard layout" -msgstr "აირჩიეთ კლავიატურის განლაგება" - -msgid "Select one of the regions to download packages from" -msgstr "აირჩიეთ რეგიონი პაკეტების გადმოსაწერად" - -msgid "Select one or more hard drives to use and configure" -msgstr "აირჩიეთ ერთი ან მეტი მყარი დისკი და მოირგეთ" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "თქვენს AMD-ის აპარატურასთან საუკეთესო თავსებადობისთვის შეგიძლიათ როგორც სრულად ღია კოდის მქონე, ისე AMD/ATI-ის ვარიანტები გამოიყენოთ." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "Intel-ის აპარატურასთან საუკეთესო თავსებადობისთვის შეგიძლიათ მათი სრულად ღია კოდის მქონე ვარიანტი გამოიყენოთ.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Nvidia-ის თქვენს აპარატურასთან საუკეთესო თავსებადობისთვის შეიძლება Nvidia-ის დახურული კოდის მქონე დრაივერის დაყენება გნებავდეთ.\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"აირჩიეთ გრაფიკის დრაივერი ან, ღია კოდის მქონე დრაივერის დასაყენებლად, ცარიელი დატოვეთ" - -msgid "All open-source (default)" -msgstr "ყველა ღია კოდით (ნაგულისხმევი)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "აირჩიეთ, რომელი ბირთვი გნებავთ, გამოიყენოთ. ან ნაგულისხმევისთვის (\"{}\") ცარიელი დატოვეთ" - -msgid "Choose which locale language to use" -msgstr "აირჩიეთ, რომელი ლოკალის ენა გნებავთ, გამოიყენოთ" - -msgid "Choose which locale encoding to use" -msgstr "აირჩიეთ, რომელი ლოკალის კოდირება გნებავთ, გამოიყენოთ" - -msgid "Select one of the values shown below: " -msgstr "აირჩიეთ ერთ-ერთი ქვემოთ მოყვანილი მნიშვნელობებიდან: " - -msgid "Select one or more of the options below: " -msgstr "აირჩეთ ერთი ან მეტი პარამეტრი ქვემოდან: " - -msgid "Adding partition...." -msgstr "დანაყოფის დამატება..." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "გასაგრძელებლად აუცილებელია სწორი fs-type შეიყვანოთ. ხელმისაწვდომი სიის სანახავად იხილეთ 'man parted'." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "შეცდომა: URL-ზე \"{}\" პროფილების ჩამოთვლის შედეგია:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "შეცდომა: \"{}\" შედეგის JSON-ის სახით გაშიფვრა შეუძლებელია:" - -msgid "Keyboard layout" -msgstr "კლავიატურის განლაგება" - -msgid "Mirror region" -msgstr "სარკის რეგიონი" - -msgid "Locale language" -msgstr "ლოკალის ენა" - -msgid "Locale encoding" -msgstr "ლოკალის კოდირება" - -msgid "Drive(s)" -msgstr "დისკები" - -msgid "Disk layout" -msgstr "დისკის განლაგება" - -msgid "Encryption password" -msgstr "დაშიფვრის პაროლი" - -msgid "Swap" -msgstr "სვოპი" - -msgid "Bootloader" -msgstr "ჩამტვირთავი" - -msgid "Root password" -msgstr "Root-ის პაროლი" - -msgid "Superuser account" -msgstr "ზემომხმარებლის ანგარიში" - -msgid "User account" -msgstr "მომხმარებლის ანგარიში" - -msgid "Profile" -msgstr "პროფილი" - -msgid "Audio" -msgstr "აუდიო" - -msgid "Kernels" -msgstr "ბირთვები" - -msgid "Additional packages" -msgstr "დამატებითი პაკეტები" - -msgid "Network configuration" -msgstr "ქსელის მორგება" - -msgid "Automatic time sync (NTP)" -msgstr "დროის ავტომატური სინქრონიზაცია (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "დაყენება (აკლია {} კონფიგურაცია)" - -msgid "" -"You decided to skip harddrive selection\n" -"and will use whatever drive-setup is mounted at {} (experimental)\n" -"WARNING: Archinstall won't check the suitability of this setup\n" -"Do you wish to continue?" -msgstr "" -"გადაწყვიტეთ, გამოტოვოთ მყარი დისკის არჩევანი\n" -"და გამოიყენოთ ის, რაც {}-ზეა მიმაგრებული (ექსპერიმენტალური)\n" -"გაფრთხილება: Archinstall-ს ამ მორგების სტაბილურობის გადამოწმება არ შეუძლია.\n" -"გნებავთ, გააგრძელოთ?" - -msgid "Re-using partition instance: {}" -msgstr "დანაყოფის ასლის თავიდან გამოყენება: {}" - -msgid "Create a new partition" -msgstr "ახალი დანაყოფის შექმნა" - -msgid "Delete a partition" -msgstr "დანაყოფის წაშლა" - -msgid "Clear/Delete all partitions" -msgstr "დანაყოფების გასუფთავება/წაშლა" - -msgid "Assign mount-point for a partition" -msgstr "დანაყოფის მიმაგრების წერტილის მინიჭება" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "დანაყოფის დასაფორმატებლობის ჭდის მოხსნა/დადება (მონაცემები წაიშლება)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "დანაყოფის დაშიფრულობის ჭდის დადება/მოხსნა" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "დანაყოფის ჩატვირთვადობის ჭდის მოხსნა/დადება (ავტომატურია /boot-სთვის)" - -msgid "Set desired filesystem for a partition" -msgstr "აირჩიეთ დანაყოფის სასურველი ფაილური სისტემა" - -msgid "Abort" -msgstr "გაუქმება" - -msgid "Hostname" -msgstr "ჰოსტის სახელი" - -msgid "Not configured, unavailable unless setup manually" -msgstr "მორგებული არაა. მიუწვდომელია, სანამ ხელით არ მოირგებთ" - -msgid "Timezone" -msgstr "დროის სარტყელი" - -msgid "Set/Modify the below options" -msgstr "დააყენეთ/შეცვალეთ ქვედა პარამეტრები" - -msgid "Install" -msgstr "დაყენება" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"გამოსატოვებლად გამოიყენეთ ღილაკი Esc\n" -"\n" - -msgid "Suggest partition layout" -msgstr "დანაყოფების განლაგების მინიშნება" - -msgid "Enter a password: " -msgstr "შეიყვანეთ პაროლი: " - -msgid "Enter a encryption password for {}" -msgstr "შეიყვანეთ {}-ის დაშიფვრის პაროლი" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "შეიყვანეთ დისკის დაშიფვრის პაროლი (დაშიფვრის გასათიშად დატოვეთ ცარიელი): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "Sudo-ის პრივილეგიების სმქონე აუცილებელი ზემომხმარებლის: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "შეიყვანეთ root-ის პაროლი (თუ გნებავთ, გათიშოთ root, ცარიელი დატოვეთ): " - -msgid "Password for user \"{}\": " -msgstr "პაროლი მომხმარებლისთვის \"{}\": " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "დამატებითი პაკეტების არსებობის შემოწმება (ამას რამდენიმე წამი შეიძლება დასჭირდეს)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "გნებავთ დროის ავტომატური სინქრონიზაციის (NTP) ნაგულისხმევი დროის სერვერებით გამოყენება?\n" - -msgid "" -"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" -"For more information, please check the Arch wiki" -msgstr "" -"NTP-ის ასამუშავებლად აპარატურული დრო და სხვა დაყენების-შემდგომი ნაბიჯები დაგჭირდებათ.\n" -"მეტი ინფორმაციისთვის იხილეთ Arch-ის დოკუმენტაცია" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "დამატებითი მომხმარებლის შესაქმნელად შეიყვანეთ მისი სახელი (გამოსატოვებლად ცარიელი დატოვეთ): " - -msgid "Use ESC to skip\n" -msgstr "გამოსატოვებლად გამოიყენეთ ღილაკი Esc\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -" შესასრულებლად აირჩიეთ ობიექტი სიიდან და აირჩიეთ მისთვის ხელმისაწვდომი ქმედება" - -msgid "Cancel" -msgstr "შეწყვეტა" - -msgid "Confirm and exit" -msgstr "დადასტურება და გასვლა" - -msgid "Add" -msgstr "დამატება" - -msgid "Copy" -msgstr "კოპირება" - -msgid "Edit" -msgstr "ჩასწორება" - -msgid "Delete" -msgstr "წაშლა" - -msgid "Select an action for '{}'" -msgstr "აირჩიეთ ქმედება '{}'-სთვის" - -msgid "Copy to new key:" -msgstr "ახალ გასაღებში კოპირება:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "NIC-ის უცნობი ტიპი: {}. შესაძლო მნიშვნელობებია {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"ეს თქვენი არჩეული კონფიგურაციაა:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Pacman- უკვე გაშვებულია. მოკვლამდე 10 წუთი დაველოდები." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "წინასწარ packman-ის ბლოკი არასდროს არსებობდა. Archinstall-ის დაყენებამდე აუცილებელია pacman-ს სესიების მოსუფთავება აუცილებელია." - -msgid "Choose which optional additional repositories to enable" -msgstr "აირჩიეთ, რომელი არასავალდებულო დამატებითი რეპოზიტორია გნებავთ, ჩართოთ" - -msgid "Add a user" -msgstr "მომხმარებლის დამატება" - -msgid "Change password" -msgstr "პაროლის შეცვლა" - -msgid "Promote/Demote user" -msgstr "მომხმარებლის დაწინაურება/ჩამოქვეითება" - -msgid "Delete User" -msgstr "მომხმარებლის წაშლა" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"აღწერეთ ახალი მომხმარებელი\n" - -msgid "User Name : " -msgstr "მომხმარებლის სახელი : " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "იყოს {} ზემომხმარებელი (sudoer)?" - -msgid "Define users with sudo privilege: " -msgstr "აღწერეთ sudo პრივილეგიის მქონე მომხმარებლები: " - -msgid "No network configuration" -msgstr "ქსელის მორგების გარეშე" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "დააყენეთ Btrfs დანაყოფის სასურველი ქვეტომები" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"აირჩიეთ, რომელ დანაყოფზე აპირებთ ქვეტომების დაყენებას" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "Btrfs-ის ქვეტომების მართვა მიმდინარე დანაყოფისთვის" - -msgid "No configuration" -msgstr "მორგების გარეშე" - -msgid "Save user configuration" -msgstr "მომხმარებლის კონფიგურაციის შენახვა" - -msgid "Save user credentials" -msgstr "მომხმარებლის ავტორიზაციის დეტალების შენახვა" - -msgid "Save disk layout" -msgstr "დისკის განლაგების შენახვა" - -msgid "Save all" -msgstr "ყველაფრის შენახვა" - -msgid "Choose which configuration to save" -msgstr "აირჩიეთ, რომელი კონფიგურაცია შევინახო" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "შეიყვანეთ საქაღალდე, სადაც კონფიგურაცი(ებ)-ი იქნება შენახული: " - -msgid "Not a valid directory: {}" -msgstr "არასწორი საქაღალდე: {}" - -msgid "The password you are using seems to be weak," -msgstr "პაროლი, რომელიც შეიყვანეთ, სუსტია," - -msgid "are you sure you want to use it?" -msgstr "დარწმუნებული ბრძანდებით, რომ გნებავთ, გამოიყენოთ ის?" - -msgid "Optional repositories" -msgstr "არასავალდებულო რეპოზიტორიები" - -msgid "Save configuration" -msgstr "კონფიგურაციი შენახვა" - -msgid "Missing configurations:\n" -msgstr "ნაკლული კონფიგურაციები:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "შეიყვანეთ root-ის პაროლი ან მიუთითეთ 1 ზემომხმარებელი მაინც" - -msgid "Manage superuser accounts: " -msgstr "ზემომხმარებლის ანგარიშების მართვა: " - -msgid "Manage ordinary user accounts: " -msgstr "ჩვეულებრივი მომხმარებლის ანგარიშების მართვა: " - -msgid " Subvolume :{:16}" -msgstr " ქვეტომი :{:16}" - -msgid " mounted at {:16}" -msgstr " მიმაგრების წერტილი {:16}" - -msgid " with option {}" -msgstr " პარამეტრით {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -"შეავსეთ სასურველი მნიშვნელობები ახალი ქვეტომისთვის \n" - -msgid "Subvolume name " -msgstr "ქვეტომის სახელი " - -msgid "Subvolume mountpoint" -msgstr "ქვეტომის მიმაგრების წერტილი" - -msgid "Subvolume options" -msgstr "ქვეტომის მორგება" - -msgid "Save" -msgstr "შენახვა" - -msgid "Subvolume name :" -msgstr "ქვეტომის სახელი :" - -msgid "Select a mount point :" -msgstr "აირჩიეთ მიმაგრების წერტილი :" - -msgid "Select the desired subvolume options " -msgstr "აირჩიეთ სასურველი ქვეტომის პარამეტრები " - -msgid "Define users with sudo privilege, by username: " -msgstr "აღწერეთ sudo-ის პრივილეგიების მქონე მომხმარებლები, მათი სახელით: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] ჟურნალის ფაილის მდებარეობა: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "გნებავთ BTRFS-ის ქვეტომები ნაგულისხმევი სტრუქტურით გამოიყენოთ?" - -msgid "Would you like to use BTRFS compression?" -msgstr "გნებავთ BTRFS-ის შეკუმშვის გამოყენება?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "გნებავთ /home-სთვის ცალკე დანაყოფი შექმნათ?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "მონიშნულ დისკებზე ავტომატურად დასაყენებლად საკმარისი მინიმალური ადგილი აღმოჩენილი არაა\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "მინიმალური სივრცე დანაყოფისთვის /home: {}გბ\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "მინიმალური სივრცე ArchLinux-ის დანაყოფისთვის: {}გბ" - -msgid "Continue" -msgstr "გაგრძელება" - -msgid "yes" -msgstr "დიახ" - -msgid "no" -msgstr "არა" - -msgid "set: {}" -msgstr "დაყენება: {}" - -msgid "Manual configuration setting must be a list" -msgstr "მორგებული კონფიგურაციის პარამეტრი სია უნდა იყოს" - -msgid "No iface specified for manual configuration" -msgstr "მორგებული კონფიგურაციისთვის ინტერფეისი მითითებული არაა" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "NIC-ის DHCP-ის გარეშე მოსარგებად IP მისამართის მითითება აუცილებელია" - -msgid "Add interface" -msgstr "ინტერფეისის დამატება" - -msgid "Edit interface" -msgstr "ინტერფეისის ჩასწორება" - -msgid "Delete interface" -msgstr "ინტერფეისის წაშლა" - -msgid "Select interface to add" -msgstr "აირჩიეთ დასამატებელი ინტერფეისი" - -msgid "Manual configuration" -msgstr "ხელით მორგება" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "დანაყოფზე შეკუმშულობის ჭდის მოხსნა/დადება (მხოლოდ btrfs)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "როგორც ჩანს პაროლი, რომელსაც იყენებთ, სუსტია. დარწმუნებული ბრძანდებით, რომ გნებავთ, გამოიყენოთ ის?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "მოგაწვდით სამუშაო გარემოებისა და ფანჯრების მმართველების არჩევანს. მაგ: gnome, kde, sway" - -msgid "Select your desired desktop environment" -msgstr "აირჩიეთ სასურველი სამუშაო მაგიდის გარემო" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "მინიმალური დაყენება, რომელიც საშუალებას გაძლევთ, Arch Linux სურვილისამებრ მოირგოთ." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "სერვერის ისეთი პაკეტების დაყენება და ჩართვა, როგორიცაა httpd, nginx, mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "აირჩიეთ, რომელი სერვერების დაყენება გნებავთ. თუ არაფერს შეიყვანთ, მინიმალური დაყენება მოხდება" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "აყენებს მინიმალურ სისტემას, ასევე xorg-ს და გრაფიკის დრაივერებს." - -msgid "Press Enter to continue." -msgstr "გასაგრძელებლად დააჭირეთ Enter-ს." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "გნებავთ chroot ახალ დაყენებულ სისტემაში და დაყენების შემდეგი კონფიგურაციის გაშვება?" - -msgid "Are you sure you want to reset this setting?" -msgstr "დარწმუნებული ბრძანდებით, რომ გნებავთ, დააბრუნოთ ეს პარამეტრი?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "მოსარგებად და გამოსაყენებლად აირჩიეთ ერთი ან მეტი მყარი დისკი\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "არსებული პარამეტრის ნებისმიერი ცვლილება დისკის განლაგებას საწყის მნიშვნელობებზე დააბრუნებს!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "ეს მყარი დისკის არჩევანს და მიმდინარე დისკის განლაგებას საწყის მნიშვნელობებზე დააბრუნებს. დარწმუნებული ბრძანდებით?" - -msgid "Save and exit" -msgstr "შენახვა და გასვლა" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"რიგში ჩაყენებულ დანაყოფებს შეიცავს. ეს წაშლის მათ. დარწმუნებული ბრძანდებით?" - -msgid "No audio server" -msgstr "აუდიოსერვერის გრეშე" - -msgid "(default)" -msgstr "(ნაგულისხმევი)" - -msgid "Use ESC to skip" -msgstr "გამოსატოვებლად გამოიყენეთ ღილაკი Esc" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"მიმდინარე მონიშვნის დასაბრუნებლად დააწექით CTRL+C\n" -"\n" - -msgid "Copy to: " -msgstr "კოპირება: " - -msgid "Edit: " -msgstr "ჩასწორება: " - -msgid "Key: " -msgstr "გასაღები: " - -msgid "Edit {}: " -msgstr "ჩასწორება {}: " - -msgid "Add: " -msgstr "დამატება: " - -msgid "Value: " -msgstr "მნიშვნელობა: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "შეგიძლიათ დისკის არჩევანი და დაყოფა გამოტოვოთ და გამოიყენოთ სასურველი დისკი, რომელიც /mnt-ზეა მიმაგრებული (ექსპერიმენტალური)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "აირჩიეთ ერტი ან მეტი დისკი ან გამოტოვება და ნაგულისხმევი /mnt-ის გამოყენება" - -msgid "Select which partitions to mark for formatting:" -msgstr "აირჩიეთ, რომელი დანაყოფები მოვნიშნო დასაფორმატებლად:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "დაშიფრული დისკის გასახსნელად HSM-ის გამოყენება" - -msgid "Device" -msgstr "მოწყობილობა" - -msgid "Size" -msgstr "ზომა" - -msgid "Free space" -msgstr "თავისუფალი ადგილი" - -msgid "Bus-type" -msgstr "მატარებლის-ტიპი" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "Root-ის პაროლის ან მინიმუმ 1 sudo-ის პრივილეგიების მქონე მომხმარებლის მითითება აუცილებელია" - -msgid "Enter username (leave blank to skip): " -msgstr "შეიყვანეთ მომხმარებლი სახელი (გამოსატოვებლად ცარიელი დატოვეთ): " - -msgid "The username you entered is invalid. Try again" -msgstr "შეყვანილი მომხმარებლის სახელი არასწორია. კიდევ სცადეთ" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "იყოს \"{}\" ზემომხმარებელი(sudo)?" - -msgid "Select which partitions to encrypt" -msgstr "არჩიეთ დასაშიფრი დანაყოფები" - -msgid "very weak" -msgstr "ძალიან სუსტი" - -msgid "weak" -msgstr "სუსტი" - -msgid "moderate" -msgstr "საშუალო" - -msgid "strong" -msgstr "ძლიერი" - -msgid "Add subvolume" -msgstr "ქვეტომის დამატება" - -msgid "Edit subvolume" -msgstr "ქვეტომის ჩასწორება" - -msgid "Delete subvolume" -msgstr "ქვეტომის წაშლა" - -msgid "Configured {} interfaces" -msgstr "მორგებულია {} ინტერფეისი" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "ეს პარამეტრი დაყენებისას მითითებული რაოდენობის პარალელურ გადმოწერას დაუშვებს" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"შეიყვანეთ დასაშვები პარალელური გადმოწერების რაოდენობა.\n" -" (შეიყვანეთ მნიშვნელობა 1-დან {}-მდე)\n" -"დაიმახსოვრეთ:" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - მინიმალური მნიშვნელობა : {} ( დაუშვებს {} პარალელურ გადმოწერას, დაუშვებს {} ერთდროულ გადმოწერას )" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - მინიმალური მნიშვნელობა : 1 ( დაუშვებს 1 პარალელურ გადმოწერას, დაუშვებს 2 ერთდროულ გადმოწერას )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - გამორთვა/ნაგულისხმევი : 0 ( პარალელური გადმოწერების გათიშვა. დროის ერთ მომენტში მხოლოდ ერთი გადმოწერა მოხდება )" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "შეყვანილი რიცხვი არასწორია! თავიდან სცადეთ [1-დან {max_downloads}-მდე, ან 0, გასათიშად]" - -msgid "Parallel Downloads" -msgstr "პარალელური გადმოწერები" - -msgid "ESC to skip" -msgstr "გამოსატოვებლად ღილაკი Esc" - -msgid "CTRL+C to reset" -msgstr "დასაბრუნებლად CTRL+C" - -msgid "TAB to select" -msgstr "ასარჩევად TAB" - -msgid "[Default value: 0] > " -msgstr "[ნაგულისხმევი მნიშვნელობა: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "თარგმანის გამოსაყენებლად ფონტი, რომელსაც ენის მხარდაჭერა გააჩნია, ხელით უნდა დააყენოთ." - -msgid "The font should be stored as {}" -msgstr "ფონტი {}-ში უნდა იყოს შენახული" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "Archinstall-ს გასაშვებად root მომხმარებლის პრივილეგიები სჭირდება. მეტი ინფორმაციისთვის იხილეთ --help." - -msgid "Select an execution mode" -msgstr "აირჩიეთ შესრულების რეჟიმი" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "პროფილის მიღება შეუძლებელია მითითებული ბმულიდან: {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "პროფილებს უნიკალური სახელი უნდა ჰქონდეთ, მაგრამ აღმოჩენილია პროფილის აღწერები გამეორებადი სახელით: {}" - -msgid "Select one or more devices to use and configure" -msgstr "აირჩიეთ ერთი ან მეტი მოწყობილობა და მოირგეთ" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "ეს მყარი დისკის არჩევანს და მიმდინარე დისკის განლაგებას საწყის მნიშვნელობებზე დააბრუნებს. დარწმუნებული ბრძანდებით?" - -msgid "Existing Partitions" -msgstr "არსებული დანაყოფები" - -msgid "Select a partitioning option" -msgstr "აირჩიეთ დისკის დაყოფის პარამეტრი" - -msgid "Enter the root directory of the mounted devices: " -msgstr "შეიყვანეთ მიმაგრებული მოწყობილობების ძირითადი საქაღალდე: " - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "მინიმალური სივრცე დანაყოფისთვის /home: {}გიბ\n" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "მინიმალური სივრცე Arch Linux-ის დანაყოფისთვის: {}გიბ" - -msgid "This is a list of pre-programmed profiles_bck, they might make it easier to install things like desktop environments" -msgstr "ეს წინასწარ მითითებული profiles_bck-ის სიაა. მათი დახმარებით ისეთი რამების, როგორიცაა სამუშაო მაგიდის გარემოები, დაყენება უფრო ადვილია" - -msgid "Current profile selection" -msgstr "მიმდინარე პროფილის არჩევანი" - -msgid "Remove all newly added partitions" -msgstr "ყველა ახლად დამატებული დანაყოფის წაშლა" - -msgid "Assign mountpoint" -msgstr "მიმაგრების წერტილის მინიჭება" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "დასაფორმატებულობის ჭდის მოხსნა/დადება (მონაცემები წაიშლება)" - -msgid "Mark/Unmark as bootable" -msgstr "ჩატვირთვადი ალმის დაყენება/მოხსნა" - -msgid "Change filesystem" -msgstr "ფაილური სისტემის შეცვლა" - -msgid "Mark/Unmark as compressed" -msgstr "შეკუმშულად მონიშვნა/მონიშვნის მოხსნა" - -msgid "Set subvolumes" -msgstr "ქვეტომების დაყენება" - -msgid "Delete partition" -msgstr "დანაყოფის წაშლა" - -msgid "Partition" -msgstr "დანაყოფი" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "ეს დანაყოფი ამჟამად დაშიფრულია. დასაფორმატებლად აუცილებელია ფაილური სისტემის მითითება" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "დანაყოფის მიმაგრების წერტილები შედარებითია დაყენების შიგნით. ჩატვირთვა, მაგალითად, /boot შეიძლება, იყოს." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "თუ /boot მიმაგრების წერტილი დაყენებულია, ეს დანაყოფი ასევე მოინიშნება, როგორც ჩატვირთვადი." - -msgid "Mountpoint: " -msgstr "მიმაგრების წერტილი: " - -msgid "Current free sectors on device {}:" -msgstr "ამჟამად თავისუფალი სექტორები მოწყობილობაზე {}:" - -msgid "Total sectors: {}" -msgstr "სექტორები ჯამში: {}" - -msgid "Enter the start sector (default: {}): " -msgstr "შეიყვანეთ საწყისი სექტორი (ნაგულისხმევი: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "შეიყვანეთ დანაყოფის ბოლო სექტორი (პროცენტულად ან ბლოკის ნომერი. ნაგულისხმევი: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "ეს ყველა ახლად დამატებულ დანაყოფს წაშლის. გავაგრძელო?" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "დანაყოფების მართვა: {}" - -#, python-brace-format -msgid "Total length: {}" -msgstr "ჯამური სიგრძე: {}" - -msgid "Encryption type" -msgstr "დაშიფვრის ტიპი" - -msgid "Iteration time" -msgstr "" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "" - -msgid "Higher values increase security but slow down boot time" -msgstr "" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "" - -msgid "Iteration time cannot be empty" -msgstr "" - -msgid "Iteration time must be at least 100ms" -msgstr "" - -msgid "Iteration time must be at most 120000ms" -msgstr "" - -msgid "Please enter a valid number" -msgstr "" - -msgid "Partitions" -msgstr "დანაყოფები" - -msgid "No HSM devices available" -msgstr "HSM მოწყობილობები მიუწვდომელია" - -msgid "Partitions to be encrypted" -msgstr "დასაშიფრი დანაყოფები" - -msgid "Select disk encryption option" -msgstr "აირჩიეთ დისკის დაშიფვრის პარამეტრი" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "აირჩიეთ HSM-სთვის გამოსაყენებელი FIDO2 მოწყობილობა" - -msgid "Use a best-effort default partition layout" -msgstr "დანაყოფების განლაგების საუკეთესო განლაგების გამოყენება" - -msgid "Manual Partitioning" -msgstr "ხელით დაყოფა" - -msgid "Pre-mounted configuration" -msgstr "წინასწარ მიმაგრებული კონფიგურაცია" - -msgid "Unknown" -msgstr "უცნობი" - -msgid "Partition encryption" -msgstr "დანაყოფის დაშიფვრა" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr " ! {}-ის დაფორმატება ფორმატში " - -msgid "← Back" -msgstr "← უკან" - -msgid "Disk encryption" -msgstr "დისკის დაშიფვრა" - -msgid "Configuration" -msgstr "მორგება" - -msgid "Password" -msgstr "პაროლი" - -msgid "All settings will be reset, are you sure?" -msgstr "ყველა პარამეტრი დაბრუნდება. დარწმუნებული ბრძანდებით?" - -msgid "Back" -msgstr "უკან" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "აირჩიეთ, რომელი მისალმების ეკრანის დაყენება გნებავთ არჩეული პროფილებისთვის: {}" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "გარემოს ტიპი: {}" - -msgid "The proprietary Nvidia driver is not supported by Sway. It is likely that you will run into issues, are you okay with that?" -msgstr "Sway-ის დახურული კოდის მქონე Nvidia-ის დრაივერის მხარდაჭერა არ გააჩნია. როგორც ჩანს, შარში ყოფთ თავს. დარწმუნებული ბრძანდებით?" - -msgid "Installed packages" -msgstr "დაყენებული პაკეტები" - -msgid "Add profile" -msgstr "პროფილის დამატება" - -msgid "Edit profile" -msgstr "პროფილის ჩასწორება" - -msgid "Delete profile" -msgstr "პროფილის წაშლა" - -msgid "Profile name: " -msgstr "პროფილის სახელი: " - -msgid "The profile name you entered is already in use. Try again" -msgstr "შეყვანილი პროფილის სახელი უკვე გამოიყენება. კიდევ სცადეთ" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "ამ პროფილთან დასაყენებელი პაკეტები (ჰარეებით გამოყოფილი, გამოსატოვებლად ცარიელი დატოვეთ): " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "ამ პროფილთან ჩასართავი სერვისები (ჰარეებით გამოყოფილი, გამოსატოვებლად ცარიელი დატოვეთ): " - -msgid "Should this profile be enabled for installation?" -msgstr "უნდა ჩაირთოს თუ არა ეს პროფილი დაყენებისთვის?" - -msgid "Create your own" -msgstr "შექმენით საკუთარი" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"აირჩიეთ გრაფიკის დრაივერი ან, ღია კოდის მქონე დრაივერის დასაყენებლად, ცარიელი დატოვეთ" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway-ს თქვენს სამუშაო ადგილთან (აპარატურასთან, როგორიცაა კლავიატურა, თაგუნა და ა.შ>) წვდომა სჭირდება" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"აირჩიეთ ეს პარამეტრი, რომ Sway-ს თქვენს აპარატურასთან წვდომა მისცეთ" - -msgid "Graphics driver" -msgstr "გრაფიკის დრაივერი" - -msgid "Greeter" -msgstr "მისამების ეკრანი" - -msgid "Please chose which greeter to install" -msgstr "აირჩიეთ, რომელი მისალმების ეკრანის დაყენება გნებავთ" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "ეს წინასწარ დაპროგრამებული ნაგულისხმევი პროფილების სიაა" - -msgid "Disk configuration" -msgstr "დისკის მორგება" - -msgid "Profiles" -msgstr "პროფილები" - -msgid "Finding possible directories to save configuration files ..." -msgstr "მიმდინარეობს კონფიგურაციის ფაილების შესანახად შესაძლო საქაღალდეების ძებნა ..." - -msgid "Select directory (or directories) for saving configuration files" -msgstr "აირჩიეთ საქაღალდე (ან საქაღალდეები) კონფიგურაციის ფაილების შესანახად" - -msgid "Add a custom mirror" -msgstr "მორგებული სარკის დამატება" - -msgid "Change custom mirror" -msgstr "მორგებული სარკის შეცვლა" - -msgid "Delete custom mirror" -msgstr "მორგებული სარკის წაშლა" - -msgid "Enter name (leave blank to skip): " -msgstr "შეიყვანეთ სახელი (გამოსატოვებლად ცარიელი დატოვეთ): " - -msgid "Enter url (leave blank to skip): " -msgstr "შეიყვანეთ ბმული (გამოსატოვებლად ცარიელი დატოვეთ): " - -msgid "Select signature check option" -msgstr "აირჩიეთ ხელმოწერის შემოწმების პარამეტრი" - -msgid "Select signature option" -msgstr "აირჩიეთ ხელმოწერის პარამეტრი" - -msgid "Custom mirrors" -msgstr "მორგებული სარკეები" - -msgid "Defined" -msgstr "აღწერილია" - -msgid "Save user configuration (including disk layout)" -msgstr "მომხმარებლის კონფიგურაციის შენახვა (დისკის განლაგების ჩართვით)" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"შეიყვანეთ საქაღალდე კონფიგურაცი(ებ)-ის შესანახად (ტაბით დასრულება ჩართულია)\n" -"შენახვის საქაღალდე: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"გნებავთ, შეინახოთ {} კონფიგურაციის ფაილები შემდეგ მისამართზე?\n" -"\n" -"{}" - -msgid "Saving {} configuration files to {}" -msgstr "{}-კონფიგურაციის ფაილების შენახვა {}-ზე" - -msgid "Mirrors" -msgstr "სარკეები" - -msgid "Mirror regions" -msgstr "სარკის რეგიონები" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - მინიმალური მნიშვნელობა : {} ( დაუშვებს {} პარალელურ გადმოწერას, დაუშვებს {მაქს_გადმოწერები+1} ერთდროულ გადმოწერას )" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "შეყვანილი რიცხვი არასწორია! თავიდან სცადეთ [1-დან {}-მდე, ან 0, გასათიშად]" - -msgid "Locales" -msgstr "ლოკალები" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "NetworkManager-ის გამოყენება (აუცილებელია ინტერნეტის GNOME/KDE-დან მოსარგებად)" - -msgid "Total: {} / {}" -msgstr "სულ: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "ყველა შეყვანილ მნიშვნელობად სუფიქსად შეგიძლიათ მიუთითოთ ერთეული: B, KB, KiB, MB, MiB..." - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "თუ ერთეული მითითებული არაა, მნიშვნელობა სექტორების რაოდენობად იქნება აღქმული" - -msgid "Enter start (default: sector {}): " -msgstr "შეიყვანეთ საწყისი სექტორი (ნაგულისხმევი: {}): " - -msgid "Enter end (default: {}): " -msgstr "შეიყვანეთ ბოლო სექტორი (ნაგულისხმევი: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "შეცდომა fido2 მოწყობილობების დადგენისას. libfido2 დაყენებული გაქვთ?" - -msgid "Path" -msgstr "ბილიკი" - -msgid "Manufacturer" -msgstr "მწარმოებელი" - -msgid "Product" -msgstr "პროდუქტი" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "არასწორი კონფიგურაცია: {error}" - -msgid "Type" -msgstr "ტიპი" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "ეს პარამეტრი დაყენებისას მითითებული რაოდენობის პარალელურ გადმოწერას დაუშვებს" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"შეიყვანეთ დასაშვები პარალელური გადმოწერების რაოდენობა.\n" -"\n" -"შენიშვნა:\n" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - მინიმალური მნიშვნელობა : {} ( დაუშვებს {} პარალელურ გადმოწერას )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - გამორთვა/ნაგულისხმევი : 0 ( პარალელური გადმოწერების გათიშვა. დროის ერთ მომენტში მხოლოდ ერთი გადმოწერა მოხდება )\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "შეყვანილი რიცხვი არასწორია! თავიდან სცადეთ [ან დააყენეთ 0, გასათიშად]" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Hyperland-ს თქვენს სამუშაო ადგილთან (აპარატურასთან, როგორიცაა კლავიატურა, თაგუნა და ა.შ>) წვდომა სჭირდება" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"აირჩიეთ ეს პარამეტრი, რომ Hyperland-ს თქვენს აპარატურასთან წვდომა მისცეთ" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "ყველა შეყვანილ მნიშვნელობად სუფიქსად შეგიძლიათ მიუთითოთ ერთეული: B, KB, KiB, MB, MiB..." - -msgid "Would you like to use unified kernel images?" -msgstr "გნებავთ გაერთიანებული ბირთვის დისკის ასლის ფაილების გამოყენება?" - -msgid "Unified kernel images" -msgstr "გაერთიანებული ბირთვის დისკის ასლის ფაილები" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "დროის სინქრონიზაციის (timedatectl show) დასრულების მოლოდინი." - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "დროის სინქრონიზაცია არ სრულდება. სანამ ელოდებით, შეამოწმეთ დოკუმენტაცია, როგორ აიცილოთ ეს თავიდან: https://archinstall.readthedocs.io/" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "ავტომატური დროის სინქრონიზაციის მოლოდინის გამოტოვება (ამას შეუძლია, პრობლემები გამოიწვიოს, თუ დრო დაყენებისას აირევა)" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "ველოდები Arch Linux-ის ბრელოკის სინქრონიზაციის (archlinux-keyring-wkd-sync) დასრულებას." - -msgid "Selected profiles: " -msgstr "მონიშნული პროფილები: " - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "დროის სინქრონიზაცია არ სრულდება. სანამ ელოდებით, შეამოწმეთ დოკუმენტაცია, როგორ აიცილოთ ეს თავიდან: https://archinstall.readthedocs.io/" - -msgid "Mark/Unmark as nodatacow" -msgstr "'nodatacow' ალმის დასმა/მოხსნა" - -msgid "Would you like to use compression or disable CoW?" -msgstr "შეკუმშვის გამოყენება გნებავთ, თუ CoW-ის გათიშვა?" - -msgid "Use compression" -msgstr "შეკუმშვის გამოყენება" - -msgid "Disable Copy-on-Write" -msgstr "ჩაწერისას-დაკოპირების გათიშვა" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "მოგაწვდით სამუშაო გარემოებისა და ფანჯრების მმართველების არჩევანს. მაგ: GNOME, KDE Plasma, Sway" - -#, python-brace-format -msgid "Configuration type: {}" -msgstr "მორგების ტიპი: {}" - -msgid "LVM configuration type" -msgstr "LVM-ის კონფიგურაციის ტიპი" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "LVM დისკის დაშიფვრა ორზე მეტი დანაყოფით ამჟამად მხარდაჭერილი არაა" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "NetworkManager-ის გამოყენება (აუცილებელია ინტერნეტის GNOME/KDE Plasma-დან მოსარგებად)" - -msgid "Select a LVM option" -msgstr "აირჩიეთ LVM-ის პარამეტრი" - -msgid "Partitioning" -msgstr "დაყოფა" - -msgid "Logical Volume Management (LVM)" -msgstr "ლოგიკური ტომების მართვა (LVM)" - -msgid "Physical volumes" -msgstr "ფიზიკური ტომები" - -msgid "Volumes" -msgstr "ტომები" - -msgid "LVM volumes" -msgstr "LVM-ის ტომები" - -msgid "LVM volumes to be encrypted" -msgstr "დასაშიფრი LVM-ის ტომები" - -msgid "Select which LVM volumes to encrypt" -msgstr "აირჩიეთ, რომელი LVM-ის ტომი დაიშიფროს" - -msgid "Default layout" -msgstr "ნაგულისხმები განლაგება" - -msgid "No Encryption" -msgstr "დაშიფვრის გარეშე" - -msgid "LUKS" -msgstr "LUKS" - -msgid "LVM on LUKS" -msgstr "LVM LUKS-ზე" - -msgid "LUKS on LVM" -msgstr "LUKS LVM-ზე" - -msgid "Yes" -msgstr "დიახ" - -msgid "No" -msgstr "არა" - -msgid "Archinstall help" -msgstr "Archinstall-ის დახმარება" - -msgid " (default)" -msgstr " (ნაგულისხმევი)" - -msgid "Press Ctrl+h for help" -msgstr "" - -#, fuzzy -msgid "Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"აირჩიეთ ეს პარამეტრი, რომ Sway-ს თქვენს აპარატურასთან წვდომა მისცეთ" - -msgid "Seat access" -msgstr "" - -#, fuzzy -msgid "Mountpoint" -msgstr "მიმაგრების წერტილი: " - -msgid "HSM" -msgstr "" - -#, fuzzy -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "შეიყვანეთ დისკის დაშიფვრის პაროლი (დაშიფვრის გასათიშად დატოვეთ ცარიელი): " - -#, fuzzy -msgid "Disk encryption password" -msgstr "დაშიფვრის პაროლი" - -#, fuzzy -msgid "Partition - New" -msgstr "დანაყოფი" - -#, fuzzy -msgid "Filesystem" -msgstr "ფაილური სისტემის შეცვლა" - -msgid "Invalid size" -msgstr "" - -#, fuzzy -msgid "Start (default: sector {}): " -msgstr "შეიყვანეთ საწყისი სექტორი (ნაგულისხმევი: {}): " - -#, fuzzy -msgid "End (default: {}): " -msgstr "შეიყვანეთ ბოლო სექტორი (ნაგულისხმევი: {}): " - -#, fuzzy -msgid "Subvolume name" -msgstr "ქვეტომის სახელი " - -#, fuzzy -msgid "Disk configuration type" -msgstr "დისკის მორგება" - -msgid "Root mount directory" -msgstr "" - -#, fuzzy -msgid "Select language" -msgstr "ლოკალის ენა" - -#, fuzzy -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "დამატებითი პაკეტები დასაყენებლად (გამოტოვებით გამოყოფილი, გამოსატოვებლად ცარიელი დატოვეთ): " - -msgid "Invalid download number" -msgstr "" - -msgid "Number downloads" -msgstr "" - -#, fuzzy -msgid "The username you entered is invalid" -msgstr "შეყვანილი მომხმარებლის სახელი არასწორია. კიდევ სცადეთ" - -#, fuzzy -msgid "Username" -msgstr "მომხმარებლის სახელი : " - -#, fuzzy, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "იყოს \"{}\" ზემომხმარებელი(sudo)?" - -#, fuzzy -msgid "Interfaces" -msgstr "ინტერფეისის დამატება" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "" - -msgid "Modes" -msgstr "" - -msgid "IP address" -msgstr "" - -#, fuzzy -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "აირჩიეთ ნაგულისხმევი რაუტერის IP მისამართი, ან ცარიელი დატოვეთ: " - -msgid "Gateway address" -msgstr "" - -#, fuzzy -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "შეიყვანეთ თქვენი DNS სერვერების მისამართები (გამოყოფილი ცარიელი ადგილით. ცარიელი, თუ არ გნებავთ, გამოიყენოთ): " - -#, fuzzy -msgid "DNS servers" -msgstr "აუდიოსერვერის გრეშე" - -#, fuzzy -msgid "Configure interfaces" -msgstr "მორგებულია {} ინტერფეისი" - -#, fuzzy -msgid "Kernel" -msgstr "ბირთვები" - -msgid "UEFI is not detected and some options are disabled" -msgstr "" - -msgid "Info" -msgstr "" - -#, fuzzy -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "Sway-ის დახურული კოდის მქონე Nvidia-ის დრაივერის მხარდაჭერა არ გააჩნია. როგორც ჩანს, შარში ყოფთ თავს. დარწმუნებული ბრძანდებით?" - -#, fuzzy -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "Sway-ის დახურული კოდის მქონე Nvidia-ის დრაივერის მხარდაჭერა არ გააჩნია. როგორც ჩანს, შარში ყოფთ თავს. დარწმუნებული ბრძანდებით?" - -#, fuzzy -msgid "Main profile" -msgstr "პროფილის ჩასწორება" - -#, fuzzy -msgid "Confirm password" -msgstr "პაროლის შეცვლა" - -msgid "The confirmation password did not match, please try again" -msgstr "" - -#, fuzzy -msgid "Not a valid directory" -msgstr "არასწორი საქაღალდე: {}" - -#, fuzzy -msgid "Would you like to continue?" -msgstr "გნებავთ BTRFS-ის შეკუმშვის გამოყენება?" - -msgid "Directory" -msgstr "" - -#, fuzzy -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "" -"შეიყვანეთ საქაღალდე კონფიგურაცი(ებ)-ის შესანახად (ტაბით დასრულება ჩართულია)\n" -"შენახვის საქაღალდე: " - -#, fuzzy, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "" -"გნებავთ, შეინახოთ {} კონფიგურაციის ფაილები შემდეგ მისამართზე?\n" -"\n" -"{}" - -msgid "Enabled" -msgstr "" - -msgid "Disabled" -msgstr "" - -#, fuzzy -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " ეს პრობლემა და ფაილი გადმოგვიგზავნეთ ბმულზე https://github.com/archlinux/archinstall/issues" - -#, fuzzy -msgid "Mirror name" -msgstr "სარკის რეგიონი" - -msgid "Url" -msgstr "" - -#, fuzzy -msgid "Select signature check" -msgstr "აირჩიეთ ხელმოწერის შემოწმების პარამეტრი" - -#, fuzzy -msgid "Select execution mode" -msgstr "აირჩიეთ შესრულების რეჟიმი" - -msgid "Press ? for help" -msgstr "" - -#, fuzzy -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"აირჩიეთ ეს პარამეტრი, რომ Hyperland-ს თქვენს აპარატურასთან წვდომა მისცეთ" - -#, fuzzy -msgid "Additional repositories" -msgstr "არასავალდებულო რეპოზიტორიები" - -msgid "NTP" -msgstr "" - -msgid "Swap on zram" -msgstr "" - -msgid "Name" -msgstr "" - -#, fuzzy -msgid "Signature check" -msgstr "აირჩიეთ ხელმოწერის შემოწმების პარამეტრი" - -#, fuzzy, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "ამჟამად თავისუფალი სექტორები მოწყობილობაზე {}:" - -#, fuzzy, python-brace-format -msgid "Size: {} / {}" -msgstr "სულ: {} / {}" - -#, fuzzy, python-brace-format -msgid "Size (default: {}): " -msgstr "შეიყვანეთ ბოლო სექტორი (ნაგულისხმევი: {}): " - -#, fuzzy -msgid "HSM device" -msgstr "მოწყობილობა" - -msgid "Some packages could not be found in the repository" -msgstr "" - -#, fuzzy -msgid "User" -msgstr "მომხმარებლის სახელი : " - -msgid "The specified configuration will be applied" -msgstr "" - -msgid "Wipe" -msgstr "" - -#, fuzzy -msgid "Mark/Unmark as XBOOTLDR" -msgstr "ჩატვირთვადი ალმის დაყენება/მოხსნა" - -#, fuzzy -msgid "Loading packages..." -msgstr "დამატებითი პაკეტები" - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "" - -#, fuzzy -msgid "Add a custom repository" -msgstr "მორგებული სარკის დამატება" - -#, fuzzy -msgid "Change custom repository" -msgstr "მორგებული სარკის შეცვლა" - -#, fuzzy -msgid "Delete custom repository" -msgstr "მორგებული სარკის წაშლა" - -#, fuzzy -msgid "Repository name" -msgstr "სარკის რეგიონი" - -#, fuzzy -msgid "Add a custom server" -msgstr "მორგებული სარკის დამატება" - -#, fuzzy -msgid "Change custom server" -msgstr "მორგებული სარკის შეცვლა" - -#, fuzzy -msgid "Delete custom server" -msgstr "მორგებული სარკის წაშლა" - -msgid "Server url" -msgstr "" - -#, fuzzy -msgid "Select regions" -msgstr "აირჩიეთ ხელმოწერის პარამეტრი" - -#, fuzzy -msgid "Add custom servers" -msgstr "მორგებული სარკის დამატება" - -#, fuzzy -msgid "Add custom repository" -msgstr "მორგებული სარკის დამატება" - -#, fuzzy -msgid "Loading mirror regions..." -msgstr "სარკის რეგიონები" - -#, fuzzy -msgid "Mirrors and repositories" -msgstr "არასავალდებულო რეპოზიტორიები" - -#, fuzzy -msgid "Selected mirror regions" -msgstr "სარკის რეგიონები" - -#, fuzzy -msgid "Custom servers" -msgstr "მორგებული სარკეები" - -#, fuzzy -msgid "Custom repositories" -msgstr "არასავალდებულო რეპოზიტორიები" - -msgid "Only ASCII characters are supported" -msgstr "" - -msgid "Show help" -msgstr "" - -msgid "Exit help" -msgstr "" - -msgid "Preview scroll up" -msgstr "" - -msgid "Preview scroll down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move right" -msgstr "" - -msgid "Move left" -msgstr "" - -msgid "Jump to entry" -msgstr "" - -msgid "Skip selection (if available)" -msgstr "" - -msgid "Reset selection (if available)" -msgstr "" - -#, fuzzy -msgid "Select on single select" -msgstr "აირჩიეთ ხელმოწერის შემოწმების პარამეტრი" - -#, fuzzy -msgid "Select on multi select" -msgstr "აირჩიეთ დროის სარტყელი" - -msgid "Reset" -msgstr "" - -#, fuzzy -msgid "Skip selection menu" -msgstr "აირჩიეთ შესრულების რეჟიმი" - -msgid "Start search mode" -msgstr "" - -msgid "Exit search mode" -msgstr "" - -#, fuzzy -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway-ს თქვენს სამუშაო ადგილთან (აპარატურასთან, როგორიცაა კლავიატურა, თაგუნა და ა.შ>) წვდომა სჭირდება" - -#, fuzzy -msgid "Choose an option to give labwc access to your hardware" -msgstr "" -"\n" -"\n" -"აირჩიეთ ეს პარამეტრი, რომ Sway-ს თქვენს აპარატურასთან წვდომა მისცეთ" - -#, fuzzy -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway-ს თქვენს სამუშაო ადგილთან (აპარატურასთან, როგორიცაა კლავიატურა, თაგუნა და ა.შ>) წვდომა სჭირდება" - -#, fuzzy -msgid "Choose an option to give niri access to your hardware" -msgstr "" -"\n" -"\n" -"აირჩიეთ ეს პარამეტრი, რომ Sway-ს თქვენს აპარატურასთან წვდომა მისცეთ" - -#, fuzzy -msgid "Mark/Unmark as ESP" -msgstr "ჩატვირთვადი ალმის დაყენება/მოხსნა" - -msgid "Package group:" -msgstr "" - -#, fuzzy -msgid "Exit archinstall" -msgstr "Archinstall-ის დახმარება" - -#, fuzzy -msgid "Reboot system" -msgstr "ფაილური სისტემის შეცვლა" - -#, fuzzy -msgid "chroot into installation for post-installation configurations" -msgstr "გნებავთ chroot ახალ დაყენებულ სისტემაში და დაყენების შემდეგი კონფიგურაციის გაშვება?" - -msgid "Installation completed" -msgstr "" - -#, fuzzy -msgid "What would you like to do next?" -msgstr "გნებავთ BTRFS-ის შეკუმშვის გამოყენება?" - -#, fuzzy, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "აირჩიეთ მოსარგები რეჟიმი \"{}\"-სთვის ან გამოტოვეთ ნაგულისხმევი რეჟიმის \"{}\" გამოსაყენებლად" - -#, fuzzy -msgid "Incorrect credentials file decryption password" -msgstr "დაშიფვრის პაროლი" - -#, fuzzy -msgid "Incorrect password" -msgstr "Root-ის პაროლი" - -#, fuzzy -msgid "Credentials file decryption password" -msgstr "დაშიფვრის პაროლი" - -#, fuzzy -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "" -"გნებავთ, შეინახოთ {} კონფიგურაციის ფაილები შემდეგ მისამართზე?\n" -"\n" -"{}" - -#, fuzzy -msgid "Credentials file encryption password" -msgstr "დაშიფვრის პაროლი" - -#, fuzzy, python-brace-format -msgid "Repositories: {}" -msgstr "სარკის რეგიონი" - -#, fuzzy -msgid "New version available" -msgstr "HSM მოწყობილობები მიუწვდომელია" - -#, fuzzy -msgid "Passwordless login" -msgstr "პაროლი" - -msgid "Second factor login" -msgstr "" - -msgid "Bluetooth" -msgstr "" - -#, fuzzy -msgid "Would you like to configure Bluetooth?" -msgstr "გნებავთ BTRFS-ის შეკუმშვის გამოყენება?" - -msgid "Authentication" -msgstr "" - -msgid "Applications" -msgstr "" - -msgid "U2F login method: " -msgstr "" - -msgid "Passwordless sudo: " -msgstr "" - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "" - -msgid "Syncing the system..." -msgstr "" - -msgid "Value cannot be empty" -msgstr "" - -msgid "Snapshot type" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Snapshot type: {}" -msgstr "გარემოს ტიპი: {}" - -msgid "U2F login setup" -msgstr "" - -msgid "No U2F devices found" -msgstr "" - -msgid "U2F Login Method" -msgstr "" - -#, fuzzy -msgid "Enable passwordless sudo?" -msgstr "შეიყვანეთ პაროლი: " - -#, fuzzy, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "აირჩიეთ HSM-სთვის გამოსაყენებელი FIDO2 მოწყობილობა" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "" - -msgid "Starting device modifications in " -msgstr "" - -#, fuzzy -msgid "No network connection found" -msgstr "ქსელის მორგების გარეშე" - -#, fuzzy -msgid "Would you like to connect to a Wifi?" -msgstr "გნებავთ BTRFS-ის შეკუმშვის გამოყენება?" - -#, fuzzy -msgid "No wifi interface found" -msgstr "მორგებულია {} ინტერფეისი" - -#, fuzzy -msgid "Select wifi network to connect to" -msgstr "მოსარგებად ერთ-ერთი ქსელის ინტერფეისი აირჩიეთ" - -msgid "Scanning wifi networks..." -msgstr "" - -#, fuzzy -msgid "No wifi networks found" -msgstr "ქსელის მორგების გარეშე" - -msgid "Failed setting up wifi" -msgstr "" - -#, fuzzy -msgid "Enter wifi password" -msgstr "შეიყვანეთ პაროლი: " - -msgid "Ok" -msgstr "" diff --git a/examples/archinstall/archinstall/locales/ko/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/ko/LC_MESSAGES/base.mo deleted file mode 100644 index 098713f..0000000 Binary files a/examples/archinstall/archinstall/locales/ko/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/ko/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/ko/LC_MESSAGES/base.po deleted file mode 100644 index ef44796..0000000 --- a/examples/archinstall/archinstall/locales/ko/LC_MESSAGES/base.po +++ /dev/null @@ -1,1941 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: An Jaebeom \n" -"Language-Team: \n" -"Language: ko\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.1.1\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] 로그파일을 다음의 경로에 생성했습니다: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " 이 문제(및 파일)를 https://github.com/archlinux/archinstall/issues 에 제출하세요" - -msgid "Do you really want to abort?" -msgstr "정말 중단하시겠습니까?" - -msgid "And one more time for verification: " -msgstr "확인을 위해 한번 더: " - -msgid "Would you like to use swap on zram?" -msgstr "zram에서 스왑을 사용하시겠습니까?" - -msgid "Desired hostname for the installation: " -msgstr "설치에 원하는 호스트명: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "sudo 권한이 있는 필수 슈퍼유저의 사용자명: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "설치할 추가 사용자(없는 경우 비워 둠): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "이 사용자가 슈퍼유저여야 합니까 (sudoer)?" - -msgid "Select a timezone" -msgstr "시간대를 선택하세요" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "systemd-boot 대신 GRUB 를 부트로더로 사용하시겠습니까?" - -msgid "Choose a bootloader" -msgstr "부트로더를 선택하세요" - -msgid "Choose an audio server" -msgstr "오디오 서버를 선택하세요" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "base, base-devel, linux, linux-firmware, efibootmgr 및 선택적 프로파일 패키지와 같은 패키지만 설치됩니다." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "만약 파이어폭스나 크로미움같은 웹브라우저를 희망하실 경우 다음 프롬프트에서 지정하실 수 있습니다." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "설치할 추가 패키지 작성하세요 (띄어쓰기로 구분, 건너뛰려면 공백): " - -msgid "Copy ISO network configuration to installation" -msgstr "ISO 네트워크 구성을 설치에 복사" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "NetworkManager 사용 (GNOME 이나 KDE 에서 그래픽으로 인터넷을 구성하는 데 필요)" - -msgid "Select one network interface to configure" -msgstr "구성할 네트워크 인터페이스를 하나 선택하세요" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "\"{}\" 에 대해 구성할 모드를 선택하거나 기본 모드 \"{}\" 을(를) 사용하도록 건너뛰세요" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "{} 의 IP와 서브넷을 입력하세요 (예시: 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "게이트웨이(라우터) IP 주소를 입력하시거나 공백으로 두세요: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "DNS 서버를 입력하세요 (띄어쓰기로 구분, 없는 경우 공백): " - -msgid "Select which filesystem your main partition should use" -msgstr "주 파티션이 사용해야 하는 파일 시스템을 선택하세요" - -msgid "Current partition layout" -msgstr "현재 파티션 레이아웃" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"무엇을 할 것인지 선택하세요\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "파티션에 대해 원하는 파일 시스템 유형을 입력하세요" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "" - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "" - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} 에 대기 중인 파티션이 포함되어 있습니다. 그러면 이러한 파티션이 제거됩니다. 정말 진행하시겠습니까?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"삭제할 파티션을 인덱스 값으로 선택하세요" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"마운트할 파티션을 인덱스 값으로 선택하세요" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * 파티션 마운트 포인트는 설치 내부를 기준으로 하며 예를 들어 부팅은 /boot 입니다." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "파티션을 마운트할 위치를 선택하세요 (마운트 포인트 제거는 공백): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"포맷을 위해 마스킹할 파티션 선택" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"암호화를 위해 마스킹할 파티션 선택" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"부팅 가능으로 표시할 파티션 선택" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"파일 시스템을 설정할 파티션 선택" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "파티션에 대해 원하는 파일 시스템을 입력하세요: " - -msgid "Archinstall language" -msgstr "Archinstall 언어" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "선택한 모든 드라이브를 지우고 최선의 기본 파티션 레이아웃 사용" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "각 개별 드라이브로 수행할 작업을 선택하세요 (파티션 사용 후)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "선택한 블록 장치로 수행할 작업을 선택하세요" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "이것은 사전 프로그래밍된 프로필 목록이며 데스크톱 환경과 같은 것을 더 쉽게 설치할 수 있습니다" - -msgid "Select keyboard layout" -msgstr "키보드 레이아웃을 선택하세요" - -msgid "Select one of the regions to download packages from" -msgstr "패키지를 다운로드할 지역 중 하나를 선택하세요" - -msgid "Select one or more hard drives to use and configure" -msgstr "사용하고 구성할 하드 드라이브를 하나 이상 선택하세요" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "AMD 하드웨어와의 최상의 호환성을 위해 모든 오픈 소스 또는 AMD/ATI 옵션을 사용할 수 있습니다." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "인텔 하드웨어와의 최상의 호환성을 위해 모든 오픈 소스 또는 인텔 옵션을 사용할 수 있습니다.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Nvidia 하드웨어와의 최상의 호환성을 위해 Nvidia 독점 드라이버를 사용할 수 있습니다.\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"모든 오픈 소스 드라이버를 설치하려면 그래픽 드라이버를 선택하거나 공백으로 두세요" - -msgid "All open-source (default)" -msgstr "전부 오픈소스 (기본값)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "사용할 커널을 선택하시거나 기본 커널인 \"{}\" 을(를) 사용하실 경우 비워두세요" - -msgid "Choose which locale language to use" -msgstr "사용할 로케일 언어를 선택하세요" - -msgid "Choose which locale encoding to use" -msgstr "사용할 로케일 인코딩을 선택하세요" - -msgid "Select one of the values shown below: " -msgstr "아래 표시된 값 중 하나를 선택하세요: " - -msgid "Select one or more of the options below: " -msgstr "아래 표시된 값 중 하나 이상을 선택하세요: " - -msgid "Adding partition...." -msgstr "파티션 추가 중...." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "계속하려면 유효한 fs-type을 입력해야 합니다. 유효한 fs-type에 대해서는 `man parted`를 참조하세요." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "오류: URL \"{}\"의 프로필 나열 결과:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "오류: \"{}\" 결과를 JSON으로 디코딩할 수 없습니다:" - -msgid "Keyboard layout" -msgstr "키보드 레이아웃" - -msgid "Mirror region" -msgstr "미러 위치" - -msgid "Locale language" -msgstr "로케일 언어" - -msgid "Locale encoding" -msgstr "로케일 인코딩" - -msgid "Drive(s)" -msgstr "드라이브" - -msgid "Disk layout" -msgstr "디스크 레이아웃" - -msgid "Encryption password" -msgstr "비밀번호 암호화" - -msgid "Swap" -msgstr "스왑" - -msgid "Bootloader" -msgstr "부트로더" - -msgid "Root password" -msgstr "루트 비밀번호" - -msgid "Superuser account" -msgstr "슈퍼유저 계정" - -msgid "User account" -msgstr "사용자 계정" - -msgid "Profile" -msgstr "프로필" - -msgid "Audio" -msgstr "오디오" - -msgid "Kernels" -msgstr "커널" - -msgid "Additional packages" -msgstr "추가 패키지" - -msgid "Network configuration" -msgstr "네트워크 구성" - -msgid "Automatic time sync (NTP)" -msgstr "시간 자동 동기화 (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "설치 ({} 개의 설정(들)이 누락됨)" - -msgid "" -"You decided to skip harddrive selection\n" -"and will use whatever drive-setup is mounted at {} (experimental)\n" -"WARNING: Archinstall won't check the suitability of this setup\n" -"Do you wish to continue?" -msgstr "" -"하드 드라이브 선택을 건너뛰기로 결정했습니다\n" -"{} 에 마운트된 모든 드라이브 설정을 사용합니다 (실험적).\n" -"경고: Archinstall은 이 설정의 적합성을 확인하지 않습니다.\n" -"계속하시겠습니까?" - -msgid "Re-using partition instance: {}" -msgstr "파티션 인스턴스 재사용: {}" - -msgid "Create a new partition" -msgstr "새 파티션 생성" - -msgid "Delete a partition" -msgstr "파티션 제거" - -msgid "Clear/Delete all partitions" -msgstr "모든 파티션 제거" - -msgid "Assign mount-point for a partition" -msgstr "파티션에 대한 마운트 지점 할당" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "포맷할 파티션 표시/표시 해제 (데이터 삭제)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "암호화된 파티션으로 표시/표시 해제" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "부팅 가능한 파티션으로 표시/표시 해제 (/boot의 경우 자동)" - -msgid "Set desired filesystem for a partition" -msgstr "파티션에 대해 원하는 파일 시스템 설정" - -msgid "Abort" -msgstr "중단" - -msgid "Hostname" -msgstr "호스트명" - -msgid "Not configured, unavailable unless setup manually" -msgstr "구성되지 않음, 수동으로 설정하지 않으면 사용할 수 없음" - -msgid "Timezone" -msgstr "시간대" - -msgid "Set/Modify the below options" -msgstr "아래 옵션 설정/수정" - -msgid "Install" -msgstr "설치" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"ESC 키를 사용해 스킵하세요\n" -"\n" - -msgid "Suggest partition layout" -msgstr "파티션 레이아웃 제안" - -msgid "Enter a password: " -msgstr "비밀번호를 입력하세요: " - -msgid "Enter a encryption password for {}" -msgstr "{} 에 대한 암호화 비밀번호 입력" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "디스크를 암호화할 암호를 입력하세요 (암호화하지 않으려면 비워 둠): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "sudo 권한이 있는 필수 슈퍼유저를 생성합니다: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "루트 비밀번호를 입력하세요 (루트를 비활성화 할 경우 공백): " - -msgid "Password for user \"{}\": " -msgstr "사용자 \"{}\" 님에 대한 비밀번호: " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "추가 패키지가 있는지 확인합니다 (몇 초 정도 소요될 수 있음)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "기본 시간 서버와 함께 자동 시간 동기화(NTP)를 사용하시겠습니까?\n" - -msgid "" -"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" -"For more information, please check the Arch wiki" -msgstr "" -"NTP가 작동하려면 하드웨어 시간 및 기타 사후 구성 단계가 필요할 수 있습니다.\n" -"더 많은 정보를 확인하시려면, Arch wiki 를 확인하세요" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "추가 사용자를 만들려면 사용자 이름을 입력하세요 (건너뛰려면 공백): " - -msgid "Use ESC to skip\n" -msgstr "ESC 키를 사용해 스킵하세요\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -"목록에서 개체를 선택하고 실행 가능한 작업 중 하나를 선택하세요" - -msgid "Cancel" -msgstr "취소" - -msgid "Confirm and exit" -msgstr "저장 후 종료" - -msgid "Add" -msgstr "추가" - -msgid "Copy" -msgstr "복사" - -msgid "Edit" -msgstr "수정" - -msgid "Delete" -msgstr "제거" - -msgid "Select an action for '{}'" -msgstr "'{}' 에 대한 작업 선택" - -msgid "Copy to new key:" -msgstr "새 키로 복사:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "알 수 없는 nic 타입: {}, 가능한 값은 {} 입니다" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"선택된 구성:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Pacman 이 이미 실행중입니다, 종료될 때까지 최대 10분 대기해야 합니다." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "기존 pacman 잠금이 종료되지 않았습니다. archinstall을 사용하기 전에 기존 pacman 세션을 모두 정리하세요." - -msgid "Choose which optional additional repositories to enable" -msgstr "활성화할 선택적 추가 리포지토리를 선택하세요" - -msgid "Add a user" -msgstr "사용자 추가" - -msgid "Change password" -msgstr "비밀번호 변경" - -msgid "Promote/Demote user" -msgstr "사용자 승격/강등" - -msgid "Delete User" -msgstr "사용자 제거" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"새 사용자 정의\n" - -msgid "User Name : " -msgstr "사용자명 : " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "{} 님은 슈퍼유저(sudoer)여야 하나요?" - -msgid "Define users with sudo privilege: " -msgstr "sudo 권한이 있는 사용자 정의: " - -msgid "No network configuration" -msgstr "네트워크 구성 없음" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "btrfs 파티션에 원하는 하위 볼륨 설정" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"하위 볼륨을 설정할 파티션을 선택하세요" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "현재 파티션에 대한 btrfs 하위 볼륨 관리" - -msgid "No configuration" -msgstr "구성 없음" - -msgid "Save user configuration" -msgstr "사용자 구성 저장" - -msgid "Save user credentials" -msgstr "사용자 자격 증명 저장" - -msgid "Save disk layout" -msgstr "디스크 레이아웃 저장" - -msgid "Save all" -msgstr "모두 저장" - -msgid "Choose which configuration to save" -msgstr "저장할 구성을 선택하세요" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "저장할 구성의 디렉토리를 입력하세요: " - -msgid "Not a valid directory: {}" -msgstr "올바른 디렉터리가 아닙니다: {}" - -msgid "The password you are using seems to be weak," -msgstr "사용 중인 비밀번호가 보안에 취약한 것 같습니다," - -msgid "are you sure you want to use it?" -msgstr "그래도 사용하시겠습니까?" - -msgid "Optional repositories" -msgstr "선택적 저장소" - -msgid "Save configuration" -msgstr "구성 저장" - -msgid "Missing configurations:\n" -msgstr "누락된 구성들:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "root-password 또는 1명 이상의 슈퍼유저를 지정해야 합니다" - -msgid "Manage superuser accounts: " -msgstr "슈퍼유저 계정 관리: " - -msgid "Manage ordinary user accounts: " -msgstr "일반 사용자 계정 관리: " - -msgid " Subvolume :{:16}" -msgstr " 하위 볼륨 :{:16}" - -msgid " mounted at {:16}" -msgstr " {:16} 에 마운트됨" - -msgid " with option {}" -msgstr " 옵션 {} 와 함께" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -" 새 하위 볼륨에 대해 원하는 값 채우기 \n" - -msgid "Subvolume name " -msgstr "하위 볼륨 이름 " - -msgid "Subvolume mountpoint" -msgstr "하위 볼륨 마운트 지점" - -msgid "Subvolume options" -msgstr "하위 볼륨 옵션" - -msgid "Save" -msgstr "저장" - -msgid "Subvolume name :" -msgstr "하위 볼륨 이름 :" - -msgid "Select a mount point :" -msgstr "마운트 지점을 선택하세요 :" - -msgid "Select the desired subvolume options " -msgstr "원하는 하위 볼륨 옵션을 선택하세요 " - -msgid "Define users with sudo privilege, by username: " -msgstr "sudo 권한을 가질 사용자 이름을 입력하세요: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] 로그파일이 다음 경로에 생성되었습니다: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "기본 구조로 BTRFS 하위 볼륨을 사용하시겠습니까?" - -msgid "Would you like to use BTRFS compression?" -msgstr "BTRFS 압축을 사용하시겠습니까?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "/home 에 대해 별도의 파티션을 생성하시겠습니까?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "선택한 드라이브에 자동 제안에 필요한 최소 용량이 없습니다\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "Arch Linux 파티션의 최대 용량: {}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Arch Linux 파티션의 최소 용량: {}GB" - -msgid "Continue" -msgstr "계속" - -msgid "yes" -msgstr "예" - -msgid "no" -msgstr "아니오" - -msgid "set: {}" -msgstr "설정: {}" - -msgid "Manual configuration setting must be a list" -msgstr "수동 구성 설정은 list여야 합니다" - -msgid "No iface specified for manual configuration" -msgstr "수동 구성에 대해 지정된 iface가 없습니다" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "자동 DHCP가 없는 수동 nic 구성에는 IP 주소가 필요합니다" - -msgid "Add interface" -msgstr "인터페이스 추가" - -msgid "Edit interface" -msgstr "인터페이스 수정" - -msgid "Delete interface" -msgstr "인터페이스 제거" - -msgid "Select interface to add" -msgstr "추가할 인터페이스 선택" - -msgid "Manual configuration" -msgstr "수동 구성" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "파티션을 압축된 것으로 표시/표시 해제(btrfs만 해당)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "사용 중인 비밀번호가 보안에 취약한 것 같습니다. 그래도 사용하시겠습니까?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "gnome, kde, sway 같은 다양한 데스크탑 환경 및 타일링 창 관리자를 제공합니다" - -msgid "Select your desired desktop environment" -msgstr "원하는 데스크탑 환경을 선택하세요" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "Arch Linux를 원하는 대로 커스터마이징할 수 있는 매우 기본적인 설치입니다." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "설치 및 활성화할 httpd, nginx, mariadb 같은 다양한 서버 패키지를 제공합니다" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "설치할 서버를 선택하고, 설치하지 않으면 최소 설치가 수행됩니다" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "최소 시스템과 xorg 및 그래픽 드라이버를 설치합니다." - -msgid "Press Enter to continue." -msgstr "계속하려면 Enter 키를 누르세요." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "새로 생성된 설치로 chroot 하고 설치 후 구성을 수행하시겠습니까?" - -msgid "Are you sure you want to reset this setting?" -msgstr "정말 설정을 초기화 하시겠습니까?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "사용 및 구성할 하드 드라이브를 하나 이상 선택하세요\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "기존 설정을 수정하면 디스크 레이아웃이 재설정됩니다!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "하드 드라이브 선택을 재설정하면 현재 디스크 레이아웃도 재설정됩니다. 정말 진행하시겠습니까?" - -msgid "Save and exit" -msgstr "저장하고 종료" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"대기 중인 파티션이 포함되어 있습니다. 그러면 이러한 파티션이 제거됩니다. 정말 진행하시겠습니까?" - -msgid "No audio server" -msgstr "오디오 서버가 없습니다" - -msgid "(default)" -msgstr "(기본)" - -msgid "Use ESC to skip" -msgstr "ESC 키를 사용하여 건너뜁니다" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"CTRL+C 를 이용해 현재 선택을 재설정합니다\n" -"\n" - -msgid "Copy to: " -msgstr "다음 경로로 복사: " - -msgid "Edit: " -msgstr "수정됨: " - -msgid "Key: " -msgstr "키: " - -msgid "Edit {}: " -msgstr "수정된 {}: " - -msgid "Add: " -msgstr "추가됨: " - -msgid "Value: " -msgstr "값: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "드라이브 선택 및 파티셔닝을 건너뛰고 /mnt 에 마운트된 드라이브 설정을 사용할 수 있습니다 (실험용)." - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "디스크 중 하나를 선택하거나 건너뛰고 /mnt 를 기본값으로 사용하세요" - -msgid "Select which partitions to mark for formatting:" -msgstr "포맷할 파티션을 선택하세요:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "HSM을 사용하여 암호화된 드라이브 잠금 해제" - -msgid "Device" -msgstr "장치" - -msgid "Size" -msgstr "크기" - -msgid "Free space" -msgstr "여유 공간" - -msgid "Bus-type" -msgstr "버스 타입" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "root-password 또는 sudo 권한이 있는 사용자 1 명 이상을 지정해야 합니다" - -msgid "Enter username (leave blank to skip): " -msgstr "사용자명 입력 (공백일 경우 스킵): " - -msgid "The username you entered is invalid. Try again" -msgstr "입력한 사용자 이름이 잘못되었습니다. 다시 시도하세요" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "\"{}\"은(는) 슈퍼유저여야 합니까 (sudo)?" - -#, fuzzy -msgid "Select which partitions to encrypt" -msgstr "암호화할 파티션을 선택하세요:" - -msgid "very weak" -msgstr "아주 약하게" - -msgid "weak" -msgstr "약하게" - -msgid "moderate" -msgstr "보통" - -msgid "strong" -msgstr "강하게" - -msgid "Add subvolume" -msgstr "하위 볼륨 추가" - -msgid "Edit subvolume" -msgstr "하위 볼륨 수정" - -msgid "Delete subvolume" -msgstr "하위 볼륨 제거" - -msgid "Configured {} interfaces" -msgstr "구성된 {} 인터페이스" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "이 옵션은 설치 중에 발생할 수 있는 병렬 다운로드 수를 활성화합니다" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"활성화할 병렬 다운로드 수를 입력하세요.\n" -" (1 부터 {} 까지의 숫자중 하나를 입력하세요)\n" -"메모:" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - 최댓값 : {} ( {} 개의 병렬 다운로드 허용, 한 번에 {} 개의 다운로드 허용 )" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - 최솟값 : 1 ( 1 개의 병렬 다운로드 허용, 한 번에 2 개의 다운로드 허용 )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - 비활성화/기본 : - ( 병렬 다운로드 비활성화, 한 번에 1 개의 다운로드만 허용 )" - -#, fuzzy, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "잘못된 값입니다! 유효한 값으로 다시 시도해주세요 [1 부터 {} 까지, 비활성화 하려면 0]" - -msgid "Parallel Downloads" -msgstr "병렬 다운로드" - -msgid "ESC to skip" -msgstr "ESC 키로 스킵" - -msgid "CTRL+C to reset" -msgstr "CTRL+C 로 재설정" - -msgid "TAB to select" -msgstr "TAB 으로 선택" - -msgid "[Default value: 0] > " -msgstr "[기본값: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "이 번역을 사용하려면 해당 언어를 지원하는 글꼴을 수동으로 설치하세요." - -msgid "The font should be stored as {}" -msgstr "글꼴은 {} (으)로 저장해야 합니다" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "" - -#, fuzzy -msgid "Select an execution mode" -msgstr "'{}' 에 대한 작업 선택" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "" - -#, fuzzy -msgid "Select one or more devices to use and configure" -msgstr "사용하고 구성할 하드 드라이브를 하나 이상 선택하세요" - -#, fuzzy -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "하드 드라이브 선택을 재설정하면 현재 디스크 레이아웃도 재설정됩니다. 정말 진행하시겠습니까?" - -#, fuzzy -msgid "Existing Partitions" -msgstr "파티션 추가 중...." - -#, fuzzy -msgid "Select a partitioning option" -msgstr "파티션 제거" - -#, fuzzy -msgid "Enter the root directory of the mounted devices: " -msgstr "저장할 구성의 디렉토리를 입력하세요: " - -#, fuzzy, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "Arch Linux 파티션의 최대 용량: {}GB\n" - -#, fuzzy, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "Arch Linux 파티션의 최소 용량: {}GB" - -#, fuzzy -msgid "This is a list of pre-programmed profiles_bck, they might make it easier to install things like desktop environments" -msgstr "이것은 사전 프로그래밍된 프로필 목록이며 데스크톱 환경과 같은 것을 더 쉽게 설치할 수 있습니다" - -#, fuzzy -msgid "Current profile selection" -msgstr "현재 파티션 레이아웃" - -#, fuzzy -msgid "Remove all newly added partitions" -msgstr "새 파티션 생성" - -#, fuzzy -msgid "Assign mountpoint" -msgstr "파티션에 대한 마운트 지점 할당" - -#, fuzzy -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "포맷할 파티션 표시/표시 해제 (데이터 삭제)" - -msgid "Mark/Unmark as bootable" -msgstr "" - -msgid "Change filesystem" -msgstr "" - -#, fuzzy -msgid "Mark/Unmark as compressed" -msgstr "파티션을 압축된 것으로 표시/표시 해제(btrfs만 해당)" - -#, fuzzy -msgid "Set subvolumes" -msgstr "하위 볼륨 제거" - -#, fuzzy -msgid "Delete partition" -msgstr "파티션 제거" - -msgid "Partition" -msgstr "" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "" - -#, fuzzy -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * 파티션 마운트 포인트는 설치 내부를 기준으로 하며 예를 들어 부팅은 /boot 입니다." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "" - -msgid "Mountpoint: " -msgstr "" - -msgid "Current free sectors on device {}:" -msgstr "" - -#, fuzzy -msgid "Total sectors: {}" -msgstr "올바른 디렉터리가 아닙니다: {}" - -#, fuzzy -msgid "Enter the start sector (default: {}): " -msgstr "시작 섹터를 입력하세요 (백분율 또는 블록 번호, 기본값: {}): " - -#, fuzzy -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "파티션의 끝 섹터를 입력하세요 (백분율 또는 블록 번호, 예시: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "" - -#, python-brace-format -msgid "Total length: {}" -msgstr "" - -#, fuzzy -msgid "Encryption type" -msgstr "비밀번호 암호화" - -msgid "Iteration time" -msgstr "" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "" - -msgid "Higher values increase security but slow down boot time" -msgstr "" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "" - -msgid "Iteration time cannot be empty" -msgstr "" - -msgid "Iteration time must be at least 100ms" -msgstr "" - -msgid "Iteration time must be at most 120000ms" -msgstr "" - -msgid "Please enter a valid number" -msgstr "" - -msgid "Partitions" -msgstr "" - -msgid "No HSM devices available" -msgstr "" - -#, fuzzy -msgid "Partitions to be encrypted" -msgstr "암호화할 파티션을 선택하세요:" - -msgid "Select disk encryption option" -msgstr "" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "" - -#, fuzzy -msgid "Use a best-effort default partition layout" -msgstr "선택한 모든 드라이브를 지우고 최선의 기본 파티션 레이아웃 사용" - -#, fuzzy -msgid "Manual Partitioning" -msgstr "수동 구성" - -#, fuzzy -msgid "Pre-mounted configuration" -msgstr "구성 없음" - -msgid "Unknown" -msgstr "" - -msgid "Partition encryption" -msgstr "" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr "" - -msgid "← Back" -msgstr "" - -msgid "Disk encryption" -msgstr "" - -#, fuzzy -msgid "Configuration" -msgstr "구성 없음" - -#, fuzzy -msgid "Password" -msgstr "루트 비밀번호" - -#, fuzzy -msgid "All settings will be reset, are you sure?" -msgstr "{} 에 대기 중인 파티션이 포함되어 있습니다. 그러면 이러한 파티션이 제거됩니다. 정말 진행하시겠습니까?" - -msgid "Back" -msgstr "" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "" - -msgid "The proprietary Nvidia driver is not supported by Sway. It is likely that you will run into issues, are you okay with that?" -msgstr "" - -#, fuzzy -msgid "Installed packages" -msgstr "추가 패키지" - -#, fuzzy -msgid "Add profile" -msgstr "프로필" - -#, fuzzy -msgid "Edit profile" -msgstr "프로필" - -#, fuzzy -msgid "Delete profile" -msgstr "인터페이스 제거" - -#, fuzzy -msgid "Profile name: " -msgstr "프로필" - -#, fuzzy -msgid "The profile name you entered is already in use. Try again" -msgstr "입력한 사용자 이름이 잘못되었습니다. 다시 시도하세요" - -#, fuzzy -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "설치할 추가 패키지 작성하세요 (띄어쓰기로 구분, 건너뛰려면 공백): " - -#, fuzzy -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "설치할 추가 패키지 작성하세요 (띄어쓰기로 구분, 건너뛰려면 공백): " - -msgid "Should this profile be enabled for installation?" -msgstr "" - -msgid "Create your own" -msgstr "" - -#, fuzzy -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"모든 오픈 소스 드라이버를 설치하려면 그래픽 드라이버를 선택하거나 공백으로 두세요" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" - -msgid "Graphics driver" -msgstr "" - -msgid "Greeter" -msgstr "" - -msgid "Please chose which greeter to install" -msgstr "" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "" - -#, fuzzy -msgid "Disk configuration" -msgstr "구성 없음" - -#, fuzzy -msgid "Profiles" -msgstr "프로필" - -msgid "Finding possible directories to save configuration files ..." -msgstr "" - -#, fuzzy -msgid "Select directory (or directories) for saving configuration files" -msgstr "사용하고 구성할 하드 드라이브를 하나 이상 선택하세요" - -#, fuzzy -msgid "Add a custom mirror" -msgstr "사용자 추가" - -msgid "Change custom mirror" -msgstr "" - -msgid "Delete custom mirror" -msgstr "" - -#, fuzzy -msgid "Enter name (leave blank to skip): " -msgstr "사용자명 입력 (공백일 경우 스킵): " - -#, fuzzy -msgid "Enter url (leave blank to skip): " -msgstr "사용자명 입력 (공백일 경우 스킵): " - -#, fuzzy -msgid "Select signature check option" -msgstr "추가할 인터페이스 선택" - -#, fuzzy -msgid "Select signature option" -msgstr "추가할 인터페이스 선택" - -msgid "Custom mirrors" -msgstr "" - -msgid "Defined" -msgstr "" - -#, fuzzy -msgid "Save user configuration (including disk layout)" -msgstr "사용자 구성 저장" - -#, fuzzy -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "저장할 구성의 디렉토리를 입력하세요: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" - -#, fuzzy -msgid "Saving {} configuration files to {}" -msgstr "구성 저장" - -#, fuzzy -msgid "Mirrors" -msgstr "미러 위치" - -#, fuzzy -msgid "Mirror regions" -msgstr "미러 위치" - -#, fuzzy -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - 최댓값 : {} ( {} 개의 병렬 다운로드 허용, 한 번에 {} 개의 다운로드 허용 )" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "잘못된 값입니다! 유효한 값으로 다시 시도해주세요 [1 부터 {} 까지, 비활성화 하려면 0]" - -msgid "Locales" -msgstr "" - -#, fuzzy -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "NetworkManager 사용 (GNOME 이나 KDE 에서 그래픽으로 인터넷을 구성하는 데 필요)" - -msgid "Total: {} / {}" -msgstr "" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "" - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "" - -#, fuzzy -msgid "Enter start (default: sector {}): " -msgstr "시작 섹터를 입력하세요 (백분율 또는 블록 번호, 기본값: {}): " - -#, fuzzy -msgid "Enter end (default: {}): " -msgstr "시작 섹터를 입력하세요 (백분율 또는 블록 번호, 기본값: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "" - -msgid "Path" -msgstr "" - -msgid "Manufacturer" -msgstr "" - -msgid "Product" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "수동 구성" - -msgid "Type" -msgstr "" - -#, fuzzy -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "이 옵션은 설치 중에 발생할 수 있는 병렬 다운로드 수를 활성화합니다" - -#, fuzzy -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"활성화할 병렬 다운로드 수를 입력하세요.\n" -" (1 부터 {} 까지의 숫자중 하나를 입력하세요)\n" -"메모:" - -#, fuzzy, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - 최댓값 : {} ( {} 개의 병렬 다운로드 허용, 한 번에 {} 개의 다운로드 허용 )" - -#, fuzzy -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - 비활성화/기본 : - ( 병렬 다운로드 비활성화, 한 번에 1 개의 다운로드만 허용 )" - -#, fuzzy -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "잘못된 값입니다! 유효한 값으로 다시 시도해주세요 [1 부터 {} 까지, 비활성화 하려면 0]" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "" - -#, fuzzy -msgid "Would you like to use unified kernel images?" -msgstr "zram에서 스왑을 사용하시겠습니까?" - -msgid "Unified kernel images" -msgstr "" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "" - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "" - -#, fuzzy -msgid "Selected profiles: " -msgstr "인터페이스 제거" - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "" - -#, fuzzy -msgid "Mark/Unmark as nodatacow" -msgstr "파티션을 압축된 것으로 표시/표시 해제(btrfs만 해당)" - -#, fuzzy -msgid "Would you like to use compression or disable CoW?" -msgstr "BTRFS 압축을 사용하시겠습니까?" - -msgid "Use compression" -msgstr "" - -msgid "Disable Copy-on-Write" -msgstr "" - -#, fuzzy -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "gnome, kde, sway 같은 다양한 데스크탑 환경 및 타일링 창 관리자를 제공합니다" - -#, fuzzy, python-brace-format -msgid "Configuration type: {}" -msgstr "구성 없음" - -#, fuzzy -msgid "LVM configuration type" -msgstr "구성 없음" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "" - -#, fuzzy -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "NetworkManager 사용 (GNOME 이나 KDE 에서 그래픽으로 인터넷을 구성하는 데 필요)" - -#, fuzzy -msgid "Select a LVM option" -msgstr "시간대를 선택하세요" - -#, fuzzy -msgid "Partitioning" -msgstr "수동 구성" - -msgid "Logical Volume Management (LVM)" -msgstr "" - -msgid "Physical volumes" -msgstr "" - -msgid "Volumes" -msgstr "" - -#, fuzzy -msgid "LVM volumes" -msgstr "하위 볼륨 제거" - -#, fuzzy -msgid "LVM volumes to be encrypted" -msgstr "암호화할 파티션을 선택하세요:" - -#, fuzzy -msgid "Select which LVM volumes to encrypt" -msgstr "암호화할 파티션을 선택하세요:" - -#, fuzzy -msgid "Default layout" -msgstr "디스크 레이아웃" - -#, fuzzy -msgid "No Encryption" -msgstr "비밀번호 암호화" - -msgid "LUKS" -msgstr "" - -msgid "LVM on LUKS" -msgstr "" - -msgid "LUKS on LVM" -msgstr "" - -#, fuzzy -msgid "Yes" -msgstr "예" - -msgid "No" -msgstr "" - -#, fuzzy -msgid "Archinstall help" -msgstr "Archinstall 언어" - -#, fuzzy -msgid " (default)" -msgstr "(기본)" - -msgid "Press Ctrl+h for help" -msgstr "" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "" - -msgid "Seat access" -msgstr "" - -#, fuzzy -msgid "Mountpoint" -msgstr "파티션에 대한 마운트 지점 할당" - -msgid "HSM" -msgstr "" - -#, fuzzy -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "디스크를 암호화할 암호를 입력하세요 (암호화하지 않으려면 비워 둠): " - -#, fuzzy -msgid "Disk encryption password" -msgstr "비밀번호 암호화" - -#, fuzzy -msgid "Partition - New" -msgstr "수동 구성" - -msgid "Filesystem" -msgstr "" - -msgid "Invalid size" -msgstr "" - -#, fuzzy -msgid "Start (default: sector {}): " -msgstr "시작 섹터를 입력하세요 (백분율 또는 블록 번호, 기본값: {}): " - -#, fuzzy -msgid "End (default: {}): " -msgstr "시작 섹터를 입력하세요 (백분율 또는 블록 번호, 기본값: {}): " - -#, fuzzy -msgid "Subvolume name" -msgstr "하위 볼륨 이름 " - -#, fuzzy -msgid "Disk configuration type" -msgstr "구성 없음" - -msgid "Root mount directory" -msgstr "" - -#, fuzzy -msgid "Select language" -msgstr "로케일 언어" - -#, fuzzy -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "설치할 추가 패키지 작성하세요 (띄어쓰기로 구분, 건너뛰려면 공백): " - -msgid "Invalid download number" -msgstr "" - -msgid "Number downloads" -msgstr "" - -#, fuzzy -msgid "The username you entered is invalid" -msgstr "입력한 사용자 이름이 잘못되었습니다. 다시 시도하세요" - -#, fuzzy -msgid "Username" -msgstr "사용자명 : " - -#, fuzzy, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "\"{}\"은(는) 슈퍼유저여야 합니까 (sudo)?" - -#, fuzzy -msgid "Interfaces" -msgstr "인터페이스 추가" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "" - -msgid "Modes" -msgstr "" - -msgid "IP address" -msgstr "" - -#, fuzzy -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "게이트웨이(라우터) IP 주소를 입력하시거나 공백으로 두세요: " - -msgid "Gateway address" -msgstr "" - -#, fuzzy -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "DNS 서버를 입력하세요 (띄어쓰기로 구분, 없는 경우 공백): " - -#, fuzzy -msgid "DNS servers" -msgstr "오디오 서버가 없습니다" - -#, fuzzy -msgid "Configure interfaces" -msgstr "구성된 {} 인터페이스" - -#, fuzzy -msgid "Kernel" -msgstr "커널" - -msgid "UEFI is not detected and some options are disabled" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "" - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "" - -#, fuzzy -msgid "Main profile" -msgstr "프로필" - -#, fuzzy -msgid "Confirm password" -msgstr "비밀번호 변경" - -msgid "The confirmation password did not match, please try again" -msgstr "" - -#, fuzzy -msgid "Not a valid directory" -msgstr "올바른 디렉터리가 아닙니다: {}" - -#, fuzzy -msgid "Would you like to continue?" -msgstr "BTRFS 압축을 사용하시겠습니까?" - -msgid "Directory" -msgstr "" - -#, fuzzy -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "저장할 구성의 디렉토리를 입력하세요: " - -#, fuzzy, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "구성 저장" - -msgid "Enabled" -msgstr "" - -msgid "Disabled" -msgstr "" - -#, fuzzy -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " 이 문제(및 파일)를 https://github.com/archlinux/archinstall/issues 에 제출하세요" - -#, fuzzy -msgid "Mirror name" -msgstr "미러 위치" - -msgid "Url" -msgstr "" - -#, fuzzy -msgid "Select signature check" -msgstr "추가할 인터페이스 선택" - -#, fuzzy -msgid "Select execution mode" -msgstr "'{}' 에 대한 작업 선택" - -msgid "Press ? for help" -msgstr "" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "" - -#, fuzzy -msgid "Additional repositories" -msgstr "선택적 저장소" - -msgid "NTP" -msgstr "" - -msgid "Swap on zram" -msgstr "" - -msgid "Name" -msgstr "" - -#, fuzzy -msgid "Signature check" -msgstr "추가할 인터페이스 선택" - -#, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "" - -#, python-brace-format -msgid "Size: {} / {}" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Size (default: {}): " -msgstr "시작 섹터를 입력하세요 (백분율 또는 블록 번호, 기본값: {}): " - -#, fuzzy -msgid "HSM device" -msgstr "장치" - -msgid "Some packages could not be found in the repository" -msgstr "" - -#, fuzzy -msgid "User" -msgstr "사용자명 : " - -msgid "The specified configuration will be applied" -msgstr "" - -msgid "Wipe" -msgstr "" - -#, fuzzy -msgid "Mark/Unmark as XBOOTLDR" -msgstr "파티션을 압축된 것으로 표시/표시 해제(btrfs만 해당)" - -#, fuzzy -msgid "Loading packages..." -msgstr "추가 패키지" - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "" - -#, fuzzy -msgid "Add a custom repository" -msgstr "사용자 추가" - -msgid "Change custom repository" -msgstr "" - -msgid "Delete custom repository" -msgstr "" - -#, fuzzy -msgid "Repository name" -msgstr "미러 위치" - -#, fuzzy -msgid "Add a custom server" -msgstr "사용자 추가" - -#, fuzzy -msgid "Change custom server" -msgstr "오디오 서버를 선택하세요" - -#, fuzzy -msgid "Delete custom server" -msgstr "사용자 제거" - -msgid "Server url" -msgstr "" - -#, fuzzy -msgid "Select regions" -msgstr "추가할 인터페이스 선택" - -#, fuzzy -msgid "Add custom servers" -msgstr "사용자 추가" - -#, fuzzy -msgid "Add custom repository" -msgstr "사용자 추가" - -#, fuzzy -msgid "Loading mirror regions..." -msgstr "미러 위치" - -#, fuzzy -msgid "Mirrors and repositories" -msgstr "선택적 저장소" - -#, fuzzy -msgid "Selected mirror regions" -msgstr "미러 위치" - -#, fuzzy -msgid "Custom servers" -msgstr "오디오 서버가 없습니다" - -#, fuzzy -msgid "Custom repositories" -msgstr "선택적 저장소" - -msgid "Only ASCII characters are supported" -msgstr "" - -msgid "Show help" -msgstr "" - -msgid "Exit help" -msgstr "" - -msgid "Preview scroll up" -msgstr "" - -msgid "Preview scroll down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move right" -msgstr "" - -msgid "Move left" -msgstr "" - -msgid "Jump to entry" -msgstr "" - -msgid "Skip selection (if available)" -msgstr "" - -msgid "Reset selection (if available)" -msgstr "" - -#, fuzzy -msgid "Select on single select" -msgstr "추가할 인터페이스 선택" - -#, fuzzy -msgid "Select on multi select" -msgstr "시간대를 선택하세요" - -msgid "Reset" -msgstr "" - -#, fuzzy -msgid "Skip selection menu" -msgstr "'{}' 에 대한 작업 선택" - -msgid "Start search mode" -msgstr "" - -msgid "Exit search mode" -msgstr "" - -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "Choose an option to give labwc access to your hardware" -msgstr "" - -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "Choose an option to give niri access to your hardware" -msgstr "" - -#, fuzzy -msgid "Mark/Unmark as ESP" -msgstr "파티션을 압축된 것으로 표시/표시 해제(btrfs만 해당)" - -msgid "Package group:" -msgstr "" - -#, fuzzy -msgid "Exit archinstall" -msgstr "Archinstall 언어" - -msgid "Reboot system" -msgstr "" - -#, fuzzy -msgid "chroot into installation for post-installation configurations" -msgstr "새로 생성된 설치로 chroot 하고 설치 후 구성을 수행하시겠습니까?" - -msgid "Installation completed" -msgstr "" - -#, fuzzy -msgid "What would you like to do next?" -msgstr "BTRFS 압축을 사용하시겠습니까?" - -#, fuzzy, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "\"{}\" 에 대해 구성할 모드를 선택하거나 기본 모드 \"{}\" 을(를) 사용하도록 건너뛰세요" - -#, fuzzy -msgid "Incorrect credentials file decryption password" -msgstr "비밀번호 암호화" - -#, fuzzy -msgid "Incorrect password" -msgstr "루트 비밀번호" - -#, fuzzy -msgid "Credentials file decryption password" -msgstr "비밀번호 암호화" - -#, fuzzy -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "구성 저장" - -#, fuzzy -msgid "Credentials file encryption password" -msgstr "비밀번호 암호화" - -#, fuzzy, python-brace-format -msgid "Repositories: {}" -msgstr "미러 위치" - -msgid "New version available" -msgstr "" - -#, fuzzy -msgid "Passwordless login" -msgstr "루트 비밀번호" - -msgid "Second factor login" -msgstr "" - -msgid "Bluetooth" -msgstr "" - -#, fuzzy -msgid "Would you like to configure Bluetooth?" -msgstr "BTRFS 압축을 사용하시겠습니까?" - -msgid "Authentication" -msgstr "" - -msgid "Applications" -msgstr "" - -msgid "U2F login method: " -msgstr "" - -msgid "Passwordless sudo: " -msgstr "" - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "" - -msgid "Syncing the system..." -msgstr "" - -msgid "Value cannot be empty" -msgstr "" - -msgid "Snapshot type" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Snapshot type: {}" -msgstr "구성 없음" - -msgid "U2F login setup" -msgstr "" - -msgid "No U2F devices found" -msgstr "" - -msgid "U2F Login Method" -msgstr "" - -#, fuzzy -msgid "Enable passwordless sudo?" -msgstr "비밀번호를 입력하세요: " - -#, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "" - -msgid "Starting device modifications in " -msgstr "" - -#, fuzzy -msgid "No network connection found" -msgstr "네트워크 구성 없음" - -#, fuzzy -msgid "Would you like to connect to a Wifi?" -msgstr "BTRFS 압축을 사용하시겠습니까?" - -#, fuzzy -msgid "No wifi interface found" -msgstr "구성된 {} 인터페이스" - -#, fuzzy -msgid "Select wifi network to connect to" -msgstr "구성할 네트워크 인터페이스를 하나 선택하세요" - -msgid "Scanning wifi networks..." -msgstr "" - -#, fuzzy -msgid "No wifi networks found" -msgstr "네트워크 구성 없음" - -msgid "Failed setting up wifi" -msgstr "" - -#, fuzzy -msgid "Enter wifi password" -msgstr "비밀번호를 입력하세요: " - -msgid "Ok" -msgstr "" diff --git a/examples/archinstall/archinstall/locales/languages.json b/examples/archinstall/archinstall/locales/languages.json deleted file mode 100644 index afaa1ae..0000000 --- a/examples/archinstall/archinstall/locales/languages.json +++ /dev/null @@ -1,186 +0,0 @@ -[{"abbr": "aa", "lang": "Afar"}, - {"abbr": "ab", "lang": "Abkhazian"}, - {"abbr": "af", "lang": "Afrikaans"}, - {"abbr": "ak", "lang": "Akan"}, - {"abbr": "am", "lang": "Amharic"}, - {"abbr": "ar", "lang": "Arabic"}, - {"abbr": "an", "lang": "Aragonese"}, - {"abbr": "as", "lang": "Assamese"}, - {"abbr": "av", "lang": "Avaric"}, - {"abbr": "ae", "lang": "Avestan"}, - {"abbr": "ay", "lang": "Aymara"}, - {"abbr": "az", "lang": "Azerbaijani"}, - {"abbr": "ba", "lang": "Bashkir"}, - {"abbr": "bm", "lang": "Bambara"}, - {"abbr": "be", "lang": "Belarusian"}, - {"abbr": "bn", "lang": "Bengali"}, - {"abbr": "bi", "lang": "Bislama"}, - {"abbr": "bo", "lang": "Tibetan"}, - {"abbr": "bs", "lang": "Bosnian"}, - {"abbr": "br", "lang": "Breton"}, - {"abbr": "bg", "lang": "Bulgarian"}, - {"abbr": "ca", "lang": "Catalan"}, - {"abbr": "cs", "lang": "Czech", "translated_lang": "čeština"}, - {"abbr": "ch", "lang": "Chamorro"}, - {"abbr": "ce", "lang": "Chechen"}, - {"abbr": "cu", "lang": "Church Slavic"}, - {"abbr": "cv", "lang": "Chuvash"}, - {"abbr": "kw", "lang": "Cornish"}, - {"abbr": "co", "lang": "Corsican"}, - {"abbr": "cr", "lang": "Cree"}, - {"abbr": "cy", "lang": "Welsh"}, - {"abbr": "da", "lang": "Danish", "translated_lang": "Dansk"}, - {"abbr": "de", "lang": "German", "translated_lang": "Deutsch"}, - {"abbr": "dv", "lang": "Dhivehi"}, - {"abbr": "dz", "lang": "Dzongkha"}, - {"abbr": "el", "lang": "Modern Greek (1453-)", "translated_lang": "Ελληνικά"}, - {"abbr": "en", "lang": "English"}, - {"abbr": "eo", "lang": "Esperanto"}, - {"abbr": "et", "lang": "Estonian", "translated_lang": "Eesti" }, - {"abbr": "eu", "lang": "Basque"}, - {"abbr": "ee", "lang": "Ewe"}, - {"abbr": "fo", "lang": "Faroese"}, - {"abbr": "fa", "lang": "Persian"}, - {"abbr": "fj", "lang": "Fijian"}, - {"abbr": "fi", "lang": "Finnish"}, - {"abbr": "fr", "lang": "French", "translated_lang": "Français"}, - {"abbr": "fy", "lang": "Western Frisian"}, - {"abbr": "ff", "lang": "Fulah"}, - {"abbr": "gd", "lang": "Scottish Gaelic"}, - {"abbr": "ga", "lang": "Irish"}, - {"abbr": "gl", "lang": "Galician"}, - {"abbr": "gv", "lang": "Manx"}, - {"abbr": "gn", "lang": "Guarani"}, - {"abbr": "gu", "lang": "Gujarati"}, - {"abbr": "ht", "lang": "Haitian"}, - {"abbr": "ha", "lang": "Hausa"}, - {"abbr": "sh", "lang": "Serbo-Croatian"}, - {"abbr": "he", "lang": "Hebrew"}, - {"abbr": "hz", "lang": "Herero"}, - {"abbr": "hi", "lang": "Hindi"}, - {"abbr": "ho", "lang": "Hiri Motu"}, - {"abbr": "hr", "lang": "Croatian"}, - {"abbr": "hu", "lang": "Hungarian"}, - {"abbr": "hy", "lang": "Armenian"}, - {"abbr": "ig", "lang": "Igbo"}, - {"abbr": "io", "lang": "Ido"}, - {"abbr": "ii", "lang": "Sichuan Yi"}, - {"abbr": "iu", "lang": "Inuktitut"}, - {"abbr": "ie", "lang": "Interlingue"}, - {"abbr": "ia", "lang": "Interlingua (International Auxiliary Language Association)"}, - {"abbr": "id", "lang": "Indonesian", "translated_lang": "Indonesian"}, - {"abbr": "ik", "lang": "Inupiaq"}, - {"abbr": "is", "lang": "Icelandic"}, - {"abbr": "it", "lang": "Italian", "translated_lang": "Italiano"}, - {"abbr": "jv", "lang": "Javanese"}, - {"abbr": "ja", "lang": "Japanese"}, - {"abbr": "kl", "lang": "Kalaallisut"}, - {"abbr": "kn", "lang": "Kannada"}, - {"abbr": "ks", "lang": "Kashmiri"}, - {"abbr": "ka", "lang": "Georgian"}, - {"abbr": "kr", "lang": "Kanuri"}, - {"abbr": "kk", "lang": "Kazakh"}, - {"abbr": "km", "lang": "Central Khmer"}, - {"abbr": "ki", "lang": "Kikuyu"}, - {"abbr": "rw", "lang": "Kinyarwanda"}, - {"abbr": "ky", "lang": "Kirghiz"}, - {"abbr": "kv", "lang": "Komi"}, - {"abbr": "kg", "lang": "Kongo"}, - {"abbr": "ko", "lang": "Korean", "translated_lang": "한글", "external_dep": true}, - {"abbr": "kj", "lang": "Kuanyama"}, - {"abbr": "ku", "lang": "Kurdish"}, - {"abbr": "lo", "lang": "Lao"}, - {"abbr": "la", "lang": "Latin"}, - {"abbr": "lv", "lang": "Latvian"}, - {"abbr": "li", "lang": "Limburgan"}, - {"abbr": "ln", "lang": "Lingala"}, - {"abbr": "lt", "lang": "Lithuanian", "translated_lang": "Lietuvių"}, - {"abbr": "lb", "lang": "Luxembourgish"}, - {"abbr": "lu", "lang": "Luba-Katanga"}, - {"abbr": "lg", "lang": "Ganda"}, - {"abbr": "mh", "lang": "Marshallese"}, - {"abbr": "ml", "lang": "Malayalam"}, - {"abbr": "mr", "lang": "Marathi"}, - {"abbr": "mk", "lang": "Macedonian"}, - {"abbr": "mg", "lang": "Malagasy"}, - {"abbr": "mt", "lang": "Maltese"}, - {"abbr": "mn", "lang": "Mongolian"}, - {"abbr": "mi", "lang": "Maori"}, - {"abbr": "ms", "lang": "Malay (macrolanguage)"}, - {"abbr": "my", "lang": "Burmese"}, - {"abbr": "na", "lang": "Nauru"}, - {"abbr": "nv", "lang": "Navajo"}, - {"abbr": "nr", "lang": "South Ndebele"}, - {"abbr": "nd", "lang": "North Ndebele"}, - {"abbr": "ng", "lang": "Ndonga"}, - {"abbr": "ne", "lang": "Nepali (macrolanguage)"}, - {"abbr": "nl", "lang": "Dutch", "translated_lang": "Nederlands"}, - {"abbr": "nn", "lang": "Norwegian Nynorsk"}, - {"abbr": "nb", "lang": "Norwegian Bokmål"}, - {"abbr": "no", "lang": "Norwegian"}, - {"abbr": "ny", "lang": "Nyanja"}, - {"abbr": "oc", "lang": "Occitan (post 1500)"}, - {"abbr": "oj", "lang": "Ojibwa"}, - {"abbr": "or", "lang": "Oriya (macrolanguage)"}, - {"abbr": "om", "lang": "Oromo"}, - {"abbr": "os", "lang": "Ossetian"}, - {"abbr": "pa", "lang": "Panjabi"}, - {"abbr": "pi", "lang": "Pali"}, - {"abbr": "pl", "lang": "Polish", "translated_lang": "Polski"}, - {"abbr": "pt", "lang": "Portuguese", "translated_lang": "Português"}, - {"abbr": "pt_BR", "lang": "Brazilian Portuguese", "translated_lang": "Português do Brasil"}, - {"abbr": "ps", "lang": "Pushto"}, - {"abbr": "qu", "lang": "Quechua"}, - {"abbr": "rm", "lang": "Romansh"}, - {"abbr": "ro", "lang": "Romanian", "translated_lang": "Română"}, - {"abbr": "rn", "lang": "Rundi"}, - {"abbr": "ru", "lang": "Russian", "translated_lang": "Русский"}, - {"abbr": "sg", "lang": "Sango"}, - {"abbr": "sa", "lang": "Sanskrit"}, - {"abbr": "si", "lang": "Sinhala"}, - {"abbr": "sk", "lang": "Slovak"}, - {"abbr": "sl", "lang": "Slovenian"}, - {"abbr": "se", "lang": "Northern Sami"}, - {"abbr": "sm", "lang": "Samoan"}, - {"abbr": "sn", "lang": "Shona"}, - {"abbr": "sd", "lang": "Sindhi"}, - {"abbr": "so", "lang": "Somali"}, - {"abbr": "st", "lang": "Southern Sotho"}, - {"abbr": "es", "lang": "Spanish", "translated_lang": "Español"}, - {"abbr": "sq", "lang": "Albanian"}, - {"abbr": "sc", "lang": "Sardinian"}, - {"abbr": "sr", "lang": "Serbian"}, - {"abbr": "ss", "lang": "Swati"}, - {"abbr": "su", "lang": "Sundanese"}, - {"abbr": "sw", "lang": "Swahili (macrolanguage)"}, - {"abbr": "sv", "lang": "Swedish", "translated_lang": "Svenska"}, - {"abbr": "ty", "lang": "Tahitian"}, - {"abbr": "ta", "lang": "Tamil", "translated_lang": "தமிழ்"}, - {"abbr": "tt", "lang": "Tatar"}, - {"abbr": "te", "lang": "Telugu"}, - {"abbr": "tg", "lang": "Tajik"}, - {"abbr": "tl", "lang": "Tagalog"}, - {"abbr": "th", "lang": "Thai"}, - {"abbr": "ti", "lang": "Tigrinya"}, - {"abbr": "to", "lang": "Tonga (Tonga Islands)"}, - {"abbr": "tn", "lang": "Tswana"}, - {"abbr": "ts", "lang": "Tsonga"}, - {"abbr": "tk", "lang": "Turkmen"}, - {"abbr": "tr", "lang": "Turkish", "translated_lang" : "Türkçe"}, - {"abbr": "tw", "lang": "Twi"}, - {"abbr": "ug", "lang": "Uighur"}, - {"abbr": "uk", "lang": "Ukrainian"}, - {"abbr": "ur", "lang": "Urdu", "translated_lang": "اردو"}, - {"abbr": "uz", "lang": "Uzbek", "translated_lang": "O'zbek"}, - {"abbr": "ve", "lang": "Venda"}, - {"abbr": "vi", "lang": "Vietnamese"}, - {"abbr": "vo", "lang": "Volapük"}, - {"abbr": "wa", "lang": "Walloon"}, - {"abbr": "wo", "lang": "Wolof"}, - {"abbr": "xh", "lang": "Xhosa"}, - {"abbr": "yi", "lang": "Yiddish"}, - {"abbr": "yo", "lang": "Yoruba"}, - {"abbr": "za", "lang": "Zhuang"}, - {"abbr": "zh-CN", "lang": "Simplified Chinese", "translated_lang": "简体中文"}, - {"abbr": "zh-TW", "lang": "Traditional Chinese", "translated_lang": "繁體中文"}, - {"abbr": "zu", "lang": "Zulu"}] diff --git a/examples/archinstall/archinstall/locales/locales_generator.sh b/examples/archinstall/archinstall/locales/locales_generator.sh deleted file mode 100755 index 7ce2ea1..0000000 --- a/examples/archinstall/archinstall/locales/locales_generator.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -cd $(dirname "$0")/.. - -function update_lang() { - file=${1} - - echo "Updating: ${file}" - path=$(dirname "${file}") - msgmerge --quiet --no-location --width 512 --backup none --update "${file}" locales/base.pot - msgfmt -o "${path}/base.mo" "${file}" -} - - -function generate_all() { - for file in $(find locales/ -name "base.po"); do - update_lang "${file}" - done -} - -function generate_single_lang() { - lang_file="locales/${1}/LC_MESSAGES/base.po" - - if [ ! -f "${lang_file}" ]; then - echo "Language files not found: ${lang_file}" - exit 1 - fi - - update_lang "${lang_file}" -} - - -if [ $# -eq 0 ]; then - echo "Usage: ${0} " - echo "Special case 'all' for builds all languages." - exit 1 -fi - -lang=${1} - -# Update the base file containing all translatable strings -find . -type f -iname "*.py" | xargs xgettext --join-existing --no-location --omit-header --keyword='tr' -d base -o locales/base.pot - -case "${lang}" in - "all") generate_all;; - *) generate_single_lang "${lang}" -esac diff --git a/examples/archinstall/archinstall/locales/lt/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/lt/LC_MESSAGES/base.mo deleted file mode 100644 index a98027c..0000000 Binary files a/examples/archinstall/archinstall/locales/lt/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/lt/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/lt/LC_MESSAGES/base.po deleted file mode 100644 index 6ebc307..0000000 --- a/examples/archinstall/archinstall/locales/lt/LC_MESSAGES/base.po +++ /dev/null @@ -1,1782 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Florijan Demidov https://github.com/FlorijanDem \n" -"Language-Team: \n" -"Language: lt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.3\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] Žurnalo failas įrašytas čia: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Prašome pateiktį šitą problemą (ir failą) https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "Ar jus noritė nutraukti?" - -msgid "And one more time for verification: " -msgstr "" - -msgid "Would you like to use swap on zram?" -msgstr "" - -msgid "Desired hostname for the installation: " -msgstr "" - -msgid "Username for required superuser with sudo privileges: " -msgstr "" - -msgid "Any additional users to install (leave blank for no users): " -msgstr "" - -msgid "Should this user be a superuser (sudoer)?" -msgstr "Ar noritė padarity šitą vartotoją supervartotoju (sudoer)" - -msgid "Select a timezone" -msgstr "Išrinkite laiko zona" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "Ar jus norėtum naudoti GRUB paleidyklė, o nė systemd-boot?" - -msgid "Choose a bootloader" -msgstr "Išrinkite paleidyklė" - -msgid "Choose an audio server" -msgstr "Išrinkite garso serverį" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Tiktai paketai tokie kaip: base, base-devel, linux, linux-firmware, efibootmgr ir neprivalomi paketai bus įdegtį." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "" - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "" - -msgid "Copy ISO network configuration to installation" -msgstr "" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "" - -msgid "Select one network interface to configure" -msgstr "" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "" - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "" - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "" - -msgid "Select which filesystem your main partition should use" -msgstr "" - -msgid "Current partition layout" -msgstr "" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" - -msgid "Enter a desired filesystem type for the partition" -msgstr "" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "" - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "" - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "" - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "" - -msgid "Archinstall language" -msgstr "Archinstall liežuvis" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "" - -msgid "Select what you wish to do with the selected block devices" -msgstr "" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "" - -msgid "Select keyboard layout" -msgstr "Išrinkite klaviatūros išdėstyma" - -msgid "Select one of the regions to download packages from" -msgstr "" - -msgid "Select one or more hard drives to use and configure" -msgstr "" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "" - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" - -msgid "All open-source (default)" -msgstr "" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "" - -msgid "Choose which locale language to use" -msgstr "" - -msgid "Choose which locale encoding to use" -msgstr "" - -msgid "Select one of the values shown below: " -msgstr "" - -msgid "Select one or more of the options below: " -msgstr "" - -msgid "Adding partition...." -msgstr "" - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "" - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "" - -msgid "Keyboard layout" -msgstr "" - -msgid "Mirror region" -msgstr "" - -msgid "Locale language" -msgstr "Lokalės liežuvis" - -msgid "Locale encoding" -msgstr "Lokalės koduotė" - -msgid "Drive(s)" -msgstr "" - -msgid "Disk layout" -msgstr "" - -msgid "Encryption password" -msgstr "" - -msgid "Swap" -msgstr "" - -msgid "Bootloader" -msgstr "Paleidyklė" - -msgid "Root password" -msgstr "Root Slaptažodis" - -msgid "Superuser account" -msgstr "Supervartotojo paskirą" - -msgid "User account" -msgstr "Vartotojo paskirą" - -msgid "Profile" -msgstr "Profilis" - -msgid "Audio" -msgstr "Garsas" - -msgid "Kernels" -msgstr "Branduoliai" - -msgid "Additional packages" -msgstr "" - -msgid "Network configuration" -msgstr "Tinklo konfigūraciją" - -msgid "Automatic time sync (NTP)" -msgstr "Automatinė laiko sinchonizaciją" - -msgid "Install ({} config(s) missing)" -msgstr "Įdiegti ({} config(s) missing)" - -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 "" - -msgid "Re-using partition instance: {}" -msgstr "" - -msgid "Create a new partition" -msgstr "Padariti naują skaidinį" - -msgid "Delete a partition" -msgstr "Šalinti skaidinį" - -msgid "Clear/Delete all partitions" -msgstr "Ištrinti/Šalinti visus skaidinius" - -msgid "Assign mount-point for a partition" -msgstr "" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "" - -msgid "Set desired filesystem for a partition" -msgstr "" - -msgid "Abort" -msgstr "Nutraukti" - -msgid "Hostname" -msgstr "Pagrindinio kompiuterio vardas" - -msgid "Not configured, unavailable unless setup manually" -msgstr "" - -msgid "Timezone" -msgstr "Laiko zona" - -msgid "Set/Modify the below options" -msgstr "" - -msgid "Install" -msgstr "Įdiegti" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "Naudokit ESC tam, kad praleistį\n" - -msgid "Suggest partition layout" -msgstr "" - -msgid "Enter a password: " -msgstr "Iveskite slaptažodžį" - -msgid "Enter a encryption password for {}" -msgstr "" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "" - -msgid "Create a required super-user with sudo privileges: " -msgstr "" - -msgid "Enter root password (leave blank to disable root): " -msgstr "" - -msgid "Password for user \"{}\": " -msgstr "Slaptažodis vartotojo \"{}\": " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "" - -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 "" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "" - -msgid "Use ESC to skip\n" -msgstr "Naudokit ESC tam, kad praleistį\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" - -msgid "Cancel" -msgstr "" - -msgid "Confirm and exit" -msgstr "" - -msgid "Add" -msgstr "Pridėti" - -msgid "Copy" -msgstr "Kopijuoti" - -msgid "Edit" -msgstr "Redaguoti" - -msgid "Delete" -msgstr "Pašalinti" - -msgid "Select an action for '{}'" -msgstr "" - -msgid "Copy to new key:" -msgstr "" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "" - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "" - -msgid "Choose which optional additional repositories to enable" -msgstr "" - -msgid "Add a user" -msgstr "Pridėti vartotoją" - -msgid "Change password" -msgstr "Pakeisti slaptažodžį" - -msgid "Promote/Demote user" -msgstr "" - -msgid "Delete User" -msgstr "Pašalinti vartotoją" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" - -msgid "User Name : " -msgstr "Vartotojo vardas :" - -msgid "Should {} be a superuser (sudoer)?" -msgstr "" - -msgid "Define users with sudo privilege: " -msgstr "" - -msgid "No network configuration" -msgstr "" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "" - -msgid "No configuration" -msgstr "Nėra konfigūracijos" - -msgid "Save user configuration" -msgstr "Išsaugoti vartotojo konfigūraciją" - -msgid "Save user credentials" -msgstr "" - -msgid "Save disk layout" -msgstr "" - -msgid "Save all" -msgstr "Išsaugoti viską" - -msgid "Choose which configuration to save" -msgstr "" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "" - -msgid "Not a valid directory: {}" -msgstr "" - -msgid "The password you are using seems to be weak," -msgstr "" - -msgid "are you sure you want to use it?" -msgstr "" - -msgid "Optional repositories" -msgstr "" - -msgid "Save configuration" -msgstr "Išsaugoti konfigūraciją" - -msgid "Missing configurations:\n" -msgstr "" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "" - -msgid "Manage superuser accounts: " -msgstr "" - -msgid "Manage ordinary user accounts: " -msgstr "" - -msgid " Subvolume :{:16}" -msgstr "" - -msgid " mounted at {:16}" -msgstr "" - -msgid " with option {}" -msgstr "" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" - -msgid "Subvolume name " -msgstr "" - -msgid "Subvolume mountpoint" -msgstr "" - -msgid "Subvolume options" -msgstr "" - -msgid "Save" -msgstr "Išsaugoti" - -msgid "Subvolume name :" -msgstr "" - -msgid "Select a mount point :" -msgstr "" - -msgid "Select the desired subvolume options " -msgstr "" - -msgid "Define users with sudo privilege, by username: " -msgstr "" - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "" - -msgid "Would you like to use BTRFS compression?" -msgstr "" - -msgid "Would you like to create a separate partition for /home?" -msgstr "" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "" - -msgid "Continue" -msgstr "Tęsti" - -msgid "yes" -msgstr "taip" - -msgid "no" -msgstr "nė" - -msgid "set: {}" -msgstr "" - -msgid "Manual configuration setting must be a list" -msgstr "" - -msgid "No iface specified for manual configuration" -msgstr "" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "" - -msgid "Add interface" -msgstr "" - -msgid "Edit interface" -msgstr "" - -msgid "Delete interface" -msgstr "" - -msgid "Select interface to add" -msgstr "" - -msgid "Manual configuration" -msgstr "" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "" - -msgid "Select your desired desktop environment" -msgstr "" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "" - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "" - -msgid "Press Enter to continue." -msgstr "Paspauskite Enter tam, kad tęstį." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "" - -msgid "Are you sure you want to reset this setting?" -msgstr "" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "" - -msgid "Save and exit" -msgstr "" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" - -msgid "No audio server" -msgstr "Bė garso serverio" - -msgid "(default)" -msgstr "" - -msgid "Use ESC to skip" -msgstr "Naudokit ESC tam, kad praleistį" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" - -msgid "Copy to: " -msgstr "Kopijuoti į: " - -msgid "Edit: " -msgstr "Redaguoti: " - -msgid "Key: " -msgstr "Raktas: " - -msgid "Edit {}: " -msgstr "Redaguoti {}: " - -msgid "Add: " -msgstr "Pridėti: " - -msgid "Value: " -msgstr "Reikšmė: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "" - -msgid "Select which partitions to mark for formatting:" -msgstr "" - -msgid "Use HSM to unlock encrypted drive" -msgstr "" - -msgid "Device" -msgstr "Įrenginys" - -msgid "Size" -msgstr "Didis" - -msgid "Free space" -msgstr "Laisva vietą" - -msgid "Bus-type" -msgstr "" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "" - -msgid "Enter username (leave blank to skip): " -msgstr "" - -msgid "The username you entered is invalid. Try again" -msgstr "" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "" - -msgid "Select which partitions to encrypt" -msgstr "" - -msgid "very weak" -msgstr "labai silpnas" - -msgid "weak" -msgstr "silpnas" - -msgid "moderate" -msgstr "vidutinis" - -msgid "strong" -msgstr "geras" - -msgid "Add subvolume" -msgstr "" - -msgid "Edit subvolume" -msgstr "" - -msgid "Delete subvolume" -msgstr "" - -msgid "Configured {} interfaces" -msgstr "" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr "" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr "" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr "" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "" - -msgid "Parallel Downloads" -msgstr "" - -msgid "ESC to skip" -msgstr "ESC tam, kad praleistį" - -msgid "CTRL+C to reset" -msgstr "" - -msgid "TAB to select" -msgstr "TAB tam, kad išrinktį" - -msgid "[Default value: 0] > " -msgstr "" - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "" - -msgid "The font should be stored as {}" -msgstr "" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "" - -msgid "Select an execution mode" -msgstr "" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "" - -msgid "Select one or more devices to use and configure" -msgstr "" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "" - -msgid "Existing Partitions" -msgstr "" - -msgid "Select a partitioning option" -msgstr "" - -msgid "Enter the root directory of the mounted devices: " -msgstr "" - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "" - -msgid "This is a list of pre-programmed profiles_bck, they might make it easier to install things like desktop environments" -msgstr "" - -msgid "Current profile selection" -msgstr "" - -msgid "Remove all newly added partitions" -msgstr "" - -msgid "Assign mountpoint" -msgstr "" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "" - -msgid "Mark/Unmark as bootable" -msgstr "" - -msgid "Change filesystem" -msgstr "" - -msgid "Mark/Unmark as compressed" -msgstr "" - -msgid "Set subvolumes" -msgstr "" - -msgid "Delete partition" -msgstr "Pašalinti skaidynį" - -msgid "Partition" -msgstr "Skaidinys" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "" - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "" - -msgid "Mountpoint: " -msgstr "" - -msgid "Current free sectors on device {}:" -msgstr "" - -msgid "Total sectors: {}" -msgstr "" - -msgid "Enter the start sector (default: {}): " -msgstr "" - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "" - -msgid "This will remove all newly added partitions, continue?" -msgstr "" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "" - -#, python-brace-format -msgid "Total length: {}" -msgstr "" - -msgid "Encryption type" -msgstr "" - -msgid "Iteration time" -msgstr "" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "" - -msgid "Higher values increase security but slow down boot time" -msgstr "" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "" - -msgid "Iteration time cannot be empty" -msgstr "" - -msgid "Iteration time must be at least 100ms" -msgstr "" - -msgid "Iteration time must be at most 120000ms" -msgstr "" - -msgid "Please enter a valid number" -msgstr "" - -msgid "Partitions" -msgstr "Skaidiniai" - -msgid "No HSM devices available" -msgstr "" - -msgid "Partitions to be encrypted" -msgstr "" - -msgid "Select disk encryption option" -msgstr "" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "" - -msgid "Use a best-effort default partition layout" -msgstr "" - -msgid "Manual Partitioning" -msgstr "" - -msgid "Pre-mounted configuration" -msgstr "" - -msgid "Unknown" -msgstr "Nežinomas" - -msgid "Partition encryption" -msgstr "" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr "" - -msgid "← Back" -msgstr "← Atgal" - -msgid "Disk encryption" -msgstr "" - -msgid "Configuration" -msgstr "" - -msgid "Password" -msgstr "Slaptažodis" - -msgid "All settings will be reset, are you sure?" -msgstr "" - -msgid "Back" -msgstr "Atgal" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "" - -msgid "The proprietary Nvidia driver is not supported by Sway. It is likely that you will run into issues, are you okay with that?" -msgstr "" - -msgid "Installed packages" -msgstr "Įdiegti paketus" - -msgid "Add profile" -msgstr "Pridėti profilį" - -msgid "Edit profile" -msgstr "Redaguoti profilį" - -msgid "Delete profile" -msgstr "Pašalinti profilį" - -msgid "Profile name: " -msgstr "Profilio vardas: " - -msgid "The profile name you entered is already in use. Try again" -msgstr "" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "" - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "" - -msgid "Should this profile be enabled for installation?" -msgstr "" - -msgid "Create your own" -msgstr "" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" - -msgid "Graphics driver" -msgstr "Vaizdo plokštės draiveris" - -msgid "Greeter" -msgstr "" - -msgid "Please chose which greeter to install" -msgstr "" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "" - -msgid "Disk configuration" -msgstr "Disko konfigūraciją" - -msgid "Profiles" -msgstr "" - -msgid "Finding possible directories to save configuration files ..." -msgstr "" - -msgid "Select directory (or directories) for saving configuration files" -msgstr "" - -msgid "Add a custom mirror" -msgstr "Pridėti savo 'custom mirror'" - -msgid "Change custom mirror" -msgstr "" - -msgid "Delete custom mirror" -msgstr "" - -msgid "Enter name (leave blank to skip): " -msgstr "" - -msgid "Enter url (leave blank to skip): " -msgstr "" - -msgid "Select signature check option" -msgstr "" - -msgid "Select signature option" -msgstr "" - -msgid "Custom mirrors" -msgstr "" - -msgid "Defined" -msgstr "" - -msgid "Save user configuration (including disk layout)" -msgstr "" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" - -msgid "Saving {} configuration files to {}" -msgstr "" - -msgid "Mirrors" -msgstr "" - -msgid "Mirror regions" -msgstr "" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr "" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "" - -msgid "Locales" -msgstr "Lokalės" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "" - -msgid "Total: {} / {}" -msgstr "Iš viso: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "" - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "" - -msgid "Enter start (default: sector {}): " -msgstr "" - -msgid "Enter end (default: {}): " -msgstr "" - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "" - -msgid "Path" -msgstr "" - -msgid "Manufacturer" -msgstr "" - -msgid "Product" -msgstr "" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "" - -msgid "Type" -msgstr "" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr "" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr "" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "" - -msgid "Would you like to use unified kernel images?" -msgstr "" - -msgid "Unified kernel images" -msgstr "" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "" - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "" - -#, fuzzy -msgid "Selected profiles: " -msgstr "Pašalinti profilį" - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "" - -msgid "Mark/Unmark as nodatacow" -msgstr "" - -msgid "Would you like to use compression or disable CoW?" -msgstr "" - -msgid "Use compression" -msgstr "" - -msgid "Disable Copy-on-Write" -msgstr "" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Configuration type: {}" -msgstr "Nėra konfigūracijos" - -#, fuzzy -msgid "LVM configuration type" -msgstr "Nėra konfigūracijos" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "" - -#, fuzzy -msgid "Select a LVM option" -msgstr "Išrinkite laiko zona" - -#, fuzzy -msgid "Partitioning" -msgstr "Skaidinys" - -msgid "Logical Volume Management (LVM)" -msgstr "" - -msgid "Physical volumes" -msgstr "" - -msgid "Volumes" -msgstr "" - -msgid "LVM volumes" -msgstr "" - -msgid "LVM volumes to be encrypted" -msgstr "" - -msgid "Select which LVM volumes to encrypt" -msgstr "" - -msgid "Default layout" -msgstr "" - -#, fuzzy -msgid "No Encryption" -msgstr "Nėra konfigūracijos" - -msgid "LUKS" -msgstr "" - -msgid "LVM on LUKS" -msgstr "" - -msgid "LUKS on LVM" -msgstr "" - -#, fuzzy -msgid "Yes" -msgstr "taip" - -msgid "No" -msgstr "" - -#, fuzzy -msgid "Archinstall help" -msgstr "Archinstall liežuvis" - -msgid " (default)" -msgstr "" - -msgid "Press Ctrl+h for help" -msgstr "" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "" - -msgid "Seat access" -msgstr "" - -msgid "Mountpoint" -msgstr "" - -msgid "HSM" -msgstr "" - -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "" - -msgid "Disk encryption password" -msgstr "" - -#, fuzzy -msgid "Partition - New" -msgstr "Skaidinys" - -msgid "Filesystem" -msgstr "" - -msgid "Invalid size" -msgstr "" - -msgid "Start (default: sector {}): " -msgstr "" - -msgid "End (default: {}): " -msgstr "" - -msgid "Subvolume name" -msgstr "" - -#, fuzzy -msgid "Disk configuration type" -msgstr "Disko konfigūraciją" - -msgid "Root mount directory" -msgstr "" - -#, fuzzy -msgid "Select language" -msgstr "Lokalės liežuvis" - -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "" - -msgid "Invalid download number" -msgstr "" - -msgid "Number downloads" -msgstr "" - -msgid "The username you entered is invalid" -msgstr "" - -#, fuzzy -msgid "Username" -msgstr "Vartotojo vardas :" - -#, fuzzy, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "Ar noritė padarity šitą vartotoją supervartotoju (sudoer)" - -msgid "Interfaces" -msgstr "" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "" - -msgid "Modes" -msgstr "" - -msgid "IP address" -msgstr "" - -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "" - -msgid "Gateway address" -msgstr "" - -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "" - -#, fuzzy -msgid "DNS servers" -msgstr "Bė garso serverio" - -msgid "Configure interfaces" -msgstr "" - -#, fuzzy -msgid "Kernel" -msgstr "Branduoliai" - -msgid "UEFI is not detected and some options are disabled" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "" - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "" - -#, fuzzy -msgid "Main profile" -msgstr "Redaguoti profilį" - -#, fuzzy -msgid "Confirm password" -msgstr "Pakeisti slaptažodžį" - -msgid "The confirmation password did not match, please try again" -msgstr "" - -msgid "Not a valid directory" -msgstr "" - -msgid "Would you like to continue?" -msgstr "" - -msgid "Directory" -msgstr "" - -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "" - -#, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "" - -msgid "Enabled" -msgstr "" - -msgid "Disabled" -msgstr "" - -#, fuzzy -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Prašome pateiktį šitą problemą (ir failą) https://github.com/archlinux/archinstall/issues" - -msgid "Mirror name" -msgstr "" - -msgid "Url" -msgstr "" - -msgid "Select signature check" -msgstr "" - -#, fuzzy -msgid "Select execution mode" -msgstr "Išrinkite laiko zona" - -msgid "Press ? for help" -msgstr "" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "" - -msgid "Additional repositories" -msgstr "" - -msgid "NTP" -msgstr "" - -msgid "Swap on zram" -msgstr "" - -msgid "Name" -msgstr "" - -msgid "Signature check" -msgstr "" - -#, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Size: {} / {}" -msgstr "Iš viso: {} / {}" - -#, python-brace-format -msgid "Size (default: {}): " -msgstr "" - -#, fuzzy -msgid "HSM device" -msgstr "Įrenginys" - -msgid "Some packages could not be found in the repository" -msgstr "" - -#, fuzzy -msgid "User" -msgstr "Vartotojo vardas :" - -msgid "The specified configuration will be applied" -msgstr "" - -msgid "Wipe" -msgstr "" - -msgid "Mark/Unmark as XBOOTLDR" -msgstr "" - -msgid "Loading packages..." -msgstr "" - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "" - -#, fuzzy -msgid "Add a custom repository" -msgstr "Pridėti savo 'custom mirror'" - -msgid "Change custom repository" -msgstr "" - -msgid "Delete custom repository" -msgstr "" - -#, fuzzy -msgid "Repository name" -msgstr "Pagrindinio kompiuterio vardas" - -#, fuzzy -msgid "Add a custom server" -msgstr "Pridėti savo 'custom mirror'" - -#, fuzzy -msgid "Change custom server" -msgstr "Išrinkite garso serverį" - -#, fuzzy -msgid "Delete custom server" -msgstr "Pašalinti vartotoją" - -msgid "Server url" -msgstr "" - -#, fuzzy -msgid "Select regions" -msgstr "Išrinkite laiko zona" - -#, fuzzy -msgid "Add custom servers" -msgstr "Pridėti savo 'custom mirror'" - -#, fuzzy -msgid "Add custom repository" -msgstr "Pridėti savo 'custom mirror'" - -msgid "Loading mirror regions..." -msgstr "" - -msgid "Mirrors and repositories" -msgstr "" - -#, fuzzy -msgid "Selected mirror regions" -msgstr "Pašalinti profilį" - -#, fuzzy -msgid "Custom servers" -msgstr "Bė garso serverio" - -msgid "Custom repositories" -msgstr "" - -msgid "Only ASCII characters are supported" -msgstr "" - -msgid "Show help" -msgstr "" - -msgid "Exit help" -msgstr "" - -msgid "Preview scroll up" -msgstr "" - -msgid "Preview scroll down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move right" -msgstr "" - -msgid "Move left" -msgstr "" - -msgid "Jump to entry" -msgstr "" - -msgid "Skip selection (if available)" -msgstr "" - -msgid "Reset selection (if available)" -msgstr "" - -msgid "Select on single select" -msgstr "" - -#, fuzzy -msgid "Select on multi select" -msgstr "Išrinkite laiko zona" - -msgid "Reset" -msgstr "" - -#, fuzzy -msgid "Skip selection menu" -msgstr "Išrinkite laiko zona" - -msgid "Start search mode" -msgstr "" - -msgid "Exit search mode" -msgstr "" - -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "Choose an option to give labwc access to your hardware" -msgstr "" - -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "Choose an option to give niri access to your hardware" -msgstr "" - -msgid "Mark/Unmark as ESP" -msgstr "" - -msgid "Package group:" -msgstr "" - -#, fuzzy -msgid "Exit archinstall" -msgstr "Archinstall liežuvis" - -msgid "Reboot system" -msgstr "" - -msgid "chroot into installation for post-installation configurations" -msgstr "" - -msgid "Installation completed" -msgstr "" - -msgid "What would you like to do next?" -msgstr "" - -#, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "" - -msgid "Incorrect credentials file decryption password" -msgstr "" - -#, fuzzy -msgid "Incorrect password" -msgstr "Root Slaptažodis" - -msgid "Credentials file decryption password" -msgstr "" - -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "" - -msgid "Credentials file encryption password" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Repositories: {}" -msgstr "Pagrindinio kompiuterio vardas" - -msgid "New version available" -msgstr "" - -#, fuzzy -msgid "Passwordless login" -msgstr "Slaptažodis" - -msgid "Second factor login" -msgstr "" - -msgid "Bluetooth" -msgstr "" - -msgid "Would you like to configure Bluetooth?" -msgstr "" - -msgid "Authentication" -msgstr "" - -msgid "Applications" -msgstr "" - -msgid "U2F login method: " -msgstr "" - -msgid "Passwordless sudo: " -msgstr "" - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "" - -msgid "Syncing the system..." -msgstr "" - -msgid "Value cannot be empty" -msgstr "" - -msgid "Snapshot type" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Snapshot type: {}" -msgstr "Nėra konfigūracijos" - -msgid "U2F login setup" -msgstr "" - -msgid "No U2F devices found" -msgstr "" - -msgid "U2F Login Method" -msgstr "" - -#, fuzzy -msgid "Enable passwordless sudo?" -msgstr "Iveskite slaptažodžį" - -#, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "" - -msgid "Starting device modifications in " -msgstr "" - -#, fuzzy -msgid "No network connection found" -msgstr "Tinklo konfigūraciją" - -msgid "Would you like to connect to a Wifi?" -msgstr "" - -msgid "No wifi interface found" -msgstr "" - -msgid "Select wifi network to connect to" -msgstr "" - -msgid "Scanning wifi networks..." -msgstr "" - -msgid "No wifi networks found" -msgstr "" - -msgid "Failed setting up wifi" -msgstr "" - -#, fuzzy -msgid "Enter wifi password" -msgstr "Iveskite slaptažodžį" - -msgid "Ok" -msgstr "" diff --git a/examples/archinstall/archinstall/locales/nl/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/nl/LC_MESSAGES/base.mo deleted file mode 100644 index df87ea9..0000000 Binary files a/examples/archinstall/archinstall/locales/nl/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/nl/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/nl/LC_MESSAGES/base.po deleted file mode 100644 index 8b5c56d..0000000 --- a/examples/archinstall/archinstall/locales/nl/LC_MESSAGES/base.po +++ /dev/null @@ -1,1972 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Heimen Stoffels \n" -"Language-Team: \n" -"Language: nl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.0.1\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] Er is een logboek aangemaakt: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Meld dit voorval (inclusief het logboek) op https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "Weet u zeker dat u wilt afbreken?" - -msgid "And one more time for verification: " -msgstr "Nog eenmaal ter verificatie: " - -msgid "Would you like to use swap on zram?" -msgstr "Wilt u wisselgeheugen i.c.m. zram gebruiken?" - -msgid "Desired hostname for the installation: " -msgstr "Standaard hostnaam van installatie: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "Gebruikersnaam van beheerder met sudo-rechten (vereist): " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "Andere toe te voegen gebruikers (laat leeg om niemand toe te voegen): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "Moet deze gebruiker beheerder (sudoer) worden?" - -msgid "Select a timezone" -msgstr "Kies een tijdzone" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "Wilt u GRUB gebruiken als opstartlader in plaats van systemd-boot?" - -msgid "Choose a bootloader" -msgstr "Kies een opstartlader" - -msgid "Choose an audio server" -msgstr "Kies een audioserver" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Er worden alleen basispakketten geïnstalleerd, zoals base, base-devel, linux, linux-firmware, efibootmgr en profielpakketten (optioneel)." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "Als u een webbrowser wenst, zoals Firefox of Chromium, dan kunt u dit handmatig aangeven." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "Typ de namen van te installeren pakketten (spatiegescheiden - laat leeg om over te slaan): " - -msgid "Copy ISO network configuration to installation" -msgstr "ISO-netwerkinstellingen overzetten naar fysieke installatie" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "NetworkManager gebruiken (benodigd om internetinstellingen grafisch in te stellen in GNOME en KDE)" - -msgid "Select one network interface to configure" -msgstr "Kies een in te stellen netwerkkaart" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "Geef aan welke modus moet worden gebruikt bij ‘{}’ of sla over om de standaardmodus (‘{}’) te gebruiken" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "Voer het ip-adres en subnet in van ‘{}’ (voorbeeld: 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "Voer uw eigen gateway-adres (router-ip-adres) in of laag leeg om over te slaan: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "Voer uw eigen dns-servers in (spatiegescheiden - laat leeg om over te slaan): " - -msgid "Select which filesystem your main partition should use" -msgstr "Kies het te gebruiken bestandssysteem van de hoofdpartitie" - -msgid "Current partition layout" -msgstr "Huidige partitie-indeling" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"Geef aan wat er moet worden gedaan met\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "Kies het gewenste bestandssysteem voor de partitie" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "" - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "" - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "‘{}’ bevat in behandeling zijnde partities, welke hierdoor worden verwijderd. Weet u zeker dat u wilt doorgaan?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"Selecteer te verwijderen partities op indexnummer" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"Selecteer aan te koppelen partities op indexnummer" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " *Partitie-aankoppelpunten zijn gekoppeld aan de fysieke installatie. Voorbeeld: ‘boot’ wordt ‘/boot’." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "Geef aan waar de partitie moet worden aangekoppeld (laat leeg om te verwijderen): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"Kies welke partitie moet worden gemaskeerd alvorens te formatteren" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"Kies welke partitie moet worden versleuteld" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"Kies welke partitie moet worden aangemerkt als opstartbaar" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"Kies op welke partitie een bestandssysteem moet worden ingesteld" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "Voer de naam in van het gewenste bestandssysteem: " - -msgid "Archinstall language" -msgstr "Archinstall-taal" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Alle geselecteerde schijven formatteren en best mogelijke partitie-indeling gebruiken" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Geef per schijf aan welke actie moet worden uitgevoerd (gevolgd door partitiegebruik)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "Geef aan wat er moet worden gedaan met de gekozen blokapparaten" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "Dit is een vooraf opgestelde lijst met profielen, welke het installeren van zaken als werkomgevingen vereenvoudigt" - -msgid "Select keyboard layout" -msgstr "Kies een toetsenbordindeling" - -msgid "Select one of the regions to download packages from" -msgstr "Geef aan uit welke regio pakketten moeten worden opgehaald" - -msgid "Select one or more hard drives to use and configure" -msgstr "Selecteer één of meer in te stellen harde schijven" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "Op AMD-hardware is het aanbevolen om alle opensource- of AMD-/ATI-opties te kiezen." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "Op Intel-hardware is het aanbevolen om alle opensource- of Intel-opties te kiezen.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Op Nvidia-hardware is het aanbevolen om het gesloten Nvidia-stuurprogramma te kiezen.\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Kies een grafisch stuurprogramma of laat leeg om alle opensource-stuurprogramma's te installeren" - -msgid "All open-source (default)" -msgstr "Alle opensource-stuurprogramma's (standaard)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "Kies de te installeren kernels of laat leeg om ‘{}’ te installeren" - -msgid "Choose which locale language to use" -msgstr "Kies de te gebruiken taal" - -msgid "Choose which locale encoding to use" -msgstr "Kies de te gebruiken taalvariant" - -msgid "Select one of the values shown below: " -msgstr "Kies één van onderstaande waarden: " - -msgid "Select one or more of the options below: " -msgstr "Kies één van onderstaande opties: " - -msgid "Adding partition...." -msgstr "Bezig met toevoegen van partitie…" - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "Voer een geldig bestandssysteemtype in om door te gaan. Bekijk voor meer informatie `man parted`." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Foutmelding: het opsommen van de profielen op {} leidde tot" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "Foutmelding: ‘{}’ kan niet gedecodeerd worden als json:" - -msgid "Keyboard layout" -msgstr "Toetsenbordindeling" - -msgid "Mirror region" -msgstr "Spiegelserverregio" - -msgid "Locale language" -msgstr "Taal" - -msgid "Locale encoding" -msgstr "Taalvariant" - -msgid "Drive(s)" -msgstr "Harde schijven" - -#, fuzzy -msgid "Disk layout" -msgstr "Schijfindeling vastleggen" - -#, fuzzy -msgid "Encryption password" -msgstr "Versleutelwachtwoord instellen" - -msgid "Swap" -msgstr "Wisselgeheugen" - -msgid "Bootloader" -msgstr "Opstartlader" - -#, fuzzy -msgid "Root password" -msgstr "Rootwachtwoord" - -msgid "Superuser account" -msgstr "Superuserrechten" - -msgid "User account" -msgstr "Gebruikersaccount" - -msgid "Profile" -msgstr "Profiel" - -msgid "Audio" -msgstr "Audio" - -msgid "Kernels" -msgstr "Kernels" - -msgid "Additional packages" -msgstr "Aanvullende pakketten" - -msgid "Network configuration" -msgstr "Netwerk instellen" - -msgid "Automatic time sync (NTP)" -msgstr "Automatische tijdsynchronisatie (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "Installeren ({} confirguratie(s) ontbreekt/ontbreken)" - -msgid "" -"You decided to skip harddrive selection\n" -"and will use whatever drive-setup is mounted at {} (experimental)\n" -"WARNING: Archinstall won't check the suitability of this setup\n" -"Do you wish to continue?" -msgstr "" -"U heeft de schijfkeuze overgeslagen.\n" -"Hierdoor zal de op {} aangekoppelde schijf worden gebruikt (experimenteel).\n" -"WAARSCHUWING: Archinstall controleert niet of deze schijf geschikt is.\n" -"Weet u zeker dat u wilt doorgaan?" - -msgid "Re-using partition instance: {}" -msgstr "De partitie op {} wordt hergebruikt" - -msgid "Create a new partition" -msgstr "Partitie aanmaken" - -msgid "Delete a partition" -msgstr "Partitie verwijderen" - -msgid "Clear/Delete all partitions" -msgstr "Alle partities verwijderen" - -msgid "Assign mount-point for a partition" -msgstr "Aankoppelpunt toekennen aan partitie" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "Partitie (de)markeren voor formatteren (alle gegevens worden gewist)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "Partitie (de)markeren voor versleuteling" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "Partitie (de)markeren als opstartbaar (automatisch voor /boot)" - -msgid "Set desired filesystem for a partition" -msgstr "Gewenste bestandssysteem van partitie instellen" - -msgid "Abort" -msgstr "Afbreken" - -msgid "Hostname" -msgstr "Hostnaam" - -msgid "Not configured, unavailable unless setup manually" -msgstr "Niet ingesteld en dus niet beschikbaar, tenzij handmatig ingesteld" - -msgid "Timezone" -msgstr "Tijdzone" - -msgid "Set/Modify the below options" -msgstr "Onderstaande opties instellen/aanpassen" - -msgid "Install" -msgstr "Installeren" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"Druk op Esc om over te slaan\n" -"\n" - -msgid "Suggest partition layout" -msgstr "Partitie-indeling voorstellen" - -msgid "Enter a password: " -msgstr "Voer een wachtwoord in: " - -msgid "Enter a encryption password for {}" -msgstr "Voer een versleutelwachtwoord in voor {}" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "Voer een versleutelwachtwoord in voor (laat leeg om niet te versleutelen): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "Beheerder met sudo-rechten toevoegen (vereist): " - -msgid "Enter root password (leave blank to disable root): " -msgstr "Voer een beheerderswachtwoord in (laat leeg om uit te schakelen): " - -msgid "Password for user \"{}\": " -msgstr "Wachtwoord van ‘{}’: " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "Bezig met verifiëren van aanvullende pakketten… (dit kan even duren)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "Wilt u automatische tijdsynchronisatie (NTP) met de standaard tijdservers gebruiken?\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 "" -"De hardwarematige tijd en andere gelijkaardige instelstappen kunnen vereist zijn om NTP te gebruiken.\n" -"Lees voor meer informatie de Arch-wiki." - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "Voer een gebruikersnaam in om een tweede account toe te voegen (laat leeg om over te slaan): " - -msgid "Use ESC to skip\n" -msgstr "Druk op Esc om over te slaan\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -" Kies een item van de lijst en kies vervolgens een van de beschikbare acties om uit te voeren" - -msgid "Cancel" -msgstr "Annuleren" - -msgid "Confirm and exit" -msgstr "Bevestigen en afsluiten" - -msgid "Add" -msgstr "Toevoegen" - -msgid "Copy" -msgstr "Kopiëren" - -msgid "Edit" -msgstr "Bewerken" - -msgid "Delete" -msgstr "Verwijderen" - -msgid "Select an action for '{}'" -msgstr "Kies een actie voor '{}'" - -msgid "Copy to new key:" -msgstr "Kopiëren naar nieuwe sleutel:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "Onbekend nic-type: {}. Mogelijke waarden zijn {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"Dit is de door u gekozen configuratie:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Pacman is al actief. Er wordt maximaal 10 minuten gewacht alvorens het opnieuw te proberen." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "De eerdere Pacman-vergrendeling is niet opgeheven. Sluit actieve Pacman-sessies af alvorens deze installatiewizard te gebruiken." - -msgid "Choose which optional additional repositories to enable" -msgstr "Geef aan welke aanvullende pakketbronnen dienen te worden gebruikt (optioneel)" - -#, fuzzy -msgid "Add a user" -msgstr "Gebruiker toevoegen" - -msgid "Change password" -msgstr "Wachtwoord wijzigen" - -msgid "Promote/Demote user" -msgstr "Gebruiker op-/afwaarderen" - -msgid "Delete User" -msgstr "Gebruiker verwijderen" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"Stel een nieuwe gebruiker in\n" - -msgid "User Name : " -msgstr "Gebruikersnaam: " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "Moet {} gebruiker een beheerder (sudoer) worden?" - -msgid "Define users with sudo privilege: " -msgstr "Gebruikersnamen van gebruikers met sudo-rechten: " - -msgid "No network configuration" -msgstr "Geen netwerkconfiguratie" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "Gewenste subvolumes op btrfs-partitie instellen" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"Kies op welke partitie de subvolumes dienen te worden ingesteld" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "Btrfs-subvolumes van huidige partitie beheren" - -msgid "No configuration" -msgstr "Geen configuratie" - -msgid "Save user configuration" -msgstr "Gebruikersconfiguratie vastleggen" - -msgid "Save user credentials" -msgstr "Aanmeldgegevens vastleggen" - -msgid "Save disk layout" -msgstr "Schijfindeling vastleggen" - -msgid "Save all" -msgstr "Alles opslaan" - -msgid "Choose which configuration to save" -msgstr "Geef aan welke configuratie er moet worden vastgelegd" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "Voer de naam in van de map waarin de configuratie(s) moet(en) worden vastgelegd: " - -msgid "Not a valid directory: {}" -msgstr "Ongeldige map: {}" - -msgid "The password you are using seems to be weak," -msgstr "Het gekozen wachtwoord is zwak." - -msgid "are you sure you want to use it?" -msgstr "Weet u zeker dat u het wilt gebruiken?" - -msgid "Optional repositories" -msgstr "Aanvullende pakketbronnen" - -msgid "Save configuration" -msgstr "Configuratie vastleggen" - -msgid "Missing configurations:\n" -msgstr "Ontbrekende configuraties:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "Stel een rootwachtwoord of minimaal één beheerder in" - -msgid "Manage superuser accounts: " -msgstr "Beheerdersaccounts beheren: " - -msgid "Manage ordinary user accounts: " -msgstr "Beheer reguliere gebruikersaccounts: " - -msgid " Subvolume :{:16}" -msgstr " Subvolume :{:16}" - -msgid " mounted at {:16}" -msgstr " aangekoppeld op {:16}" - -msgid " with option {}" -msgstr " met optie {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -" Voer de gewenste waarden van het nieuwe subvolume in\n" - -msgid "Subvolume name " -msgstr "Subvolumenaam " - -msgid "Subvolume mountpoint" -msgstr "Subvolume-aankoppelpunt" - -msgid "Subvolume options" -msgstr "Subvolume-opties" - -msgid "Save" -msgstr "Opslaan" - -msgid "Subvolume name :" -msgstr "Subvolumenaam:" - -msgid "Select a mount point :" -msgstr "Kies een aankoppelpunt:" - -msgid "Select the desired subvolume options " -msgstr "Stel gewenste subvolume-opties in " - -msgid "Define users with sudo privilege, by username: " -msgstr "Gebruikersnamen van gebruikers met sudo-rechten: " - -#, fuzzy, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] Er is een logboek aangemaakt: {} {}" - -#, fuzzy -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "Wilt u GRUB gebruiken als opstartlader in plaats van systemd-boot?" - -#, fuzzy -msgid "Would you like to use BTRFS compression?" -msgstr "Wilt u wisselgeheugen i.c.m. zram gebruiken?" - -#, fuzzy -msgid "Would you like to create a separate partition for /home?" -msgstr "Wilt u wisselgeheugen i.c.m. zram gebruiken?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "" - -msgid "Continue" -msgstr "" - -msgid "yes" -msgstr "" - -msgid "no" -msgstr "" - -msgid "set: {}" -msgstr "" - -msgid "Manual configuration setting must be a list" -msgstr "" - -#, fuzzy -msgid "No iface specified for manual configuration" -msgstr "Gebruikersconfiguratie vastleggen" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "" - -msgid "Add interface" -msgstr "" - -msgid "Edit interface" -msgstr "" - -#, fuzzy -msgid "Delete interface" -msgstr "Gebruiker verwijderen" - -#, fuzzy -msgid "Select interface to add" -msgstr "Kies een in te stellen netwerkkaart" - -#, fuzzy -msgid "Manual configuration" -msgstr "Configuratie vastleggen" - -#, fuzzy -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "Partitie (de)markeren voor versleuteling" - -#, fuzzy -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "Het gekozen wachtwoord is zwak." - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "" - -msgid "Select your desired desktop environment" -msgstr "" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "" - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "" - -msgid "Press Enter to continue." -msgstr "" - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "" - -#, fuzzy -msgid "Are you sure you want to reset this setting?" -msgstr "Weet u zeker dat u het wilt gebruiken?" - -#, fuzzy -msgid "Select one or more hard drives to use and configure\n" -msgstr "Selecteer één of meer in te stellen harde schijven" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "" - -#, fuzzy -msgid "Save and exit" -msgstr "Bevestigen en afsluiten" - -#, fuzzy -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "‘{}’ bevat in behandeling zijnde partities, welke hierdoor worden verwijderd. Weet u zeker dat u wilt doorgaan?" - -#, fuzzy -msgid "No audio server" -msgstr "Kies een audioserver" - -msgid "(default)" -msgstr "" - -#, fuzzy -msgid "Use ESC to skip" -msgstr "Druk op Esc om over te slaan\n" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" - -#, fuzzy -msgid "Copy to: " -msgstr "Kopiëren naar:" - -#, fuzzy -msgid "Edit: " -msgstr "Bewerken" - -msgid "Key: " -msgstr "" - -#, fuzzy -msgid "Edit {}: " -msgstr "Bewerken:" - -msgid "Add: " -msgstr "" - -#, fuzzy -msgid "Value: " -msgstr "Waarde:" - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "" - -#, fuzzy -msgid "Select which partitions to mark for formatting:" -msgstr "" -"{}\n" -"\n" -"Kies welke partitie moet worden gemaskeerd alvorens te formatteren" - -msgid "Use HSM to unlock encrypted drive" -msgstr "" - -msgid "Device" -msgstr "" - -msgid "Size" -msgstr "" - -msgid "Free space" -msgstr "" - -msgid "Bus-type" -msgstr "" - -#, fuzzy -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "Stel een rootwachtwoord of minimaal één beheerder in" - -#, fuzzy -msgid "Enter username (leave blank to skip): " -msgstr "Voer een gebruikersnaam in om een tweede account toe te voegen (laat leeg om over te slaan): " - -msgid "The username you entered is invalid. Try again" -msgstr "" - -#, fuzzy -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "Moet {} gebruiker een beheerder (sudoer) worden?" - -#, fuzzy -msgid "Select which partitions to encrypt" -msgstr "Kies welke partitie moet worden versleuteld" - -msgid "very weak" -msgstr "" - -msgid "weak" -msgstr "" - -msgid "moderate" -msgstr "" - -msgid "strong" -msgstr "" - -#, fuzzy -msgid "Add subvolume" -msgstr " Subvolume :{:16}" - -msgid "Edit subvolume" -msgstr "" - -#, fuzzy -msgid "Delete subvolume" -msgstr "Gebruiker verwijderen" - -msgid "Configured {} interfaces" -msgstr "" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr "" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr "" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr "" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "" - -msgid "Parallel Downloads" -msgstr "" - -#, fuzzy -msgid "ESC to skip" -msgstr "Druk op Esc om over te slaan\n" - -msgid "CTRL+C to reset" -msgstr "" - -msgid "TAB to select" -msgstr "" - -msgid "[Default value: 0] > " -msgstr "" - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "" - -msgid "The font should be stored as {}" -msgstr "" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "" - -#, fuzzy -msgid "Select an execution mode" -msgstr "Kies een actie voor '{}'" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "" - -#, fuzzy -msgid "Select one or more devices to use and configure" -msgstr "Selecteer één of meer in te stellen harde schijven" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "" - -#, fuzzy -msgid "Existing Partitions" -msgstr "Bezig met toevoegen van partitie…" - -#, fuzzy -msgid "Select a partitioning option" -msgstr "Partitie verwijderen" - -#, fuzzy -msgid "Enter the root directory of the mounted devices: " -msgstr "Voer de naam in van de map waarin de configuratie(s) moet(en) worden vastgelegd: " - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "" - -#, fuzzy -msgid "This is a list of pre-programmed profiles_bck, they might make it easier to install things like desktop environments" -msgstr "Dit is een vooraf opgestelde lijst met profielen, welke het installeren van zaken als werkomgevingen vereenvoudigt" - -#, fuzzy -msgid "Current profile selection" -msgstr "Huidige partitie-indeling" - -#, fuzzy -msgid "Remove all newly added partitions" -msgstr "Partitie aanmaken" - -#, fuzzy -msgid "Assign mountpoint" -msgstr "Aankoppelpunt toekennen aan partitie" - -#, fuzzy -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "Partitie (de)markeren voor formatteren (alle gegevens worden gewist)" - -msgid "Mark/Unmark as bootable" -msgstr "" - -msgid "Change filesystem" -msgstr "" - -#, fuzzy -msgid "Mark/Unmark as compressed" -msgstr "Partitie (de)markeren voor versleuteling" - -#, fuzzy -msgid "Set subvolumes" -msgstr "Gebruiker verwijderen" - -#, fuzzy -msgid "Delete partition" -msgstr "Partitie verwijderen" - -msgid "Partition" -msgstr "" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "" - -#, fuzzy -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " *Partitie-aankoppelpunten zijn gekoppeld aan de fysieke installatie. Voorbeeld: ‘boot’ wordt ‘/boot’." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "" - -msgid "Mountpoint: " -msgstr "" - -msgid "Current free sectors on device {}:" -msgstr "" - -#, fuzzy -msgid "Total sectors: {}" -msgstr "Ongeldige map: {}" - -#, fuzzy -msgid "Enter the start sector (default: {}): " -msgstr "Voer de beginsector in (percentage of bloknummer - standaard: {}): " - -#, fuzzy -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "Voer de eindsector in (percentage of bloknummer - bijvoorbeeld: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "" - -#, python-brace-format -msgid "Total length: {}" -msgstr "" - -#, fuzzy -msgid "Encryption type" -msgstr "Versleutelwachtwoord instellen" - -msgid "Iteration time" -msgstr "" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "" - -msgid "Higher values increase security but slow down boot time" -msgstr "" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "" - -msgid "Iteration time cannot be empty" -msgstr "" - -msgid "Iteration time must be at least 100ms" -msgstr "" - -msgid "Iteration time must be at most 120000ms" -msgstr "" - -msgid "Please enter a valid number" -msgstr "" - -msgid "Partitions" -msgstr "" - -msgid "No HSM devices available" -msgstr "" - -#, fuzzy -msgid "Partitions to be encrypted" -msgstr "Kies welke partitie moet worden versleuteld" - -#, fuzzy -msgid "Select disk encryption option" -msgstr "Kies een schijfindeling" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "" - -#, fuzzy -msgid "Use a best-effort default partition layout" -msgstr "Alle geselecteerde schijven formatteren en best mogelijke partitie-indeling gebruiken" - -#, fuzzy -msgid "Manual Partitioning" -msgstr "Configuratie vastleggen" - -#, fuzzy -msgid "Pre-mounted configuration" -msgstr "Geen configuratie" - -msgid "Unknown" -msgstr "" - -msgid "Partition encryption" -msgstr "" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr "" - -msgid "← Back" -msgstr "" - -msgid "Disk encryption" -msgstr "" - -#, fuzzy -msgid "Configuration" -msgstr "Geen configuratie" - -#, fuzzy -msgid "Password" -msgstr "Rootwachtwoord" - -#, fuzzy -msgid "All settings will be reset, are you sure?" -msgstr "‘{}’ bevat in behandeling zijnde partities, welke hierdoor worden verwijderd. Weet u zeker dat u wilt doorgaan?" - -msgid "Back" -msgstr "" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "" - -msgid "The proprietary Nvidia driver is not supported by Sway. It is likely that you will run into issues, are you okay with that?" -msgstr "" - -#, fuzzy -msgid "Installed packages" -msgstr "Aanvullende pakketten" - -#, fuzzy -msgid "Add profile" -msgstr "Profiel" - -#, fuzzy -msgid "Edit profile" -msgstr "Profiel" - -#, fuzzy -msgid "Delete profile" -msgstr "Gebruiker verwijderen" - -#, fuzzy -msgid "Profile name: " -msgstr "Profiel" - -msgid "The profile name you entered is already in use. Try again" -msgstr "" - -#, fuzzy -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "Typ de namen van te installeren pakketten (spatiegescheiden - laat leeg om over te slaan): " - -#, fuzzy -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "Typ de namen van te installeren pakketten (spatiegescheiden - laat leeg om over te slaan): " - -msgid "Should this profile be enabled for installation?" -msgstr "" - -msgid "Create your own" -msgstr "" - -#, fuzzy -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Kies een grafisch stuurprogramma of laat leeg om alle opensource-stuurprogramma's te installeren" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" - -msgid "Graphics driver" -msgstr "" - -msgid "Greeter" -msgstr "" - -msgid "Please chose which greeter to install" -msgstr "" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "" - -#, fuzzy -msgid "Disk configuration" -msgstr "Geen configuratie" - -#, fuzzy -msgid "Profiles" -msgstr "Profiel" - -msgid "Finding possible directories to save configuration files ..." -msgstr "" - -#, fuzzy -msgid "Select directory (or directories) for saving configuration files" -msgstr "Selecteer één of meer in te stellen harde schijven" - -#, fuzzy -msgid "Add a custom mirror" -msgstr "Gebruiker toevoegen" - -msgid "Change custom mirror" -msgstr "" - -msgid "Delete custom mirror" -msgstr "" - -#, fuzzy -msgid "Enter name (leave blank to skip): " -msgstr "Voer een gebruikersnaam in om een tweede account toe te voegen (laat leeg om over te slaan): " - -#, fuzzy -msgid "Enter url (leave blank to skip): " -msgstr "Voer een gebruikersnaam in om een tweede account toe te voegen (laat leeg om over te slaan): " - -#, fuzzy -msgid "Select signature check option" -msgstr "Kies een schijfindeling" - -#, fuzzy -msgid "Select signature option" -msgstr "Kies een schijfindeling" - -msgid "Custom mirrors" -msgstr "" - -msgid "Defined" -msgstr "" - -#, fuzzy -msgid "Save user configuration (including disk layout)" -msgstr "Gebruikersconfiguratie vastleggen" - -#, fuzzy -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "Voer de naam in van de map waarin de configuratie(s) moet(en) worden vastgelegd: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" - -#, fuzzy -msgid "Saving {} configuration files to {}" -msgstr "Configuratie vastleggen" - -#, fuzzy -msgid "Mirrors" -msgstr "Spiegelserverregio" - -#, fuzzy -msgid "Mirror regions" -msgstr "Spiegelserverregio" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr "" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "" - -msgid "Locales" -msgstr "" - -#, fuzzy -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "NetworkManager gebruiken (benodigd om internetinstellingen grafisch in te stellen in GNOME en KDE)" - -msgid "Total: {} / {}" -msgstr "" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "" - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "" - -#, fuzzy -msgid "Enter start (default: sector {}): " -msgstr "Voer de beginsector in (percentage of bloknummer - standaard: {}): " - -#, fuzzy -msgid "Enter end (default: {}): " -msgstr "Voer de beginsector in (percentage of bloknummer - standaard: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "" - -msgid "Path" -msgstr "" - -msgid "Manufacturer" -msgstr "" - -msgid "Product" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "Configuratie vastleggen" - -msgid "Type" -msgstr "" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr "" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr "" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "" - -#, fuzzy -msgid "Would you like to use unified kernel images?" -msgstr "Wilt u wisselgeheugen i.c.m. zram gebruiken?" - -msgid "Unified kernel images" -msgstr "" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "" - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "" - -#, fuzzy -msgid "Selected profiles: " -msgstr "Gebruiker verwijderen" - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "" - -#, fuzzy -msgid "Mark/Unmark as nodatacow" -msgstr "Partitie (de)markeren voor versleuteling" - -#, fuzzy -msgid "Would you like to use compression or disable CoW?" -msgstr "Wilt u wisselgeheugen i.c.m. zram gebruiken?" - -msgid "Use compression" -msgstr "" - -msgid "Disable Copy-on-Write" -msgstr "" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Configuration type: {}" -msgstr "Geen configuratie" - -#, fuzzy -msgid "LVM configuration type" -msgstr "Geen configuratie" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "" - -#, fuzzy -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "NetworkManager gebruiken (benodigd om internetinstellingen grafisch in te stellen in GNOME en KDE)" - -#, fuzzy -msgid "Select a LVM option" -msgstr "Kies een tijdzone" - -#, fuzzy -msgid "Partitioning" -msgstr "Configuratie vastleggen" - -msgid "Logical Volume Management (LVM)" -msgstr "" - -msgid "Physical volumes" -msgstr "" - -msgid "Volumes" -msgstr "" - -#, fuzzy -msgid "LVM volumes" -msgstr "Gebruiker verwijderen" - -#, fuzzy -msgid "LVM volumes to be encrypted" -msgstr "Kies welke partitie moet worden versleuteld" - -#, fuzzy -msgid "Select which LVM volumes to encrypt" -msgstr "Kies welke partitie moet worden versleuteld" - -#, fuzzy -msgid "Default layout" -msgstr "Schijfindeling vastleggen" - -#, fuzzy -msgid "No Encryption" -msgstr "Versleutelwachtwoord instellen" - -msgid "LUKS" -msgstr "" - -msgid "LVM on LUKS" -msgstr "" - -msgid "LUKS on LVM" -msgstr "" - -msgid "Yes" -msgstr "" - -msgid "No" -msgstr "" - -#, fuzzy -msgid "Archinstall help" -msgstr "Archinstall-taal" - -msgid " (default)" -msgstr "" - -msgid "Press Ctrl+h for help" -msgstr "" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "" - -msgid "Seat access" -msgstr "" - -#, fuzzy -msgid "Mountpoint" -msgstr "Aankoppelpunt toekennen aan partitie" - -msgid "HSM" -msgstr "" - -#, fuzzy -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "Voer een versleutelwachtwoord in voor (laat leeg om niet te versleutelen): " - -#, fuzzy -msgid "Disk encryption password" -msgstr "Versleutelwachtwoord instellen" - -#, fuzzy -msgid "Partition - New" -msgstr "Configuratie vastleggen" - -msgid "Filesystem" -msgstr "" - -msgid "Invalid size" -msgstr "" - -#, fuzzy -msgid "Start (default: sector {}): " -msgstr "Voer de beginsector in (percentage of bloknummer - standaard: {}): " - -#, fuzzy -msgid "End (default: {}): " -msgstr "Voer de beginsector in (percentage of bloknummer - standaard: {}): " - -#, fuzzy -msgid "Subvolume name" -msgstr "Subvolumenaam " - -#, fuzzy -msgid "Disk configuration type" -msgstr "Geen configuratie" - -msgid "Root mount directory" -msgstr "" - -#, fuzzy -msgid "Select language" -msgstr "Taal" - -#, fuzzy -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "Typ de namen van te installeren pakketten (spatiegescheiden - laat leeg om over te slaan): " - -msgid "Invalid download number" -msgstr "" - -msgid "Number downloads" -msgstr "" - -msgid "The username you entered is invalid" -msgstr "" - -#, fuzzy -msgid "Username" -msgstr "Gebruikersnaam: " - -#, fuzzy, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "Moet {} gebruiker een beheerder (sudoer) worden?" - -#, fuzzy -msgid "Interfaces" -msgstr "Gebruiker verwijderen" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "" - -msgid "Modes" -msgstr "" - -msgid "IP address" -msgstr "" - -#, fuzzy -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "Voer uw eigen gateway-adres (router-ip-adres) in of laag leeg om over te slaan: " - -msgid "Gateway address" -msgstr "" - -#, fuzzy -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "Voer uw eigen dns-servers in (spatiegescheiden - laat leeg om over te slaan): " - -#, fuzzy -msgid "DNS servers" -msgstr "Kies een audioserver" - -#, fuzzy -msgid "Configure interfaces" -msgstr "Gebruiker verwijderen" - -#, fuzzy -msgid "Kernel" -msgstr "Kernels" - -msgid "UEFI is not detected and some options are disabled" -msgstr "" - -msgid "Info" -msgstr "" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "" - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "" - -#, fuzzy -msgid "Main profile" -msgstr "Profiel" - -#, fuzzy -msgid "Confirm password" -msgstr "Wachtwoord wijzigen" - -msgid "The confirmation password did not match, please try again" -msgstr "" - -#, fuzzy -msgid "Not a valid directory" -msgstr "Ongeldige map: {}" - -#, fuzzy -msgid "Would you like to continue?" -msgstr "Wilt u wisselgeheugen i.c.m. zram gebruiken?" - -msgid "Directory" -msgstr "" - -#, fuzzy -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "Voer de naam in van de map waarin de configuratie(s) moet(en) worden vastgelegd: " - -#, fuzzy, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "Configuratie vastleggen" - -msgid "Enabled" -msgstr "" - -msgid "Disabled" -msgstr "" - -#, fuzzy -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Meld dit voorval (inclusief het logboek) op https://github.com/archlinux/archinstall/issues" - -#, fuzzy -msgid "Mirror name" -msgstr "Spiegelserverregio" - -msgid "Url" -msgstr "" - -#, fuzzy -msgid "Select signature check" -msgstr "Kies een schijfindeling" - -#, fuzzy -msgid "Select execution mode" -msgstr "Kies een actie voor '{}'" - -msgid "Press ? for help" -msgstr "" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "" - -#, fuzzy -msgid "Additional repositories" -msgstr "Aanvullende pakketbronnen" - -msgid "NTP" -msgstr "" - -msgid "Swap on zram" -msgstr "" - -msgid "Name" -msgstr "" - -#, fuzzy -msgid "Signature check" -msgstr "Kies een schijfindeling" - -#, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "" - -#, python-brace-format -msgid "Size: {} / {}" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Size (default: {}): " -msgstr "Voer de beginsector in (percentage of bloknummer - standaard: {}): " - -msgid "HSM device" -msgstr "" - -msgid "Some packages could not be found in the repository" -msgstr "" - -#, fuzzy -msgid "User" -msgstr "Gebruikersnaam: " - -msgid "The specified configuration will be applied" -msgstr "" - -msgid "Wipe" -msgstr "" - -#, fuzzy -msgid "Mark/Unmark as XBOOTLDR" -msgstr "Partitie (de)markeren voor versleuteling" - -#, fuzzy -msgid "Loading packages..." -msgstr "Aanvullende pakketten" - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "" - -#, fuzzy -msgid "Add a custom repository" -msgstr "Gebruiker toevoegen" - -msgid "Change custom repository" -msgstr "" - -msgid "Delete custom repository" -msgstr "" - -#, fuzzy -msgid "Repository name" -msgstr "Spiegelserverregio" - -#, fuzzy -msgid "Add a custom server" -msgstr "Gebruiker toevoegen" - -#, fuzzy -msgid "Change custom server" -msgstr "Kies een audioserver" - -#, fuzzy -msgid "Delete custom server" -msgstr "Gebruiker verwijderen" - -msgid "Server url" -msgstr "" - -#, fuzzy -msgid "Select regions" -msgstr "Kies een schijfindeling" - -#, fuzzy -msgid "Add custom servers" -msgstr "Gebruiker toevoegen" - -#, fuzzy -msgid "Add custom repository" -msgstr "Gebruiker toevoegen" - -#, fuzzy -msgid "Loading mirror regions..." -msgstr "Spiegelserverregio" - -#, fuzzy -msgid "Mirrors and repositories" -msgstr "Aanvullende pakketbronnen" - -#, fuzzy -msgid "Selected mirror regions" -msgstr "Spiegelserverregio" - -#, fuzzy -msgid "Custom servers" -msgstr "Kies een audioserver" - -#, fuzzy -msgid "Custom repositories" -msgstr "Aanvullende pakketbronnen" - -msgid "Only ASCII characters are supported" -msgstr "" - -msgid "Show help" -msgstr "" - -msgid "Exit help" -msgstr "" - -msgid "Preview scroll up" -msgstr "" - -msgid "Preview scroll down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move right" -msgstr "" - -msgid "Move left" -msgstr "" - -msgid "Jump to entry" -msgstr "" - -msgid "Skip selection (if available)" -msgstr "" - -msgid "Reset selection (if available)" -msgstr "" - -#, fuzzy -msgid "Select on single select" -msgstr "Kies een schijfindeling" - -#, fuzzy -msgid "Select on multi select" -msgstr "Kies een tijdzone" - -msgid "Reset" -msgstr "" - -#, fuzzy -msgid "Skip selection menu" -msgstr "Kies een actie voor '{}'" - -msgid "Start search mode" -msgstr "" - -msgid "Exit search mode" -msgstr "" - -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "Choose an option to give labwc access to your hardware" -msgstr "" - -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "" - -msgid "Choose an option to give niri access to your hardware" -msgstr "" - -#, fuzzy -msgid "Mark/Unmark as ESP" -msgstr "Partitie (de)markeren voor versleuteling" - -msgid "Package group:" -msgstr "" - -#, fuzzy -msgid "Exit archinstall" -msgstr "Archinstall-taal" - -msgid "Reboot system" -msgstr "" - -msgid "chroot into installation for post-installation configurations" -msgstr "" - -msgid "Installation completed" -msgstr "" - -#, fuzzy -msgid "What would you like to do next?" -msgstr "Wilt u wisselgeheugen i.c.m. zram gebruiken?" - -#, fuzzy, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "Geef aan welke modus moet worden gebruikt bij ‘{}’ of sla over om de standaardmodus (‘{}’) te gebruiken" - -#, fuzzy -msgid "Incorrect credentials file decryption password" -msgstr "Versleutelwachtwoord instellen" - -#, fuzzy -msgid "Incorrect password" -msgstr "Rootwachtwoord" - -#, fuzzy -msgid "Credentials file decryption password" -msgstr "Versleutelwachtwoord instellen" - -#, fuzzy -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "Configuratie vastleggen" - -#, fuzzy -msgid "Credentials file encryption password" -msgstr "Versleutelwachtwoord instellen" - -#, fuzzy, python-brace-format -msgid "Repositories: {}" -msgstr "Spiegelserverregio" - -msgid "New version available" -msgstr "" - -#, fuzzy -msgid "Passwordless login" -msgstr "Rootwachtwoord" - -msgid "Second factor login" -msgstr "" - -msgid "Bluetooth" -msgstr "" - -#, fuzzy -msgid "Would you like to configure Bluetooth?" -msgstr "Wilt u wisselgeheugen i.c.m. zram gebruiken?" - -msgid "Authentication" -msgstr "" - -msgid "Applications" -msgstr "" - -msgid "U2F login method: " -msgstr "" - -msgid "Passwordless sudo: " -msgstr "" - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "" - -msgid "Syncing the system..." -msgstr "" - -msgid "Value cannot be empty" -msgstr "" - -msgid "Snapshot type" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Snapshot type: {}" -msgstr "Geen configuratie" - -msgid "U2F login setup" -msgstr "" - -msgid "No U2F devices found" -msgstr "" - -msgid "U2F Login Method" -msgstr "" - -#, fuzzy -msgid "Enable passwordless sudo?" -msgstr "Voer een wachtwoord in: " - -#, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "" - -msgid "Starting device modifications in " -msgstr "" - -#, fuzzy -msgid "No network connection found" -msgstr "Geen netwerkconfiguratie" - -#, fuzzy -msgid "Would you like to connect to a Wifi?" -msgstr "Wilt u wisselgeheugen i.c.m. zram gebruiken?" - -#, fuzzy -msgid "No wifi interface found" -msgstr "Gebruiker verwijderen" - -#, fuzzy -msgid "Select wifi network to connect to" -msgstr "Kies een in te stellen netwerkkaart" - -msgid "Scanning wifi networks..." -msgstr "" - -#, fuzzy -msgid "No wifi networks found" -msgstr "Geen netwerkconfiguratie" - -msgid "Failed setting up wifi" -msgstr "" - -#, fuzzy -msgid "Enter wifi password" -msgstr "Voer een wachtwoord in: " - -msgid "Ok" -msgstr "" - -#~ msgid "Add :" -#~ msgstr "Toevoegen:" - -#~ msgid "Value :" -#~ msgstr "Waarde:" - -#, python-brace-format -#~ msgid "Edit {origkey} :" -#~ msgstr "{origkey} bewerken:" - -#~ msgid "Copy to :" -#~ msgstr "Kopiëren naar:" - -#~ msgid "Edite :" -#~ msgstr "Bewerken:" - -#~ msgid "Key :" -#~ msgstr "Sleutel:" diff --git a/examples/archinstall/archinstall/locales/pl/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/pl/LC_MESSAGES/base.mo deleted file mode 100644 index 32f033d..0000000 Binary files a/examples/archinstall/archinstall/locales/pl/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/pl/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/pl/LC_MESSAGES/base.po deleted file mode 100644 index 1d558aa..0000000 --- a/examples/archinstall/archinstall/locales/pl/LC_MESSAGES/base.po +++ /dev/null @@ -1,1848 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: acuteenvy\n" -"Language-Team: \n" -"Language: pl\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 2.4.2\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] Plik dziennika został stworzony tutaj: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Proszę zgłosić ten błąd (i dołączyć plik) pod adresem https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "Czy na pewno chcesz przerwać?" - -msgid "And one more time for verification: " -msgstr "I jeszcze raz w celu weryfikacji: " - -msgid "Would you like to use swap on zram?" -msgstr "Czy chcesz używać swap w zramie?" - -msgid "Desired hostname for the installation: " -msgstr "Nazwa hosta dla tej instalacji: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "Nazwa użytkownika dla wymaganego superusera z uprawnieniami sudo: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "Ewentualni użytkownicy do instalacji (pozostaw puste jeśli nie chcesz tworzyć użytkowników): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "Czy użytkownik powinien być superuserem (mieć uprawnienia sudo)?" - -msgid "Select a timezone" -msgstr "Wybierz strefę czasową" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "Czy chcesz użyć GRUB-a jako programu rozruchowego zamiast systemd-boot?" - -msgid "Choose a bootloader" -msgstr "Wybierz program rozruchowy" - -msgid "Choose an audio server" -msgstr "Wybierz serwer dźwięku" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Instalowane są tylko pakiety takie jak base, base-devel, linux, linux-firmware, efibootmgr i opcjonalne pakiety profili." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "Jeśli potrzebujesz przeglądarki internetowej, takiej jak firefox lub chromium, możesz ją określić w następującym oknie dialogowym." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "Wpisz dodatkowe pakiety do zainstalowania (oddzielone spacjami, pozostaw puste aby pominąć): " - -msgid "Copy ISO network configuration to installation" -msgstr "Skopiuj ustawienia sieciowe z ISO do instalacji" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "Użyj programu NetworkManager (niezbędne do graficznej konfiguracji Internetu w środowiskach GNOME i KDE)" - -msgid "Select one network interface to configure" -msgstr "Wybierz jeden interfejs sieciowy do skonfigurowania" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "Wybierz który tryb ma być skonfigurowany dla \"{}\" lub pomiń, aby użyć trybu domyślnego \"{}\"" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "Wprowadź adres IP i podsieć dla {} (przykład: 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "Wprowadź adres IP bramy sieciowej (routera) lub pozostaw puste: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "Wpisz swoje serwery DNS (oddzielone spacjami, lub pozostaw puste): " - -msgid "Select which filesystem your main partition should use" -msgstr "Wybierz, który system plików ma być używany na partycji głównej" - -msgid "Current partition layout" -msgstr "Aktualny układ partycji" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"Wybierz, co zrobić z\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "Wprowadź żądany typ systemu plików dla partycji" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "Wybierz lokację startową (w jednostkach parted: s, GB, %, itd. ; domyślna: {}) " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "Wybierz lokację końcową (w jednostkach parted: s, GB, %, itd. ; przykład: {}) " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} zawiera partycje oczekujące w kolejce, to spowoduje ich usunięcie. Czy na pewno chcesz to zrobić?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"Wybierz według indeksu, które partycje usunąć" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"Wybierz według indeksu, które partycje zamontować i gdzie" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * Punkty montowania partycji są względne w stosunku do wnętrza instalacji, np. partycja startowa to /boot." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "Wybierz gdzie chcesz zamontować partycję (pozostaw puste, aby usunąć punkt montowania): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"Wybierz partycja która ma zostać sformatowana" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"Wybierz partycja która ma zostać zaszyfrowana" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"Wybierz partycja która ma zostać oznaczona jako startowa (rozruchowa/bootowalna)" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"Wybierz partycję, na której ma zostać utworzony system plików" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "Wprowadź typ systemu plików dla partycji: " - -msgid "Archinstall language" -msgstr "Język archinstall-a" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Wymaż wszystkie wybrane dyski i użyj najlepszego domyślnego układu partycji" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Wybierz, co ma być zrobione z każdym dyskiem z osobna (a następnie z wykorzystaniem partycji)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "Wybierz, co chcesz zrobić z wybranymi urządzeniami blokowymi" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "To jest lista wstępnie zaprogramowanych profili, które mogą ułatwić instalację takich rzeczy jak środowiska graficzne" - -msgid "Select keyboard layout" -msgstr "Wybierz układ klawiatury" - -msgid "Select one of the regions to download packages from" -msgstr "Wybierz jeden z regionów, z których chcesz pobrać pakiety" - -msgid "Select one or more hard drives to use and configure" -msgstr "Wybierz jeden lub więcej dysków twardych do użycia i skonfiguruj je" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "Aby uzyskać najlepszą kompatybilność ze sprzętem AMD, warto skorzystać z opcji całkowicie open-source lub AMD / ATI." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "Aby uzyskać najlepszą kompatybilność ze sprzętem Intel, warto skorzystać z opcji całkowicie open-source lub Intel.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Aby uzyskać najlepszą kompatybilność ze sprzętem firmy Nvidia, warto skorzystać z własnościowego sterownika firmy Nvidia.\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Wybierz sterownik graficzny lub pozostaw puste pole, aby zainstalować wszystkie sterowniki open-source" - -msgid "All open-source (default)" -msgstr "Wszystkie open-source (domyślnie)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "Wybierz które jądra mają być używane, lub pozostaw puste, aby użyć ustawień domyślnych \"{}\"" - -msgid "Choose which locale language to use" -msgstr "Wybierz języki, których chcesz używać" - -msgid "Choose which locale encoding to use" -msgstr "Wybierz kodowania, których chcesz używać" - -msgid "Select one of the values shown below: " -msgstr "Wybierz jedną z poniższych wartości: " - -msgid "Select one or more of the options below: " -msgstr "Wybierz jedną lub więcej z poniższych opcji: " - -msgid "Adding partition...." -msgstr "Dodawanie partycji..." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "Aby kontynuować, musisz podać poprawny fs-type. Zobacz `man parted`, aby poznać prawidłowe opcje." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Błąd: Wyśwetlanie profili z URL \"{}\" spowodowało:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "Błąd: Nie można zdekodować \"{}\" jako JSON:" - -msgid "Keyboard layout" -msgstr "Układ klawiatury" - -msgid "Mirror region" -msgstr "Region serwerów lustrzanych" - -msgid "Locale language" -msgstr "Język" - -msgid "Locale encoding" -msgstr "Kodowanie" - -msgid "Drive(s)" -msgstr "Dyski twarde" - -msgid "Disk layout" -msgstr "Układ dysku" - -msgid "Encryption password" -msgstr "Hasło szyfrujące" - -msgid "Swap" -msgstr "Pamięć wymiany (swap)" - -msgid "Bootloader" -msgstr "Program rozruchowy" - -msgid "Root password" -msgstr "Hasło roota" - -msgid "Superuser account" -msgstr "Konto superusera" - -msgid "User account" -msgstr "Konto użytkownika" - -msgid "Profile" -msgstr "Profil" - -msgid "Audio" -msgstr "Audio" - -msgid "Kernels" -msgstr "Jądra" - -msgid "Additional packages" -msgstr "Dodatkowe pakiety" - -msgid "Network configuration" -msgstr "Konfiguracja sieci" - -msgid "Automatic time sync (NTP)" -msgstr "Automatyczna synchronizacja czasu (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "Zainstaluj ({} brakujących konfiguracji)" - -msgid "" -"You decided to skip harddrive selection\n" -"and will use whatever drive-setup is mounted at {} (experimental)\n" -"WARNING: Archinstall won't check the suitability of this setup\n" -"Do you wish to continue?" -msgstr "" -"Zdecydowano się na pominięcie wyboru dysku twardego\n" -"i użycie konfiguracji dysku zamontowanego w {} (eksperymentalne)\n" -"OSTRZEŻENIE: Archinstall nie sprawdzi poprawności tej konfiguracji\n" -"Czy chcesz kontynuować?" - -msgid "Re-using partition instance: {}" -msgstr "Ponowne wykorzystanie instancji partycji: {}" - -msgid "Create a new partition" -msgstr "Utwórz nową partycję" - -msgid "Delete a partition" -msgstr "Usuń partycję" - -msgid "Clear/Delete all partitions" -msgstr "Wyczyść/Usuń wszystkie partycje" - -msgid "Assign mount-point for a partition" -msgstr "Przydziel punkt montowania dla partycji" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "Oznacz/odznacz partycję, która ma zostać sformatowana (wymazuje dane)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "Oznacz/odznacz partycję jako zaszyfrowaną" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "Oznacz/odznacz partycję jako startową (rozruchową/bootowalną) (automatyczne dla /boot)" - -msgid "Set desired filesystem for a partition" -msgstr "Ustaw system plików dla partycji" - -msgid "Abort" -msgstr "Anuluj" - -msgid "Hostname" -msgstr "Nazwa hosta" - -msgid "Not configured, unavailable unless setup manually" -msgstr "Niedostępna, chyba że zostanie skonfigurowana ręcznie" - -msgid "Timezone" -msgstr "Strefa czasowa" - -msgid "Set/Modify the below options" -msgstr "Ustaw/modyfikuj poniższe opcje" - -msgid "Install" -msgstr "Zainstaluj" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"Użyj ESC aby pominąć\n" -"\n" - -msgid "Suggest partition layout" -msgstr "Zasugeruj układ partycji" - -msgid "Enter a password: " -msgstr "Wprowadź hasło: " - -msgid "Enter a encryption password for {}" -msgstr "Wprowadź hasło szyfrowania dla {}" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "Wprowadź hasło do szyfrowania dysku (pozostaw puste aby nie ustawiać szyfrowania): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "Utwórz wymaganego superusera z uprawnieniami sudo: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "Wprowadź hasło roota (pozostaw puste, aby wyłączyć roota): " - -msgid "Password for user \"{}\": " -msgstr "Hasło użytkownika \"{}\": " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "Sprawdzanie, czy istnieją dodatkowe pakiety (może to potrwać kilka sekund)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "Czy chcesz korzystać z automatycznej synchronizacji czasu (NTP) z domyślnymi serwerami czasu?\n" - -msgid "" -"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" -"For more information, please check the Arch wiki" -msgstr "" -"Aby NTP działał, może być wymagany czas sprzętowy i inne kroki po konfiguracji.\n" -"Aby uzyskać więcej informacji, proszę sprawdzić Arch wiki" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "Wprowadź nazwę użytkownika, aby utworzyć dodatkowego użytkownika (pozostaw puste, aby pominąć): " - -msgid "Use ESC to skip\n" -msgstr "Kliknij ESC aby pominąć\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -" Wybierz obiekt z listy, a następnie wybierz jedno z dostępnych działań do wykonania" - -msgid "Cancel" -msgstr "Anuluj" - -msgid "Confirm and exit" -msgstr "Potwierdź i wyjdź" - -msgid "Add" -msgstr "Dodaj" - -msgid "Copy" -msgstr "Kopiuj" - -msgid "Edit" -msgstr "Edytuj" - -msgid "Delete" -msgstr "Usuń" - -msgid "Select an action for '{}'" -msgstr "Wybierz działanie dla '{}'" - -msgid "Copy to new key:" -msgstr "Skopiuj do nowego klucza:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "Nieznany typ nic: {}. Możliwe wartości to {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"Wybrana konfiguracja:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Pacman jest już uruchomiony, czekam maksymalnie 10 minut na zakończenie pracy." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "Istniejąca wcześniej blokada pacmana nie została zakończona. Proszę wyczyścić wszystkie istniejące sesje pacmana przed użyciem archinstall-a." - -msgid "Choose which optional additional repositories to enable" -msgstr "Wybierz, które z opcjonalnych repozytoriów chcesz włączyć" - -msgid "Add a user" -msgstr "Dodaj użytkownika" - -msgid "Change password" -msgstr "Zmień hasło" - -msgid "Promote/Demote user" -msgstr "Promuj/degraduj użytkownika" - -msgid "Delete User" -msgstr "Usuń użytkownika" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"Zdefiniuj nowego użytkownika\n" - -msgid "User Name : " -msgstr "Nazwa użytkownika : " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "Czy użytkownik {} powinien być superuserem (mieć uprawnienia sudo)?" - -msgid "Define users with sudo privilege: " -msgstr "Zdefiniuj użytkowników z uprawnieniami sudo: " - -msgid "No network configuration" -msgstr "Brak konfiguracji sieciowej" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "Ustawianie żądanych subwoluminów na partycji btrfs" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "Wybierz partycję, na której mają być ustawione subwoluminy" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "Zarządzaj subwoluminami btrfs dla bieżącej partycji" - -msgid "No configuration" -msgstr "Brak konfiguracji" - -msgid "Save user configuration" -msgstr "Zapisz konfigurację użytkownika" - -msgid "Save user credentials" -msgstr "Zapisz dane uwierzytelniające użytkownika" - -msgid "Save disk layout" -msgstr "Zapisz układ dysku" - -msgid "Save all" -msgstr "Zapisz wszystko" - -msgid "Choose which configuration to save" -msgstr "Wybierz, która konfiguracja ma zostać zapisana" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "Wprowadź katalog, w którym ma zostać zapisana konfiguracja: " - -msgid "Not a valid directory: {}" -msgstr "Nieprawidłowy katalog: {}" - -msgid "The password you are using seems to be weak," -msgstr "Używane przez Ciebie hasło wydaje się być słabe," - -msgid "are you sure you want to use it?" -msgstr "czy na pewno chcesz go używać?" - -msgid "Optional repositories" -msgstr "Opcjonalne repozytoria" - -msgid "Save configuration" -msgstr "Zapisz konfigurację" - -msgid "Missing configurations:\n" -msgstr "Brakujące konfiguracje:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "Należy podać hasło roota lub stworzyć co najmniej jednego superusera" - -msgid "Manage superuser accounts: " -msgstr "Zarządzaj kontami superuserów: " - -msgid "Manage ordinary user accounts: " -msgstr "Zarządzaj kontami zwykłych użytkowników: " - -msgid " Subvolume :{:16}" -msgstr " Subwolumin :{:16}" - -msgid " mounted at {:16}" -msgstr " zamontowany w {:16}" - -msgid " with option {}" -msgstr " z opcjami {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -" Wypełnij żądane wartości dla nowego subwoluminu \n" - -msgid "Subvolume name " -msgstr "Nazwa subwoluminu " - -msgid "Subvolume mountpoint" -msgstr "Punkt montowania subwoluminu" - -msgid "Subvolume options" -msgstr "Opcje subwoluminu" - -msgid "Save" -msgstr "Zapisz" - -msgid "Subvolume name :" -msgstr "Nazwa subwoluminu :" - -msgid "Select a mount point :" -msgstr "Wybierz punkt montowania :" - -msgid "Select the desired subvolume options " -msgstr "Wybierz opcje subwoluminu " - -msgid "Define users with sudo privilege, by username: " -msgstr "Określanie użytkowników z uprawnieniami sudo według nazwy użytkownika: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] Plik dziennika został zapisany tutaj: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "Czy chcesz użyć subwoluminów BTRFS z domyślną strukturą?" - -msgid "Would you like to use BTRFS compression?" -msgstr "Czy chcesz użyć kompresji BTRFS?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "Czy chcesz stworzyć oddzielną partycje dla /home?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "Wybrane dyski nie mają minimalnej wymaganej pojemności dla automatycznej sugestii\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "Maksymalna pojemność dla partycji /home: {}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Minimalna pojemność dla partycji Arch Linux: {}GB" - -msgid "Continue" -msgstr "Kontynuuj" - -msgid "yes" -msgstr "tak" - -msgid "no" -msgstr "nie" - -msgid "set: {}" -msgstr "ustawiono na: {}" - -msgid "Manual configuration setting must be a list" -msgstr "Konfiguracja ustawiona manualnie musi być listą" - -msgid "No iface specified for manual configuration" -msgstr "Nie określono interfejsu do ręcznej konfiguracji" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "Ręczna konfiguracja nic bez automatycznego DHCP wymaga podania adresu IP" - -msgid "Add interface" -msgstr "Dodaj interfejs" - -msgid "Edit interface" -msgstr "Edytuj interfejs" - -msgid "Delete interface" -msgstr "Usuń interfejs" - -msgid "Select interface to add" -msgstr "Wybierz interfejs sieciowy do dodania" - -msgid "Manual configuration" -msgstr "Ręczna konfiguracja" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "Oznacz/odznacz partycje jako skompresowaną (tylko w btrfs)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "Używane przez Ciebie hasło wydaje się być słabe, czy na pewno chcesz go użyć?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "Dostarcza wybór środowisk graficznych oraz kafelkowych menedżerów okien, np. gnome, kde, sway" - -msgid "Select your desired desktop environment" -msgstr "Wybierz środowisko graficzne" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "Bardzo ograniczona instalacja pozwalająca ci dostosowanie Arch Linuxa do twoich upodobań." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "Dostarcza wybór różnych pakietów serwerowych do zainstalowania i uruchomienia, np. httpd, nginx, mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "Wybierz jakie serwery zainstalować. Jeżeli żadne, wykonana będzie minimalna instalacja" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "Instaluje system podstawowy, a także xorg-a i sterowniki graficzne." - -msgid "Press Enter to continue." -msgstr "Naciśnij Enter, aby kontynuować." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "Czy chcesz zchrootować do nowej instalacji i przeprowadzić dodatkową konfigurację?" - -msgid "Are you sure you want to reset this setting?" -msgstr "Czy na pewno chcesz zresetować to ustawienie?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "Wybierz jeden lub więcej dysków twardych do użycia i skonfiguruj je\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "Każda zmiana istniejących ustawień zresetuje układ dysków!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "Jeżeli zresetujesz wybór dysków, zresetujesz także obecny układ dysków. Czy na pewno chcesz to zrobić?" - -msgid "Save and exit" -msgstr "Zapisz i wyjdź" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"zawiera partycje oczekujące w kolejce, to spowoduje ich usunięcie. Czy na pewno chcesz to zrobić?" - -msgid "No audio server" -msgstr "Brak serwera dźwięku" - -msgid "(default)" -msgstr "(domyślne)" - -msgid "Use ESC to skip" -msgstr "Naciśnij ESC, aby pominąć" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"Użyj CTRL+C, aby zresetować obecny wybór\n" -"\n" - -msgid "Copy to: " -msgstr "Kopiuj do: " - -msgid "Edit: " -msgstr "Edytuj: " - -msgid "Key: " -msgstr "Klucz: " - -msgid "Edit {}: " -msgstr "Edytuj {}: " - -msgid "Add: " -msgstr "Dodaj: " - -msgid "Value: " -msgstr "Wartość: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "Możesz pominąć wybór dysku i partycjonowanie i użyć konfiguracji dysku zamontowanego w /mnt (eksperymentalne)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "Wybierz jeden z dysków lub pomiń i użyj /mnt jako domyślnego" - -msgid "Select which partitions to mark for formatting:" -msgstr "Wybierz partycje, które mają zostać sformatowane:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "Użyj HSM do odblokowania zaszyfrowanego dysku" - -msgid "Device" -msgstr "Urządzenie" - -msgid "Size" -msgstr "Rozmiar" - -msgid "Free space" -msgstr "Wolne miejsce" - -msgid "Bus-type" -msgstr "Typ magistrali" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "Musisz podać hasło roota lub utworzyć co najmniej jednego superusera" - -msgid "Enter username (leave blank to skip): " -msgstr "Wprowadź nazwę użytkownika (pozostaw puste, aby pominąć): " - -msgid "The username you entered is invalid. Try again" -msgstr "Wprowadzona nazwa użytkownika jest nieprawidłowa. Spróbuj ponownie" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "Czy użytkownik \"{}\" powinien być superuserem (mieć uprawnienia sudo)?" - -msgid "Select which partitions to encrypt" -msgstr "Wybierz, które partycje mają zostać zaszyfrowane" - -msgid "very weak" -msgstr "bardzo słabe" - -msgid "weak" -msgstr "słabe" - -msgid "moderate" -msgstr "umiarkowane" - -msgid "strong" -msgstr "silne" - -msgid "Add subvolume" -msgstr "Dodaj subwolumin" - -msgid "Edit subvolume" -msgstr "Edytuj subwolumin" - -msgid "Delete subvolume" -msgstr "Usuń subwolumin" - -msgid "Configured {} interfaces" -msgstr "Skonfigurowano {} interfejsów" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "Ta opcja pozwala określić maksymalną liczbę pobieranych plików podczas instalacji" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"Wprowadź maksymalną liczbę dodatkowych plików pobieranych jednocześnie.\n" -" (Liczba z zakresu od 1 do {})\n" -"Zauważ:" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - Maksymalna wartość : {} ( Zwiększa liczbę zadań o {}, co pozwala na pobieranie {} plików jednocześnie )" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - Minimalna wartość : 1 ( Zwiększa liczbę zadań o 1, co pozwala na pobieranie 2 plików jednocześnie )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - Wyłącz/Domyślne : 0 ( Wyłącza pobieranie wielu plików jednocześnie, więc tylko 1 plik może być pobierany w tym samym czasie )" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "Nieprawidłowa wartość! Spróbuj jeszcze raz z prawidłową wartością [1 do {max_downloads}, lub 0 aby wyłączyć]" - -msgid "Parallel Downloads" -msgstr "Pobieranie kilku plików jednocześnie" - -msgid "ESC to skip" -msgstr "Naciśnij ESC, aby pominąć" - -msgid "CTRL+C to reset" -msgstr "Naciśnij Ctrl+C, aby zresetować" - -msgid "TAB to select" -msgstr "Naciśnij Tab, aby wybrać" - -msgid "[Default value: 0] > " -msgstr "[Domyślna wartość: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "Aby móc skorzystać z tego tłumaczenia, proszę ręcznie zainstalować czcionkę, która obsługuje ten język." - -msgid "The font should be stored as {}" -msgstr "Czcionka powinna być przechowana jako {}" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "Archinstall wymaga uprawnień administratora do uruchomienia. Użyj --help, aby uzyskać więcej informacji." - -msgid "Select an execution mode" -msgstr "Wybierz tryb uruchamiania" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "Nie można pobrać profilu z podanego url: {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "Profile muszą mieć unikalne nazwy, a znaleziono istniejący profil o tej nazwie: {}" - -msgid "Select one or more devices to use and configure" -msgstr "Wybierz jedno lub więcej urządzeń do użycia i skonfiguruj je" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "Jeżeli zresetujesz wybór urządzeń, zresetujesz także obecny układ dysków. Czy na pewno chcesz to zrobić?" - -msgid "Existing Partitions" -msgstr "Instniejące partycje" - -msgid "Select a partitioning option" -msgstr "Wybierz opcję partycjonowania" - -msgid "Enter the root directory of the mounted devices: " -msgstr "Wprowadź katalog root zamontowanych urządzeń: " - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "Maksymalna pojemność dla partycji /home: {}GiB\n" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "Minimalna pojemność dla partycji 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 "To jest lista wstępnie zaprogramowanych profili (profiles_bck), które mogą ułatwić instalację takich rzeczy jak środowiska graficzne" - -msgid "Current profile selection" -msgstr "Aktualny wybór profilu" - -msgid "Remove all newly added partitions" -msgstr "Usuń wszystkie nowo dodane partycje" - -msgid "Assign mountpoint" -msgstr "Przydziel punkt montowania" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "Zaznacz/odznacz partycję do formatowania (wymazuje dane)" - -msgid "Mark/Unmark as bootable" -msgstr "Zaznacz/Odznacz jako bootowalne" - -msgid "Change filesystem" -msgstr "Zmień system plików" - -msgid "Mark/Unmark as compressed" -msgstr "Oznacz/odznacz partycje jako skompresowaną" - -msgid "Set subvolumes" -msgstr "Ustaw podwolumin" - -msgid "Delete partition" -msgstr "Usuń partycję" - -msgid "Partition" -msgstr "Partycja" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "Wybrana partycja jest zaszyfrowana. Żeby ją sformatować, wybierz system plików" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "Punkty montowania partycji są względne w stosunku do wnętrza instalacji, np. boot to /boot." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "Jeżeli punkt montowania /boot jest wybrany, ta partycja będzie także zaznaczona jako bootowalna." - -msgid "Mountpoint: " -msgstr "Punkt montowania: " - -msgid "Current free sectors on device {}:" -msgstr "Aktualnie wolne sektory urządzenia {}:" - -msgid "Total sectors: {}" -msgstr "Łącznie sektorów: {}" - -msgid "Enter the start sector (default: {}): " -msgstr "Wprowadź sektor początkowy (domyślnie: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "Wprowadź sektor końcowy tej partycji (procent lub numer bloku, domyślnie: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "To usunie wszystkie nowo dodane partycje, kontynuować?" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "Zarządzanie partycją: {}" - -#, python-brace-format -msgid "Total length: {}" -msgstr "Całkowita długość: {}" - -msgid "Encryption type" -msgstr "Typ szyfrowania" - -msgid "Iteration time" -msgstr "" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "" - -msgid "Higher values increase security but slow down boot time" -msgstr "" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "" - -msgid "Iteration time cannot be empty" -msgstr "" - -msgid "Iteration time must be at least 100ms" -msgstr "" - -msgid "Iteration time must be at most 120000ms" -msgstr "" - -msgid "Please enter a valid number" -msgstr "" - -msgid "Partitions" -msgstr "Partycje" - -msgid "No HSM devices available" -msgstr "Brak dostępnych urządzeń HSM" - -msgid "Partitions to be encrypted" -msgstr "Partycje do zaszyfrowania" - -msgid "Select disk encryption option" -msgstr "Wybierz opcję szyfrowania dysku" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "Wybierz urządzenie FIDO2 do użycia z HSM" - -msgid "Use a best-effort default partition layout" -msgstr "Użyj najlepszego domyślnego układu partycji" - -msgid "Manual Partitioning" -msgstr "Ręczne partycjonowanie" - -msgid "Pre-mounted configuration" -msgstr "Wstępnie zamontowana konfiguracja" - -msgid "Unknown" -msgstr "Nieznane" - -msgid "Partition encryption" -msgstr "Szyfrowanie partycji" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr " ! Formatowanie {} za " - -msgid "← Back" -msgstr "← Wstecz" - -msgid "Disk encryption" -msgstr "Szyfrowanie dysku" - -msgid "Configuration" -msgstr "Konfiguracja" - -msgid "Password" -msgstr "Hasło" - -msgid "All settings will be reset, are you sure?" -msgstr "Wszystkie ustawienia zostaną zresetowane. Czy na pewno chcesz to zrobić?" - -msgid "Back" -msgstr "Wstecz" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "Wybierz który greeter zainstalować dla wybranych profili: {}" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "Typ środowiska: {}" - -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 "Własnościowy sterownik Nvidia nie jest wspierany przez Sway. Prawdopodobnie wystąpią problemy, czy chcesz kontynuować?" - -msgid "Installed packages" -msgstr "Zainstalowane pakiety" - -msgid "Add profile" -msgstr "Dodaj profil" - -msgid "Edit profile" -msgstr "Edytuj profil" - -msgid "Delete profile" -msgstr "Usuń profil" - -msgid "Profile name: " -msgstr "Nazwa profilu: " - -msgid "The profile name you entered is already in use. Try again" -msgstr "Wprowadzona nazwa profilu jest już w użyciu. Spróbuj ponownie" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "Dodatkowe pakiety do zainstalowania na tym profilu (oddzielone spacjami, pozostaw puste aby pominąć): " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "Usługi, które mają być włączone na tym profilu (oddzielone spacjami, pozostaw puste aby pominąć): " - -msgid "Should this profile be enabled for installation?" -msgstr "Czy ten profil ma być włączony podczas instalacji?" - -msgid "Create your own" -msgstr "Utwórz własny" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"Wybierz sterownik graficzny lub pozostaw puste, aby zainstalować wszystkie sterowniki otwartoźródłowe" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway potrzebuje dostępu do twojego seat'a (sprzętu, np. klawiatury, myszki, etc)" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Wybierz opcję, aby nadać Sway dostęp do twojego sprzętu" - -msgid "Graphics driver" -msgstr "Sterownik graficzny" - -msgid "Greeter" -msgstr "Greeter" - -msgid "Please chose which greeter to install" -msgstr "Wybierz, który greeter zainstalować" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "To jest lista przygotowanych domyślnych profili (default_profiles)" - -msgid "Disk configuration" -msgstr "Konfiguracja dysku" - -msgid "Profiles" -msgstr "Profile" - -msgid "Finding possible directories to save configuration files ..." -msgstr "Znajdywanie możliwych katalogów do zapisywania plików konfiguracyjnych ..." - -msgid "Select directory (or directories) for saving configuration files" -msgstr "Wybierz jeden lub więcej katalogów do zapisywania plików konfiguracyjnych" - -msgid "Add a custom mirror" -msgstr "Dodaj niestandardowy serwer lustrzany" - -msgid "Change custom mirror" -msgstr "Zmień niestandardowy serwer lustrzany" - -msgid "Delete custom mirror" -msgstr "Usuń niestandardowy serwer lustrzany" - -msgid "Enter name (leave blank to skip): " -msgstr "Wprowadź nazwę (pozostaw puste, aby pominąć): " - -msgid "Enter url (leave blank to skip): " -msgstr "Wprowadź url (pozostaw puste, aby pominąć): " - -msgid "Select signature check option" -msgstr "Wybierz układ dysku" - -msgid "Select signature option" -msgstr "Wybierz opcję podpisu" - -msgid "Custom mirrors" -msgstr "Niestandardowe serwery lustrzane" - -msgid "Defined" -msgstr "Zdefiniowane" - -msgid "Save user configuration (including disk layout)" -msgstr "Zapisz konfigurację użytkownika (wraz z układem dysku)" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"Wprowadź katalog, w którym ma zostać zapisana konfiguracja (uzupełnianie przyciskiem tab jest włączone)\n" -"Katalog zapisu: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"Czy chcesz zapisać plik(i) konfiguracji {} w podanej lokalizacji?\n" -"\n" -"{}" - -msgid "Saving {} configuration files to {}" -msgstr "Zapisywanie {} plików konfiguracyjnych do {}" - -msgid "Mirrors" -msgstr "Serwery lustrzane" - -msgid "Mirror regions" -msgstr "Regiony serwerów lustrzanych" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - Maksymalna wartość : {} ( Zwiększa liczbę zadań o {}, co pozwala na pobieranie {max_downloads+1} plików jednocześnie )" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "Nieprawidłowa wartość! Spróbuj jeszcze raz z poprawną wartością [1 do {}, lub 0 aby wyłączyć]" - -msgid "Locales" -msgstr "Ustawienia regionalne (locale)" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "Użyj programu NetworkManager (niezbędne do graficznej konfiguracji Internetu w GNOME i KDE)" - -msgid "Total: {} / {}" -msgstr "Łącznie: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "Do wszystkich wybranych wartości może być dopisana jednostka: B, KB, KiB, MB, MiB..." - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "Jeżeli jednostka nie zostanie podana, wartość zostanie zinterpretowana jako sektory" - -msgid "Enter start (default: sector {}): " -msgstr "Wprowadź początek (domyślnie: {}): " - -msgid "Enter end (default: {}): " -msgstr "Wprowadź koniec (domyślnie: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "Nie można określić urządzeń fido2. Czy zainstalowano libfido2?" - -msgid "Path" -msgstr "Ścieżka" - -msgid "Manufacturer" -msgstr "Producent" - -msgid "Product" -msgstr "Produkt" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "Niepoprawna konfiguracja: {error}" - -msgid "Type" -msgstr "Typ" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "Ta opcja pozwala określić maksymalną liczbę jednocześnie pobieranych pakietów" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"Wprowadź maksymalną liczbę dodatkowych plików pobieranych jednocześnie.\n" -"\n" -"Note:\n" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - Maksymalna rekomendowana wartość : {} ( Zwiększa liczbę zadań o {} )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - Wyłącz/Domyślne : 0 ( Wyłącza pobieranie wielu plików jednocześnie, więc tylko 1 plik może być pobierany w tym samym czasie )\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "Nieprawidłowa wartość! Spróbuj jeszcze raz z poprawną wartością [lub 0, aby wyłączyć]" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Hyprland potrzebuje dostępu do twojego seat'a (sprzętu, np. klawiatury, myszki, etc)" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Wybierz opcję, aby nadać Hyprland dostęp do twojego sprzętu" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "Do wszystkich wybranych wartości może być dopisana jednostka: % B, KB, KiB, MB, MiB..." - -msgid "Would you like to use unified kernel images?" -msgstr "Czy chcesz użyć ujednoliconych obrazów jądra?" - -msgid "Unified kernel images" -msgstr "Ujednolicone obrazy jądra" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "Oczekiwanie na synchronizację czasu (timedatectl show)." - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Synchronizacja czasu nie powodzi się. Oczekując - sprawdź dokumentację: https://archinstall.readthedocs.io/" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "Pomiń oczekiwanie na automatyczną synchronizację czasu (może spowodować problemy podczas instalacji)" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "Oczekiwanie na synchronizację Arch Linux keyring (archlinux-keyring-wkd-sync)." - -msgid "Selected profiles: " -msgstr "Wybrane profile: " - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Synchronizacja czasu nie powodzi się. Oczekując - sprawdź dokumentację: https://archinstall.readthedocs.io/" - -msgid "Mark/Unmark as nodatacow" -msgstr "Zaznacz/Odznacz jako nodatacow" - -msgid "Would you like to use compression or disable CoW?" -msgstr "Czy chcesz użyć kompresji lub wyłączyć CoW?" - -msgid "Use compression" -msgstr "Użyj kompresji" - -msgid "Disable Copy-on-Write" -msgstr "Wyłącz kopiowanie przy zapisie (Copy-on-Write)" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "Dostarcza wybór środowisk graficznych oraz kafelkowych menedżerów okien, np. GNOME, KDE Plasma, Sway" - -#, python-brace-format -msgid "Configuration type: {}" -msgstr "Typ konfiguracji: {}" - -msgid "LVM configuration type" -msgstr "Typ konfiguracji LVM" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "Szyfrowanie dysku LVM z więcej niż dwoma partycjami aktualnie nie jest wspierane" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "Użyj programu NetworkManager (niezbędne do graficznej konfiguracji Internetu w GNOME i KDE)" - -msgid "Select a LVM option" -msgstr "Wybierz opcję LVM" - -msgid "Partitioning" -msgstr "Partycjonowanie" - -msgid "Logical Volume Management (LVM)" -msgstr "Zarządzanie Woluminami Logicznymi (LVM)" - -msgid "Physical volumes" -msgstr "Fizyczne woluminy" - -msgid "Volumes" -msgstr "Woluminy" - -msgid "LVM volumes" -msgstr "Woluminy LVM" - -msgid "LVM volumes to be encrypted" -msgstr "Woluminy LVM do zaszyfrowania" - -msgid "Select which LVM volumes to encrypt" -msgstr "Wybierz, które woluminy LVM mają zostać zaszyfrowane" - -msgid "Default layout" -msgstr "Domyślny układ" - -msgid "No Encryption" -msgstr "Brak szyfrowania" - -msgid "LUKS" -msgstr "LUKS" - -msgid "LVM on LUKS" -msgstr "LVM na LUKS" - -msgid "LUKS on LVM" -msgstr "LUKS na LVM" - -msgid "Yes" -msgstr "Tak" - -msgid "No" -msgstr "Nie" - -msgid "Archinstall help" -msgstr "Pomoc archinstall-a" - -msgid " (default)" -msgstr " (domyślne)" - -msgid "Press Ctrl+h for help" -msgstr "Naciśnij Ctrl+h, aby wyświetlić pomoc" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "Wybierz opcję, aby nadać Sway dostęp do twojego sprzętu" - -msgid "Seat access" -msgstr "Dostęp do seat'a" - -msgid "Mountpoint" -msgstr "Punkt montowania" - -msgid "HSM" -msgstr "HSM" - -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "Wprowadź hasło do szyfrowania dysku (pozostaw puste, aby nie szyfrować):" - -msgid "Disk encryption password" -msgstr "Hasło szyfrujące dysk" - -msgid "Partition - New" -msgstr "Partycja - Nowa" - -msgid "Filesystem" -msgstr "System plików" - -msgid "Invalid size" -msgstr "Niepoprawny rozmiar" - -msgid "Start (default: sector {}): " -msgstr "Początek (domyślnie: sektor {}): " - -msgid "End (default: {}): " -msgstr "Koniec (domyślnie: {}): " - -msgid "Subvolume name" -msgstr "Nazwa subwoluminu" - -msgid "Disk configuration type" -msgstr "Typ konfiguracji dysku" - -msgid "Root mount directory" -msgstr "Katalog montowania root" - -msgid "Select language" -msgstr "Wybierz język" - -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "Wpisz dodatkowe pakiety do zainstalowania (oddzielone spacjami, pozostaw puste aby pominąć):" - -msgid "Invalid download number" -msgstr "Niepoprawna liczba pobrań" - -msgid "Number downloads" -msgstr "Liczba pobrań" - -msgid "The username you entered is invalid" -msgstr "Wprowadzona nazwa użytkownika jest nieprawidłowa" - -msgid "Username" -msgstr "Nazwa użytkownika" - -#, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "Czy \"{}\" powinien być superuserem (mieć uprawnienia sudo)?\n" - -msgid "Interfaces" -msgstr "Interfejsy" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "Musisz wprowadzić poprawny adres IP w trybie IP-config" - -msgid "Modes" -msgstr "Tryby" - -msgid "IP address" -msgstr "Adres IP" - -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "Wprowadź adres IP bramy sieciowej (routera) lub pozostaw puste:" - -msgid "Gateway address" -msgstr "Adres bramy sieciowej" - -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "Wpisz swoje serwery DNS (oddzielone spacjami, lub pozostaw puste):" - -msgid "DNS servers" -msgstr "Serwery DNS" - -msgid "Configure interfaces" -msgstr "Konfiguruj interfejsy" - -msgid "Kernel" -msgstr "Jądro" - -msgid "UEFI is not detected and some options are disabled" -msgstr "Nie wykryto UEFI i niektóre opcje są wyłączone" - -msgid "Info" -msgstr "Info" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "Własnościowy sterownik Nvidia nie jest wspierany przez Sway." - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "Prawdopodobnie wystąpią problemy, czy chcesz kontynuować?" - -msgid "Main profile" -msgstr "Główny profil" - -msgid "Confirm password" -msgstr "Potwierdź hasło" - -msgid "The confirmation password did not match, please try again" -msgstr "Hasło potwierdzające nie jest poprawne, proszę spróbować jeszcze raz" - -msgid "Not a valid directory" -msgstr "Nieprawidłowy katalog" - -msgid "Would you like to continue?" -msgstr "Czy chcesz kontynuować?" - -msgid "Directory" -msgstr "Katalog" - -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "Wprowadź katalog, w którym ma zostać zapisana konfiguracja (uzupełnianie przyciskiem tab jest włączone):" - -#, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "Czy chcesz zapisać plik(i) konfiguracyjne do {}?" - -msgid "Enabled" -msgstr "Włączone" - -msgid "Disabled" -msgstr "Wyłączone" - -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "Proszę zgłosić ten błąd (i dołączyć plik) pod adresem https://github.com/archlinux/archinstall/issues" - -msgid "Mirror name" -msgstr "Nazwa serwera lustrzanego" - -msgid "Url" -msgstr "Url" - -msgid "Select signature check" -msgstr "Wybierz sprawdzanie podpisu" - -msgid "Select execution mode" -msgstr "Wybierz tryb uruchamiania" - -msgid "Press ? for help" -msgstr "Naciśnij ?, aby wyświetlić pomoc" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "Wybierz opcję, aby nadać Hyprland dostęp do twojego sprzętu" - -msgid "Additional repositories" -msgstr "Dodatkowe repozytoria" - -msgid "NTP" -msgstr "NTP" - -msgid "Swap on zram" -msgstr "Swap na zram" - -msgid "Name" -msgstr "Nazwa" - -msgid "Signature check" -msgstr "Sprawdzanie podpisów" - -#, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "Wybrany segment wolnego miejsca na urządzeniu {}:" - -#, python-brace-format -msgid "Size: {} / {}" -msgstr "Rozmiar: {} / {}" - -#, python-brace-format -msgid "Size (default: {}): " -msgstr "Rozmiar (domyślnie: {}): " - -msgid "HSM device" -msgstr "Urządzenie HSM" - -msgid "Some packages could not be found in the repository" -msgstr "Niektóre pakiety nie mogły zostać znalezione w repozytorium" - -msgid "User" -msgstr "Użytkownik" - -msgid "The specified configuration will be applied" -msgstr "Podana konfiguracja zostanie zastosowana" - -msgid "Wipe" -msgstr "Wymaż" - -msgid "Mark/Unmark as XBOOTLDR" -msgstr "Zaznacz/Odznacz jako XBOOTLDR" - -msgid "Loading packages..." -msgstr "Ładowanie pakietów..." - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "Wybierz pakiety z poniższej listy, które powinne być dodatkowo zainstalowane" - -msgid "Add a custom repository" -msgstr "Dodaj niestandardowe repozytorium" - -msgid "Change custom repository" -msgstr "Zmień niestandardowe repozytorium" - -msgid "Delete custom repository" -msgstr "Usuń niestandardowe repozytorium" - -msgid "Repository name" -msgstr "Nazwa repozytorium" - -msgid "Add a custom server" -msgstr "Dodaj niestandardowy serwer" - -msgid "Change custom server" -msgstr "Zmień niestandardowy serwer" - -msgid "Delete custom server" -msgstr "Usuń niestandardowy serwer" - -msgid "Server url" -msgstr "Url serwera" - -msgid "Select regions" -msgstr "Wybierz regiony" - -msgid "Add custom servers" -msgstr "Dodaj niestandardowe serwery" - -msgid "Add custom repository" -msgstr "Dodaj niestandardowe repozytorium" - -msgid "Loading mirror regions..." -msgstr "Ładowanie regionów serwerów lustrzanych..." - -msgid "Mirrors and repositories" -msgstr "Serwery lustrzane i repozytoria" - -msgid "Selected mirror regions" -msgstr "Wybrane regiony serwerów lustrzanych" - -msgid "Custom servers" -msgstr "Niestandardowe serwery lustrzane" - -msgid "Custom repositories" -msgstr "Niestandardowe repozytoria" - -msgid "Only ASCII characters are supported" -msgstr "Tylko znaki ASCII są wspierane" - -msgid "Show help" -msgstr "Pokaż pomoc" - -msgid "Exit help" -msgstr "Zamknij pomoc" - -msgid "Preview scroll up" -msgstr "Przewiń podgląd w górę" - -msgid "Preview scroll down" -msgstr "Przewiń podgląd w dół" - -msgid "Move up" -msgstr "Przesuń w górę" - -msgid "Move down" -msgstr "Przesuń w dół" - -msgid "Move right" -msgstr "Przesuń w prawo" - -msgid "Move left" -msgstr "Przesuń w lewo" - -msgid "Jump to entry" -msgstr "Przeskocz do wpisu" - -msgid "Skip selection (if available)" -msgstr "Pomiń wybór (jeżeli to możliwe)" - -msgid "Reset selection (if available)" -msgstr "Zresetuj wybór (jeżeli to możliwe)" - -msgid "Select on single select" -msgstr "Wybierz na wyborach pojedynczych" - -msgid "Select on multi select" -msgstr "Wybierz na wyborach wielokrotnych" - -msgid "Reset" -msgstr "Zresetuj" - -msgid "Skip selection menu" -msgstr "Pomiń menu wyboru" - -msgid "Start search mode" -msgstr "Wejdź w tryb wyszukiwania" - -msgid "Exit search mode" -msgstr "Wyjdź z trybu wyszukiwania" - -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "labwc potrzebuje dostępu do twojego seat'a (sprzętu, np. klawiatury, myszki)" - -msgid "Choose an option to give labwc access to your hardware" -msgstr "Wybierz opcję, aby nadać labwc dostęp do twojego sprzętu" - -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "niri potrzebuje dostępu do twojego seat'a (sprzętu, np. klawiatury, myszki, etc)" - -msgid "Choose an option to give niri access to your hardware" -msgstr "Wybierz opcję, aby nadać niri dostęp do twojego sprzętu" - -msgid "Mark/Unmark as ESP" -msgstr "Zaznacz/Odznacz jako ESP" - -msgid "Package group:" -msgstr "Grupa pakietów:" - -msgid "Exit archinstall" -msgstr "Zamknij archinstall-a" - -msgid "Reboot system" -msgstr "Uruchom ponownie system" - -msgid "chroot into installation for post-installation configurations" -msgstr "zchrootować do nowej instalacji i przeprowadzić dodatkową konfigurację" - -msgid "Installation completed" -msgstr "Instalacja zakończona" - -msgid "What would you like to do next?" -msgstr "Co chcesz robić dalej?" - -#, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "Wybierz który tryb ma być skonfigurowany dla \"{}\"" - -msgid "Incorrect credentials file decryption password" -msgstr "Niepoprawne hasło odszyfrowujące plik danych uwierzytelniających" - -msgid "Incorrect password" -msgstr "Niepoprawne hasło" - -msgid "Credentials file decryption password" -msgstr "Hasło odszyfrowujące plik danych uwierzytelniających" - -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "Czy chcesz zaszyfrować plik user_credentials.json?" - -msgid "Credentials file encryption password" -msgstr "Hasło szyfrujące plik danych uwierzytelniających" - -#, python-brace-format -msgid "Repositories: {}" -msgstr "Repozytoria: {}" - -#, fuzzy -msgid "New version available" -msgstr "Brak dostępnych urządzeń HSM" - -#, fuzzy -msgid "Passwordless login" -msgstr "Hasło" - -msgid "Second factor login" -msgstr "" - -msgid "Bluetooth" -msgstr "" - -#, fuzzy -msgid "Would you like to configure Bluetooth?" -msgstr "Czy chcesz kontynuować?" - -msgid "Authentication" -msgstr "" - -msgid "Applications" -msgstr "" - -msgid "U2F login method: " -msgstr "" - -msgid "Passwordless sudo: " -msgstr "" - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "" - -msgid "Syncing the system..." -msgstr "" - -msgid "Value cannot be empty" -msgstr "" - -msgid "Snapshot type" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Snapshot type: {}" -msgstr "Typ środowiska: {}" - -msgid "U2F login setup" -msgstr "" - -msgid "No U2F devices found" -msgstr "" - -msgid "U2F Login Method" -msgstr "" - -#, fuzzy -msgid "Enable passwordless sudo?" -msgstr "Wprowadź hasło: " - -#, fuzzy, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "Wybierz urządzenie FIDO2 do użycia z HSM" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "" - -msgid "Starting device modifications in " -msgstr "" - -#, fuzzy -msgid "No network connection found" -msgstr "Brak konfiguracji sieciowej" - -#, fuzzy -msgid "Would you like to connect to a Wifi?" -msgstr "Czy chcesz kontynuować?" - -#, fuzzy -msgid "No wifi interface found" -msgstr "Konfiguruj interfejsy" - -#, fuzzy -msgid "Select wifi network to connect to" -msgstr "Wybierz jeden interfejs sieciowy do skonfigurowania" - -msgid "Scanning wifi networks..." -msgstr "" - -#, fuzzy -msgid "No wifi networks found" -msgstr "Brak konfiguracji sieciowej" - -msgid "Failed setting up wifi" -msgstr "" - -#, fuzzy -msgid "Enter wifi password" -msgstr "Wprowadź hasło: " - -msgid "Ok" -msgstr "" - -#~ msgid "When picking a directory to save configuration files to, by default we will ignore the following folders: " -#~ msgstr "Podczas wybierania katalogu do zapisywania plików konfiguracyjnych, domyślnie ignorowane są następujące foldery: " - -#~ msgid "" -#~ "Do you want to save {} configuration file(s) in the following locations?\n" -#~ "\n" -#~ "{}" -#~ msgstr "" -#~ "Czy chcesz zapisać {} plików konfiguracyjnych do następujących lokalizacji?\n" -#~ "\n" -#~ "{}" - -#~ msgid "Add :" -#~ msgstr "Dodaj :" - -#~ msgid "Value :" -#~ msgstr "Wartość :" - -#, python-brace-format -#~ msgid "Edit {origkey} :" -#~ msgstr "Edytuj {origkey} :" - -#~ msgid "Copy to :" -#~ msgstr "Kopiuj do :" - -#~ msgid "Edite :" -#~ msgstr "Edytuj :" - -#~ msgid "Key :" -#~ msgstr "Klucz :" diff --git a/examples/archinstall/archinstall/locales/pt/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/pt/LC_MESSAGES/base.mo deleted file mode 100644 index b56a290..0000000 Binary files a/examples/archinstall/archinstall/locales/pt/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/pt/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/pt/LC_MESSAGES/base.po deleted file mode 100644 index f4af84f..0000000 --- a/examples/archinstall/archinstall/locales/pt/LC_MESSAGES/base.po +++ /dev/null @@ -1,1826 +0,0 @@ -# Translators: -# Hugo Carvalho -# -msgid "" -msgstr "" -"Project-Id-Version: archinstall\n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Hugo Carvalho \n" -"Language-Team: Portuguese \n" -"Language: pt\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.6\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] Foi criado um ficheiro de registo aqui: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Submeta este problema (e ficheiro) para https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "Quer mesmo abortar?" - -msgid "And one more time for verification: " -msgstr "E mais uma vez para verificação: " - -msgid "Would you like to use swap on zram?" -msgstr "Pretende usar a swap em zram?" - -msgid "Desired hostname for the installation: " -msgstr "Nome do computador desejado para a instalação: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "Nome de utilizador para o superutilizador com privilégios sudo: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "Algum utilizador adicional para instalar (deixar em branco para nenhum utilizador): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "Deve este utilizador ser um superutilizador (sudoer)?" - -msgid "Select a timezone" -msgstr "Selecionar um fuso horário" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "Pretende usar o GRUB como carregador de arranque em vez do systemd-boot?" - -msgid "Choose a bootloader" -msgstr "Escolha um carregador de arranque" - -msgid "Choose an audio server" -msgstr "Escolha um servidor de áudio" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Apenas pacotes como base, base-devel, linux, linux-firmware, efibootmgr e pacotes opcionais de perfil são instalados." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "Se quer um navegador web, como firefox ou chromium, deve especificá-lo na pergunta seguinte." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "Inserir pacotes adicionais a instalar (separados por espaço, deixar em branco para ignorar): " - -msgid "Copy ISO network configuration to installation" -msgstr "Copiar a configuração de rede da ISO para a instalação" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "Usar o Gestor de Redes \"NetworkManager\" (necessário para configurar Internet graficamente em GNOME e KDE)" - -msgid "Select one network interface to configure" -msgstr "Selecionar uma interface de rede para configurar" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "Selecionar qual o modo a configurar para \"{}\" ou ignorar para usar o modo predefinido \"{}\"" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "Inserir o IP e sub-rede para {} (exemplo: 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "Inserir o seu IP de gateway (router) ou deixe em branco para nenhum: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "Inserir os servidores DNS (separados por espaço, deixe em branco para nenhum): " - -msgid "Select which filesystem your main partition should use" -msgstr "Selecionar o sistema de ficheiros que a partição principal deve utilizar" - -msgid "Current partition layout" -msgstr "Esquema atual da partições" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"Seleciona o que fazer com\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "Inserir o tipo de sistema de ficheiros desejado para a partição" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "Inserir o local inicial (em unidades do parted: s, GB, %, etc. ; predefinido: {}): " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "Inserir o local final (em unidades do parted: s, GB, %, etc. ; predefinido: {}): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} contém partições em fila de espera, isto irá removê-las. Tem a certeza?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"Selecionar por índice quais partições remover" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"Selecionar por índice quais partições montar em" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * Os pontos de montagem das partições são relativos ao interior da instalação, o boot seria /boot por exemplo." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "Selecionar onde montar a partição (deixa em branco para remover o ponto de montagem): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"Selecionar a partição a marcar para formatação" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"Selecionar a partição a marcar como encriptada" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"Selecionar a partição a marcar como de arranque" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"Selecionar a partição a definir um sistema de ficheiros" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "Introduza o tipo de sistema de ficheiros desejado para a partição: " - -msgid "Archinstall language" -msgstr "Idioma do Archinstall" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Limpar todos os discos selecionados e usar um esquema de partições predefinido de melhor desempenho" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Selecionar o que fazer com cada disco individual (seguido de uso de partição)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "Selecionar o que deseja fazer com os dispositivos de bloco selecionados" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "Esta é uma lista de perfis pré-programados, podem facilitar a instalação de ambientes de trabalho" - -msgid "Select keyboard layout" -msgstr "Selecionar o esquema de teclado" - -msgid "Select one of the regions to download packages from" -msgstr "Selecionar uma das regiões a partir da qual pretende transferir pacotes" - -msgid "Select one or more hard drives to use and configure" -msgstr "Selecionar um ou mais discos rígidos para usar e configurar" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "Para uma melhor compatibilidade com o teu hardware AMD, poderás querer usar a opção de todos os controladores de código-aberto ou com proprietários da AMD / ATI." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "Para uma melhor compatibilidade com o teu hardware Intel, poderás querer usar a opção de todos os controladores de código-aberto ou com proprietários da Intel.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Para uma melhor compatibilidade com o teu hardware Nvidia, poderás querer usar o controlador proprietário da Nvidia.\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Selecionar um controlador de gráficos ou deixa em branco para instalar todos os controladores de código-aberto" - -msgid "All open-source (default)" -msgstr "Todos os controladores de código-aberto (predefinido)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "Escolher os kernels a usar ou deixe em branco para a predefinição \"{}\"" - -msgid "Choose which locale language to use" -msgstr "Escolher qual idioma de localização usar" - -msgid "Choose which locale encoding to use" -msgstr "Escolher qual codificação de localização usar" - -msgid "Select one of the values shown below: " -msgstr "Selecionar uma das opções mostradas abaixo: " - -msgid "Select one or more of the options below: " -msgstr "Selecionar uma ou mais opções abaixo: " - -msgid "Adding partition...." -msgstr "Adicionando partição...." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "Precisa de colocar um tipo de sistema de ficheiros valido. Ver o `man parted` para ver as opções validas." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Erro: a listar os perfis em URL \"{}\" resulta em:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "Erro: não foi possível decodificar \"{}\" como JSON:" - -msgid "Keyboard layout" -msgstr "Esquema do teclado" - -msgid "Mirror region" -msgstr "Região do espelho" - -msgid "Locale language" -msgstr "Idioma de localização" - -msgid "Locale encoding" -msgstr "Codificação de localização" - -msgid "Drive(s)" -msgstr "Unidade(s)" - -msgid "Disk layout" -msgstr "Esquema do disco" - -msgid "Encryption password" -msgstr "Palavra-passe de encriptação" - -msgid "Swap" -msgstr "Swap" - -msgid "Bootloader" -msgstr "Carregador de arranque" - -msgid "Root password" -msgstr "Palavra-passe do root" - -msgid "Superuser account" -msgstr "Conta de superutilizador" - -msgid "User account" -msgstr "Conta de utilizador" - -msgid "Profile" -msgstr "Perfil" - -msgid "Audio" -msgstr "Áudio" - -msgid "Kernels" -msgstr "Kernels" - -msgid "Additional packages" -msgstr "Pacotes adicionais" - -msgid "Network configuration" -msgstr "Configuração de rede" - -msgid "Automatic time sync (NTP)" -msgstr "Sincronização automática de tempo (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "Instalar ({} configuração(s) em falta)" - -msgid "" -"You decided to skip harddrive selection\n" -"and will use whatever drive-setup is mounted at {} (experimental)\n" -"WARNING: Archinstall won't check the suitability of this setup\n" -"Do you wish to continue?" -msgstr "" -"Decidiu ignorar a seleção de disco rígido\n" -"e usar qualquer configuração de disco rígido montada em {} (experimental)\n" -"ATENÇÃO: O archinstall não verifica a viabilidade desta configuração\n" -"Quer continuar?" - -msgid "Re-using partition instance: {}" -msgstr "A reutilizar a instância da partição: {}" - -msgid "Create a new partition" -msgstr "Criar uma nova partição" - -msgid "Delete a partition" -msgstr "Eliminar uma partição" - -msgid "Clear/Delete all partitions" -msgstr "Limpar/Eliminar todas as partições" - -msgid "Assign mount-point for a partition" -msgstr "Atribuir um ponto de montagem para uma partição" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "Marcar/Desmarcar uma partição para ser formatada (apaga os dados)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "Marcar/Desmarcar uma partição como encriptada" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "Marcar/Desmarcar uma partição como de arranque (automática para /boot)" - -msgid "Set desired filesystem for a partition" -msgstr "Definir o sistema de ficheiros desejado para uma partição" - -msgid "Abort" -msgstr "Cancelar" - -msgid "Hostname" -msgstr "Nome do computador" - -msgid "Not configured, unavailable unless setup manually" -msgstr "Não configurado, indisponível a não ser que seja configurado manualmente" - -msgid "Timezone" -msgstr "Fuso horário" - -msgid "Set/Modify the below options" -msgstr "Definir/Modificar as opções abaixo" - -msgid "Install" -msgstr "Instalar" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"Utilizar ESC para ignorar\n" -"\n" - -msgid "Suggest partition layout" -msgstr "Sugerir esquema de partições" - -msgid "Enter a password: " -msgstr "Introduzir uma palavra-passe: " - -msgid "Enter a encryption password for {}" -msgstr "Introduzir uma palavra-passe de encriptação para {}" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "Introduzir palavra-passe de encriptação do disco (deixar em branco para nenhuma encriptação): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "Criar um super-utilizador com privilégios de sudo: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "Introduzir palavra-passe do root (deixar em branco para desativar o root): " - -msgid "Password for user \"{}\": " -msgstr "Palavra-passe para o utilizador \"{}\": " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "A verificar se existem pacotes adicionais (isto pode demorar alguns segundos)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "Gostaria de utilizar a sincronização automática da hora (NTP) com os servidores de hora predefinidos?\n" - -msgid "" -"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" -"For more information, please check the Arch wiki" -msgstr "" -"A hora do equipamento e outros passos após a configuração podem ser necessários para que o NTP funcione.\n" -"Para mais informações, consulte a wiki do Arch" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "Introduzir um nome de utilizador para criar um utilizador adicional (deixar em branco para ignorar): " - -msgid "Use ESC to skip\n" -msgstr "Utilizar ESC para ignorar\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -" Escolher um objeto da lista, e selecionar uma das ações disponíveis para executar" - -msgid "Cancel" -msgstr "Cancelar" - -msgid "Confirm and exit" -msgstr "Confirmar e sair" - -msgid "Add" -msgstr "Adicionar" - -msgid "Copy" -msgstr "Copiar" - -msgid "Edit" -msgstr "Editar" - -msgid "Delete" -msgstr "Eliminar" - -msgid "Select an action for '{}'" -msgstr "Selecionar uma ação para '{}'" - -msgid "Copy to new key:" -msgstr "Copiar para nova chave:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "Tipo de NIC desconhecido: {}. Possíveis valores são {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"Esta é a sua configuração escolhida:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "O pacman já está em execução, aguardando no máximo 10 minutos para terminar." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "O bloqueio pré-existente do pacman nunca terminou. Limpar quaisquer sessões pacman existentes antes de usar o archinstall." - -msgid "Choose which optional additional repositories to enable" -msgstr "Escolher quais repositórios adicionais opcionais a ativar" - -msgid "Add a user" -msgstr "Adicionar utilizador" - -msgid "Change password" -msgstr "Alterar a palavra-passe" - -msgid "Promote/Demote user" -msgstr "Promover/Demover utilizador" - -msgid "Delete User" -msgstr "Eliminar utilizador" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"Definir um novo utilizador\n" - -msgid "User Name : " -msgstr "Nome de utilizador : " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "{} deve ser um superutilizador (sudoer)?" - -msgid "Define users with sudo privilege: " -msgstr "Definir utilizadores com privilégio sudo: " - -msgid "No network configuration" -msgstr "Nenhuma configuração de rede" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "Definir subvolumes desejados numa partição btrfs" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"Selecione em qual partição definir subvolumes" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "Gerir subvolumes btrfs para a partição atual" - -msgid "No configuration" -msgstr "Nenhuma configuração" - -msgid "Save user configuration" -msgstr "Guardar configuração de utilizador" - -msgid "Save user credentials" -msgstr "Guardar credenciais de utilizador" - -msgid "Save disk layout" -msgstr "Guardar esquema de disco" - -msgid "Save all" -msgstr "Guardar tudo" - -msgid "Choose which configuration to save" -msgstr "Escolher qual a configuração a guardar" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "Introduzir um diretório para a(s) configuração(ões) a guardar: " - -msgid "Not a valid directory: {}" -msgstr "Não é um diretório válido: {}" - -msgid "The password you are using seems to be weak," -msgstr "A palavra-passe que está a usar parece ser fraca," - -msgid "are you sure you want to use it?" -msgstr "tem a certeza que pretende usá-la?" - -msgid "Optional repositories" -msgstr "Repositórios opcionais" - -msgid "Save configuration" -msgstr "Guardar configuração" - -msgid "Missing configurations:\n" -msgstr "Configurações em falta:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "É necessário especificar uma palavra-passe root ou pelo menos 1 super-utilizador" - -msgid "Manage superuser accounts: " -msgstr "Gerir contas de superutilizador: " - -msgid "Manage ordinary user accounts: " -msgstr "Gerir contas de utilizador normal: " - -msgid " Subvolume :{:16}" -msgstr " Subvolume :{:16}" - -msgid " mounted at {:16}" -msgstr " montado em {:16}" - -msgid " with option {}" -msgstr " com opção {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -" Preencher os valores desejados para um novo subvolume \n" - -msgid "Subvolume name " -msgstr "Nome do subvolume " - -msgid "Subvolume mountpoint" -msgstr "Ponto de montagem do subvolume" - -msgid "Subvolume options" -msgstr "Opções do subvolume" - -msgid "Save" -msgstr "Guardar" - -msgid "Subvolume name :" -msgstr "Nome do subvolume :" - -msgid "Select a mount point :" -msgstr "Selecionar um ponto de montagem :" - -msgid "Select the desired subvolume options " -msgstr "Selecionar as opções desejadas do subvolume " - -msgid "Define users with sudo privilege, by username: " -msgstr "Definir utilizadores com privilégio sudo, por nome de utilizador: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] Um ficheiro de registo foi criado aqui: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "Gostaria de usar subvolumes BTRFS com a estrutura predefinida?" - -msgid "Would you like to use BTRFS compression?" -msgstr "Gostaria de usar a compressão BTRFS?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "Gostaria de criar uma partição separada para /home?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "As unidades selecionadas não tem a capacidade mínima para sugestão automática\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "Capacidade mínima para partição /home : {}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Capacidade mínima para a partição do Arch Linux: {}GB" - -msgid "Continue" -msgstr "Continuar" - -msgid "yes" -msgstr "sim" - -msgid "no" -msgstr "não" - -msgid "set: {}" -msgstr "definir: {}" - -msgid "Manual configuration setting must be a list" -msgstr "A definição da configuração manual deve ser uma lista" - -msgid "No iface specified for manual configuration" -msgstr "Nenhuma iface especificada para configuração manual" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "A configuração manual de NIC sem DHCP automático requer um endereço IP" - -msgid "Add interface" -msgstr "Adicionar interface" - -msgid "Edit interface" -msgstr "Editar interface" - -msgid "Delete interface" -msgstr "Eliminar interface" - -msgid "Select interface to add" -msgstr "Selecionar interface a adicionar" - -msgid "Manual configuration" -msgstr "Configuração manual" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "Marcar/desmarcar a partição como comprimida (apenas btrfs)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "A palavra-passe que está a usar parece ser fraca, tem a certeza que deseja utilizá-la?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "Disponibiliza uma seleção de ambientes gráficos e gestores de janela como por exemplo gnome, kde, sway" - -msgid "Select your desired desktop environment" -msgstr "Selecionar o ambiente gráfico desejado" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "Uma instalação bem básica que permite-lhe personalizar o Arch Linux como desejar." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "Proporciona uma seleção de diversos pacotes do servidor a instalar e ativar como por exemplo httpd, nginx, mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "Escolher os servidores a instalar, se não houver nenhum, será efetuada uma instalação mínima" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "Instala um sistema mínimo assim como o xorg e controladores de vídeo." - -msgid "Press Enter to continue." -msgstr "Prima Enter para continuar." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "Gostaria de fazer chroot na instalação recém-criada e executar a configuração pós-instalação?" - -msgid "Are you sure you want to reset this setting?" -msgstr "Tem a certeza que pretende repor esta configuração?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "Selecionar uma ou mais unidades a usar e configurar\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "Quaisquer modificações na configuração existente irá repor o esquema de disco!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "Se repor a seleção da unidade isto também repor o esquema do disco atual. Tem a certeza?" - -msgid "Save and exit" -msgstr "Guardar e sair" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"contém partições em fila de espera, isto irá removê-las, tem a certeza?" - -msgid "No audio server" -msgstr "Sem servidor de áudio" - -msgid "(default)" -msgstr "(predefinição)" - -msgid "Use ESC to skip" -msgstr "Utilizar ESC para ignorar" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"Utilizar CTRL+C para repor a seleção atual\n" -"\n" - -msgid "Copy to: " -msgstr "Copiar para: " - -msgid "Edit: " -msgstr "Editar: " - -msgid "Key: " -msgstr "Chave: " - -msgid "Edit {}: " -msgstr "Editar {}: " - -msgid "Add: " -msgstr "Adicionar: " - -msgid "Value: " -msgstr "Valor: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "Pode ignorar a seleção de unidade e particionar seja lá o que estiver montado em /mnt (experimental)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "Selecionar um dos discos ou ignorar e usar /mnt como predefinição" - -msgid "Select which partitions to mark for formatting:" -msgstr "Selecionar quais partições a marcar para formatar:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "Usar HSM para desbloquear unidade encriptada" - -msgid "Device" -msgstr "Dispositivo" - -msgid "Size" -msgstr "Tamanho" - -msgid "Free space" -msgstr "Espaço livre" - -msgid "Bus-type" -msgstr "Tipo de barramento" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "Deve-se especificar uma palavra-passe root ou pelo menos 1 utilizador com privilégios de sudo" - -msgid "Enter username (leave blank to skip): " -msgstr "Introduzir um nome de utilizador (deixe em branco para ignorar): " - -msgid "The username you entered is invalid. Try again" -msgstr "O nome de utilizador que introduziu é inválido. Tente novamente" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "\"{}\" deve ser um superutilizador (sudo)?" - -msgid "Select which partitions to encrypt" -msgstr "Selecionar quais as partições a encriptar" - -msgid "very weak" -msgstr "muito fraca" - -msgid "weak" -msgstr "fraca" - -msgid "moderate" -msgstr "moderada" - -msgid "strong" -msgstr "forte" - -msgid "Add subvolume" -msgstr "Adicionar subvolume" - -msgid "Edit subvolume" -msgstr "Editar subvolume" - -msgid "Delete subvolume" -msgstr "Eliminar subvolume" - -msgid "Configured {} interfaces" -msgstr "{} interfaces configuradas" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "Esta opção ativa o número de transferências paralelas que podem ocorrer durante a instalação" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"Inserir o número de transferências paralelas a ativar.\n" -" (Inserir um valor entre 1 e {})\n" -"Nota:" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - Valor máximo : {} ( Permite {} transferências paralelas, permite {} transferências de cada vez )" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - Valor mínimo : 1 ( Permite 1 transferência paralela, permite 2 transferências de cada vez )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - Desativar/Padrão : 0 ( Desativa as transferências paralelas, permite apenas 1 transferência de cada vez )" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "Entrada inválida! Tente novamente com uma entrada válida [1 para {max_downloads}, ou 0 para desativar]" - -msgid "Parallel Downloads" -msgstr "Transferências paralelas" - -msgid "ESC to skip" -msgstr "ESC para ignorar" - -msgid "CTRL+C to reset" -msgstr "CTRL+C para repor" - -msgid "TAB to select" -msgstr "TAB para selecionar" - -msgid "[Default value: 0] > " -msgstr "[Valor predefinido: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "Para poder usar esta tradução, instale manualmente um tipo de letra que suporte o idioma." - -msgid "The font should be stored as {}" -msgstr "O tipo de letra deve ser armazenado como {}" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "O archinstall requer privilégios root para ser executado. Ver --help para mais informações." - -msgid "Select an execution mode" -msgstr "Selecionar um modo de execução" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "Não foi possível obter o perfil a partir do URL especificado: {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "Os perfis devem ter nomes únicos, mas foram encontradas definições de perfil com nomes duplicados: {}" - -msgid "Select one or more devices to use and configure" -msgstr "Selecionar um ou mais dispositivos a usar e configurar" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "Se repor a seleção do dispositivo, também irá repor o esquema atual do disco. Tem a certeza?" - -msgid "Existing Partitions" -msgstr "Partições existentes" - -msgid "Select a partitioning option" -msgstr "Selecionar uma opção de particionamento" - -msgid "Enter the root directory of the mounted devices: " -msgstr "Inserir o diretório root dos dispositivos montados: " - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "Capacidade mínima para partição /home : {}GiB\n" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "Capacidade mínima para a partição do 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 é uma lista de perfis pré-programados, que podem por exemplo facilitar a instalação de ambientes gráficos" - -msgid "Current profile selection" -msgstr "Seleção de perfil atual" - -msgid "Remove all newly added partitions" -msgstr "Remover todas as partições recém adicionadas" - -msgid "Assign mountpoint" -msgstr "Atribuir um ponto de montagem" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "Marcar/Desmarcar para ser formatada (apaga os dados)" - -msgid "Mark/Unmark as bootable" -msgstr "Marcar/Desmarcar como partição de arranque" - -msgid "Change filesystem" -msgstr "Alterar sistema de ficheiros" - -msgid "Mark/Unmark as compressed" -msgstr "Marcar/Desmarcar como comprimida" - -msgid "Set subvolumes" -msgstr "Definir subvolumes" - -msgid "Delete partition" -msgstr "Eliminar partição" - -msgid "Partition" -msgstr "Partição" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "Esta partição está atualmente encriptada. Para a formatar, deve ser especificado um sistema de ficheiros" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "Os pontos de montagem das partições são relativos ao interior da instalação, o boot seria /boot por exemplo." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "Se o ponto de montagem /boot for definido, a partição também será marcada como de arranque." - -msgid "Mountpoint: " -msgstr "Ponto de montagem: " - -msgid "Current free sectors on device {}:" -msgstr "Atuais setores livres no dispositivo {}:" - -msgid "Total sectors: {}" -msgstr "Total de setores: {}" - -msgid "Enter the start sector (default: {}): " -msgstr "Inserir o setor inicial (predefinido: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "Inserir o setor final da partição (percentagem ou número de bloco, predefinido: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "Isto irá remover todas as partições recém adicionadas, continuar?" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "Gestão de partições: {}" - -#, python-brace-format -msgid "Total length: {}" -msgstr "Tamanho total: {}" - -msgid "Encryption type" -msgstr "Tipo de encriptação" - -msgid "Iteration time" -msgstr "Tempo de iteração" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "Insira o tempo de iteração para a encriptação LUKS (em milissegundos)" - -msgid "Higher values increase security but slow down boot time" -msgstr "Valores mais altos aumentam a segurança, mas diminuem o tempo de arranque" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "Predefinido: 10000 ms, intervalo recomendado: 1000-60000" - -msgid "Iteration time cannot be empty" -msgstr "O tempo de iteração não pode estar em branco" - -msgid "Iteration time must be at least 100ms" -msgstr "O tempo de iteração deve ser de pelo menos 100 ms" - -msgid "Iteration time must be at most 120000ms" -msgstr "O tempo de iteração deve ser, no máximo, 120000 ms" - -msgid "Please enter a valid number" -msgstr "Insira um número válido" - -msgid "Partitions" -msgstr "Partições" - -msgid "No HSM devices available" -msgstr "Nenhum dispositivo HSM disponível" - -msgid "Partitions to be encrypted" -msgstr "Partições a serem encriptadas" - -msgid "Select disk encryption option" -msgstr "Selecionar a opção de encriptação de disco" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "Selecionar um dispositivo FIDO2 para usar como HSM" - -msgid "Use a best-effort default partition layout" -msgstr "Usar um esquema de partições predefinido de melhor desempenho" - -msgid "Manual Partitioning" -msgstr "Particionamento manual" - -msgid "Pre-mounted configuration" -msgstr "Configuração pré-montada" - -msgid "Unknown" -msgstr "Desconhecido" - -msgid "Partition encryption" -msgstr "Encriptação de partições" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr " ! A formatar {} em " - -msgid "← Back" -msgstr "← Voltar" - -msgid "Disk encryption" -msgstr "Encriptação do disco" - -msgid "Configuration" -msgstr "Configuração" - -msgid "Password" -msgstr "Palavra-passe" - -msgid "All settings will be reset, are you sure?" -msgstr "Todas as definições serão repostas, tem a certeza?" - -msgid "Back" -msgstr "Voltar" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "Escolher qual a interface gráfica de início de sessão a instalar para os perfis escolhidos: {}" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "Tipo de ambiente: {}" - -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 proprietário Nvidia não é suportado pelo Sway. É provável que encontre problemas. Está de acordo com isso?" - -msgid "Installed packages" -msgstr "Pacotes instalados" - -msgid "Add profile" -msgstr "Adicionar perfil" - -msgid "Edit profile" -msgstr "Editar perfil" - -msgid "Delete profile" -msgstr "Eliminar perfil" - -msgid "Profile name: " -msgstr "Nome do perfil: " - -msgid "The profile name you entered is already in use. Try again" -msgstr "O nome do perfil que introduziu já está a ser utilizado. Tente novamente" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "Pacotes a serem instalados com este perfil (separados por espaço, deixe em branco para ignorar): " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "Serviços a serem ativados com este perfil (separados por espaço, deixe em branco para ignorar): " - -msgid "Should this profile be enabled for installation?" -msgstr "Este perfil deve ser ativado para a instalação?" - -msgid "Create your own" -msgstr "Criar o seu próprio" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Selecionar um controlador gráfico ou deixe em branco para instalar todos os controladores de código aberto" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "O Sway precisa de acesso ao seu \"seat\" (conjunto de dispositivos de hardware, como o teclado, o rato, etc)" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Selecionar uma opção para permitir o acesso do Sway ao seu hardware" - -msgid "Graphics driver" -msgstr "Controlador gráfico" - -msgid "Greeter" -msgstr "Interface gráfica de início de sessão" - -msgid "Please chose which greeter to install" -msgstr "Escolher qual a interface gráfica de início de sessão a instalar" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "Esta é uma lista de perfis pré-programados (default_profiles)" - -msgid "Disk configuration" -msgstr "Configuração do disco" - -msgid "Profiles" -msgstr "Perfis" - -msgid "Finding possible directories to save configuration files ..." -msgstr "A procurar possíveis diretórios para guardar os ficheiros de configuração ..." - -msgid "Select directory (or directories) for saving configuration files" -msgstr "Selecionar um ou mais diretórios para guardar ficheiros de configuração" - -msgid "Add a custom mirror" -msgstr "Adicionar um espelho personalizado" - -msgid "Change custom mirror" -msgstr "Alterar espelho personalizado" - -msgid "Delete custom mirror" -msgstr "Eliminar espelho personalizado" - -msgid "Enter name (leave blank to skip): " -msgstr "Inserir o nome (deixe em branco para ignorar): " - -msgid "Enter url (leave blank to skip): " -msgstr "Insira o url (deixe em branco para ignorar): " - -msgid "Select signature check option" -msgstr "Selecionar a opção de verificação da assinatura" - -msgid "Select signature option" -msgstr "Selecionar a opção de assinatura" - -msgid "Custom mirrors" -msgstr "Espelhos personalizados" - -msgid "Defined" -msgstr "Definido" - -msgid "Save user configuration (including disk layout)" -msgstr "Guardar configuração de utilizador (incluindo esquema do disco)" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"Insira um diretório para a(s) configuração(ões) a guardar (preenchimento automático com a tecla tab ativado): \n" -"Guardar diretório: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"Pretende guardar o(s) ficheiro(s) de configuração de {} na seguinte localização?\n" -"\n" -"{}" - -msgid "Saving {} configuration files to {}" -msgstr "A guardar ficheiros de configuração de {} para {}" - -msgid "Mirrors" -msgstr "Espelhos" - -msgid "Mirror regions" -msgstr "Regiões dos espelhos" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - Valor máximo : {} ( Permite {} transferências paralelas, permite {max_downloads+1} transferências de cada vez )" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "Entrada inválida! Tente novamente com uma entrada válida [1 para {}, ou 0 para desativar]" - -msgid "Locales" -msgstr "Localidades" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "Usar o Gestor de Redes \"NetworkManager\" (necessário para configurar a Internet graficamente no GNOME e KDE)" - -msgid "Total: {} / {}" -msgstr "Total: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "Todos os valores inseridos podem ser sufixados com uma unidade: B, KB, KiB, MB, MiB..." - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "Se nenhuma unidade for fornecida, o valor será interpretado como setores" - -msgid "Enter start (default: sector {}): " -msgstr "Inserir o início (predefinido: sector {}): " - -msgid "Enter end (default: {}): " -msgstr "Inserir o fim (predefinido: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "Não foi possível determinar os dispositivos fido2. A libfido2 está instalada?" - -msgid "Path" -msgstr "Caminho" - -msgid "Manufacturer" -msgstr "Fabricante" - -msgid "Product" -msgstr "Produto" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "Configuração inválida: {error}" - -msgid "Type" -msgstr "Tipo" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "Esta opção ativa o número de transferências paralelas que podem ocorrer durante as transferências de pacotes" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"Inserir o número de transferências paralelas a ativar.\n" -"\n" -"Nota:\n" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - Valor máximo recomendado : {} ( Permite {} transferências paralelas de cada vez )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - Desativar/Predefinido : 0 ( Desativa as transferências paralelas, permite apenas 1 transferência de cada vez )\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "Entrada inválida! Tente novamente com uma entrada válida [ou 0 para desativar]" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "O Hyprland precisa de acesso ao seu \"seat\" (conjunto de dispositivos de hardware, como o teclado, o rato, etc)" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Selecionar uma opção para permitir o acesso do Hyprland ao seu hardware" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "Todos os valores inseridos podem ser sufixados com uma unidade: %, B, KB, KiB, MB, MiB..." - -msgid "Would you like to use unified kernel images?" -msgstr "Gostaria de usar imagens de kernel unificados?" - -msgid "Unified kernel images" -msgstr "Imagens de kernel unificados" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "À espera que a sincronização da hora (timedatectl show) seja concluída." - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "A sincronização da hora não está a ser concluída, enquanto espera - consulte a documentação para obter soluções alternativas: https://archinstall.readthedocs.io/" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "Ignorar a espera pela sincronização automática da hora (isto pode causar problemas se a hora estiver dessincronizada durante a instalação)" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "À espera que a sincronização do chaveiro do Arch Linux (archlinux-keyring-wkd-sync) seja concluída." - -msgid "Selected profiles: " -msgstr "Perfis selecionados: " - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "A sincronização da hora não está a ser concluída, enquanto espera - consulte a documentação para obter soluções alternativas: https://archinstall.readthedocs.io/" - -msgid "Mark/Unmark as nodatacow" -msgstr "Marcar/Desmarcar como nodatacow" - -msgid "Would you like to use compression or disable CoW?" -msgstr "Pretende utilizar a compressão ou desativar o CoW?" - -msgid "Use compression" -msgstr "Usar compressão" - -msgid "Disable Copy-on-Write" -msgstr "Desativar Copy-on-Write" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "Disponibiliza uma seleção de ambientes gráficos e gestores de janelas em mosaico, por exemplo, GNOME, KDE Plasma, Sway" - -#, python-brace-format -msgid "Configuration type: {}" -msgstr "Tipo de configuração: {}" - -msgid "LVM configuration type" -msgstr "Tipo de configuração LVM" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "A encriptação de disco LVM com mais de 2 partições não é atualmente suportada" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "Usar o Gestor de redes \"NetworkManager\" (necessário para configurar a Internet graficamente no GNOME e no KDE Plasma)" - -msgid "Select a LVM option" -msgstr "Selecionar uma opção LVM" - -msgid "Partitioning" -msgstr "Particionamento" - -msgid "Logical Volume Management (LVM)" -msgstr "Gestão de volumes lógicos (LVM)" - -msgid "Physical volumes" -msgstr "Volumes físicos" - -msgid "Volumes" -msgstr "Volumes" - -msgid "LVM volumes" -msgstr "Volumes LVM" - -msgid "LVM volumes to be encrypted" -msgstr "Volumes LVM a encriptar" - -msgid "Select which LVM volumes to encrypt" -msgstr "Selecionar os volumes LVM a encriptar" - -msgid "Default layout" -msgstr "Estrutura predefinida" - -msgid "No Encryption" -msgstr "Sem encriptação" - -msgid "LUKS" -msgstr "LUKS" - -msgid "LVM on LUKS" -msgstr "LVM em LUKS" - -msgid "LUKS on LVM" -msgstr "LUKS em LVM" - -msgid "Yes" -msgstr "Sim" - -msgid "No" -msgstr "Não" - -msgid "Archinstall help" -msgstr "Ajuda do Archinstall" - -msgid " (default)" -msgstr " (predefinição)" - -msgid "Press Ctrl+h for help" -msgstr "Prima Ctrl+h para obter ajuda" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "Escolha uma opção para dar ao Sway acesso ao seu hardware" - -msgid "Seat access" -msgstr "Acesso à estação de trabalho" - -msgid "Mountpoint" -msgstr "Ponto de montagem" - -msgid "HSM" -msgstr "HSM" - -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "Introduzir a palavra-passe de encriptação do disco (deixar em branco para não haver encriptação)" - -msgid "Disk encryption password" -msgstr "Palavra-passe de encriptação do disco" - -msgid "Partition - New" -msgstr "Partição - Nova" - -msgid "Filesystem" -msgstr "Sistema de ficheiros" - -msgid "Invalid size" -msgstr "Tamanho inválido" - -msgid "Start (default: sector {}): " -msgstr "Início (predefinido: sector {}): " - -msgid "End (default: {}): " -msgstr "Fim (predefinido: {}): " - -msgid "Subvolume name" -msgstr "Nome do subvolume" - -msgid "Disk configuration type" -msgstr "Tipo de configuração do disco" - -msgid "Root mount directory" -msgstr "Diretório de montagem root" - -msgid "Select language" -msgstr "Selecionar idioma" - -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "Escreva pacotes adicionais a instalar (separados por espaços, deixe em branco para ignorar)" - -msgid "Invalid download number" -msgstr "Número de transferência inválido" - -msgid "Number downloads" -msgstr "Número de transferências" - -msgid "The username you entered is invalid" -msgstr "O nome de utilizador introduzido é inválido" - -msgid "Username" -msgstr "Nome de utilizador" - -#, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "Deverá \"{}\" ser um superutilizador (sudo)?\n" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "É necessário introduzir um IP válido no modo IP-config" - -msgid "Modes" -msgstr "Modos" - -msgid "IP address" -msgstr "Endereço de IP" - -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "Introduzir o endereço IP do gateway (router) (deixar em branco para nenhum)" - -msgid "Gateway address" -msgstr "Endereço do gateway" - -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "Introduzir os servidores DNS separados por espaços (deixe em branco para nenhum)" - -msgid "DNS servers" -msgstr "Servidores de DNS" - -msgid "Configure interfaces" -msgstr "Configurar interfaces" - -msgid "Kernel" -msgstr "Kernel" - -msgid "UEFI is not detected and some options are disabled" -msgstr "A UEFI não foi detetada e algumas opções estão desativadas" - -msgid "Info" -msgstr "Info" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "O controlador proprietário Nvidia não é suportado pelo Sway." - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "É provável que se depare com problemas. Está de acordo com isso?" - -msgid "Main profile" -msgstr "Perfil principal" - -msgid "Confirm password" -msgstr "Confirmar palavra-passe" - -msgid "The confirmation password did not match, please try again" -msgstr "A palavra-passe de confirmação não coincide, tente novamente" - -msgid "Not a valid directory" -msgstr "Não é um diretório válido" - -msgid "Would you like to continue?" -msgstr "Gostaria de continuar?" - -msgid "Directory" -msgstr "Diretório" - -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "Introduzir um diretório para a(s) configuração(ões) a guardar (preenchimento com a tecla Tab ativado)" - -#, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "Pretende guardar o(s) ficheiro(s) de configuração em {}?" - -msgid "Enabled" -msgstr "Ativado" - -msgid "Disabled" -msgstr "Desativado" - -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "Submeta este problema (e ficheiro) para https://github.com/archlinux/archinstall/issues" - -msgid "Mirror name" -msgstr "Nome do espelho" - -msgid "Url" -msgstr "URL" - -msgid "Select signature check" -msgstr "Selecionar verificação de assinatura" - -msgid "Select execution mode" -msgstr "Selecionar modo de execução" - -msgid "Press ? for help" -msgstr "Prima ? para obter ajuda" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "Selecionar uma opção para permitir que o Hyprland aceda ao seu hardware" - -msgid "Additional repositories" -msgstr "Repositórios adicionais" - -msgid "NTP" -msgstr "NTP" - -msgid "Swap on zram" -msgstr "Swap em zram" - -msgid "Name" -msgstr "Nome" - -msgid "Signature check" -msgstr "Verificação de assinatura" - -#, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "Segmento de espaço livre selecionado no dispositivo {}:" - -#, python-brace-format -msgid "Size: {} / {}" -msgstr "Tamanho: {} / {}" - -#, python-brace-format -msgid "Size (default: {}): " -msgstr "Tamanho (predefinido: {}): " - -msgid "HSM device" -msgstr "Dispositivo HSM" - -msgid "Some packages could not be found in the repository" -msgstr "Alguns pacotes não foram encontrados no repositório" - -msgid "User" -msgstr "Utilizador" - -msgid "The specified configuration will be applied" -msgstr "A configuração especificada vai ser aplicada" - -msgid "Wipe" -msgstr "Apagar" - -msgid "Mark/Unmark as XBOOTLDR" -msgstr "Marcar/Desmarcar como XBOOTLDR" - -msgid "Loading packages..." -msgstr "A carregar pacotes..." - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "Selecionar na lista abaixo os pacotes que devem ser instalados adicionalmente" - -msgid "Add a custom repository" -msgstr "Adicionar um repositório personalizado" - -msgid "Change custom repository" -msgstr "Alterar repositório personalizado" - -msgid "Delete custom repository" -msgstr "Eliminar repositório personalizado" - -msgid "Repository name" -msgstr "Nome do repositório" - -msgid "Add a custom server" -msgstr "Adicionar um servidor personalizado" - -msgid "Change custom server" -msgstr "Alterar servidor personalizado" - -msgid "Delete custom server" -msgstr "Eliminar servidor personalizado" - -msgid "Server url" -msgstr "URL do servidor" - -msgid "Select regions" -msgstr "Selecionar regiões" - -msgid "Add custom servers" -msgstr "Adicionar servidores personalizados" - -msgid "Add custom repository" -msgstr "Adicionar repositório personalizado" - -msgid "Loading mirror regions..." -msgstr "A carregar regiões dos espelhos..." - -msgid "Mirrors and repositories" -msgstr "Espelhos e repositórios" - -msgid "Selected mirror regions" -msgstr "Regiões de espelhos selecionadas" - -msgid "Custom servers" -msgstr "Servidores personalizados" - -msgid "Custom repositories" -msgstr "Repositórios personalizados" - -msgid "Only ASCII characters are supported" -msgstr "Apenas caracteres ASCII são suportados" - -msgid "Show help" -msgstr "Mostrar ajuda" - -msgid "Exit help" -msgstr "Sair da ajuda" - -msgid "Preview scroll up" -msgstr "Rolar visualização para cima" - -msgid "Preview scroll down" -msgstr "Rolar visualização para baixo" - -msgid "Move up" -msgstr "Mover para cima" - -msgid "Move down" -msgstr "Mover para baixo" - -msgid "Move right" -msgstr "Mover para a direita" - -msgid "Move left" -msgstr "Mover para a esquerda" - -msgid "Jump to entry" -msgstr "Ir para entrada" - -msgid "Skip selection (if available)" -msgstr "Ignorar seleção (se disponível)" - -msgid "Reset selection (if available)" -msgstr "Repor seleção (se disponível)" - -msgid "Select on single select" -msgstr "Selecionar em escolha única" - -msgid "Select on multi select" -msgstr "Selecionar em múltipla escolha" - -msgid "Reset" -msgstr "Repor" - -msgid "Skip selection menu" -msgstr "Ignorar menu de seleção" - -msgid "Start search mode" -msgstr "Iniciar modo de pesquisa" - -msgid "Exit search mode" -msgstr "Sair do modo de pesquisa" - -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "O labwc precisa de acesso ao seu seat (conjunto de dispositivos de hardware, como teclado, rato etc.)" - -msgid "Choose an option to give labwc access to your hardware" -msgstr "Escolha uma opção para conceder ao labwc acesso ao seu hardware" - -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "O niri precisa de acesso ao seu seat (conjunto de dispositivos de hardware, como teclado, rato etc.)" - -msgid "Choose an option to give niri access to your hardware" -msgstr "Escolha uma opção para conceder ao niri acesso ao seu hardware" - -msgid "Mark/Unmark as ESP" -msgstr "Marcar/Desmarcar como ESP" - -msgid "Package group:" -msgstr "Grupo de pacotes:" - -msgid "Exit archinstall" -msgstr "Sair do archinstall" - -msgid "Reboot system" -msgstr "Reiniciar sistema" - -msgid "chroot into installation for post-installation configurations" -msgstr "Entrar em chroot na instalação para configurações pós-instalação" - -msgid "Installation completed" -msgstr "Instalação concluída" - -msgid "What would you like to do next?" -msgstr "O que gostaria de fazer a seguir?" - -#, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "Selecione qual modo configurar para \"{}\"" - -msgid "Incorrect credentials file decryption password" -msgstr "Palavra-passe incorreta para desencriptar o ficheiro de credenciais" - -msgid "Incorrect password" -msgstr "Palavra-passe incorreta" - -msgid "Credentials file decryption password" -msgstr "Palavra-passe para desencriptar o ficheiro de credenciais" - -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "Pretende desencriptar o ficheiro user_credentials.json?" - -msgid "Credentials file encryption password" -msgstr "Palavra-passe de encriptação do ficheiro de credenciais" - -#, python-brace-format -msgid "Repositories: {}" -msgstr "Repositórios: {}" - -#, fuzzy -msgid "New version available" -msgstr "Nenhum dispositivo HSM disponível" - -#, fuzzy -msgid "Passwordless login" -msgstr "Palavra-passe" - -msgid "Second factor login" -msgstr "" - -msgid "Bluetooth" -msgstr "" - -#, fuzzy -msgid "Would you like to configure Bluetooth?" -msgstr "Gostaria de continuar?" - -msgid "Authentication" -msgstr "" - -msgid "Applications" -msgstr "" - -msgid "U2F login method: " -msgstr "" - -msgid "Passwordless sudo: " -msgstr "" - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "" - -msgid "Syncing the system..." -msgstr "" - -#, fuzzy -msgid "Value cannot be empty" -msgstr "O tempo de iteração não pode estar em branco" - -msgid "Snapshot type" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Snapshot type: {}" -msgstr "Tipo de ambiente: {}" - -msgid "U2F login setup" -msgstr "" - -msgid "No U2F devices found" -msgstr "" - -msgid "U2F Login Method" -msgstr "" - -#, fuzzy -msgid "Enable passwordless sudo?" -msgstr "Introduzir uma palavra-passe: " - -#, fuzzy, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "Selecionar um dispositivo FIDO2 para usar como HSM" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "" - -msgid "Starting device modifications in " -msgstr "" - -#, fuzzy -msgid "No network connection found" -msgstr "Nenhuma configuração de rede" - -#, fuzzy -msgid "Would you like to connect to a Wifi?" -msgstr "Gostaria de continuar?" - -#, fuzzy -msgid "No wifi interface found" -msgstr "Configurar interfaces" - -#, fuzzy -msgid "Select wifi network to connect to" -msgstr "Selecionar uma interface de rede para configurar" - -msgid "Scanning wifi networks..." -msgstr "" - -#, fuzzy -msgid "No wifi networks found" -msgstr "Nenhuma configuração de rede" - -msgid "Failed setting up wifi" -msgstr "" - -#, fuzzy -msgid "Enter wifi password" -msgstr "Introduzir uma palavra-passe: " - -msgid "Ok" -msgstr "" diff --git a/examples/archinstall/archinstall/locales/pt_BR/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/pt_BR/LC_MESSAGES/base.mo deleted file mode 100644 index d8cc753..0000000 Binary files a/examples/archinstall/archinstall/locales/pt_BR/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/pt_BR/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/pt_BR/LC_MESSAGES/base.po deleted file mode 100644 index bcf772b..0000000 --- a/examples/archinstall/archinstall/locales/pt_BR/LC_MESSAGES/base.po +++ /dev/null @@ -1,1835 +0,0 @@ -# Translators: -# @Cain-dev (cain-dev.github.io) -# Rafael Fontenelle -# Jefferson Michael -# Diogo Silva -# Mário Victor Ribeiro Silva -# Rafael Fontenelle , 2023. -# Luis Antonio , 2025. -# Luiz Felipe , 2025. -msgid "" -msgstr "" -"Project-Id-Version: archinstall\n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2025-07-22 20:18\n" -"Last-Translator: Luiz Felipe \n" -"Language-Team: \n" -"Language: pt_BR\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 3.5\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] Um arquivo de registro foi criado aqui: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Por favor, envie este problema (e o arquivo) para: https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "Tem certeza de que deseja abortar?" - -msgid "And one more time for verification: " -msgstr "Digite novamente para confirmação: " - -msgid "Would you like to use swap on zram?" -msgstr "Deseja usar zram como swap?" - -msgid "Desired hostname for the installation: " -msgstr "Nome do computador (hostname) desejado para a instalação: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "Nome de usuário para a conta administrativa (sudo): " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "Criar usuários adicionais (deixe em branco para nenhum): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "Este usuário deve ter previlégios de administrador? (sudo)?" - -msgid "Select a timezone" -msgstr "Selecione o fuso horário" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "Deseja usar o GRUB como bootloader em vez do systemd-boot?" - -msgid "Choose a bootloader" -msgstr "Escolha um bootloader" - -msgid "Choose an audio server" -msgstr "Escolha um servidor de áudio" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Apenas pacotes como base, base-devel, linux, linux-firmware, efibootmgr e pacotes opcionais de perfil são instalados." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "Se quiser um navegador web, como Firefox ou Chromium, especifique-o no próximo prompt." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "Digite pacotes adicionais para instalar (separados por espaço, deixe em branco para pular): " - -msgid "Copy ISO network configuration to installation" -msgstr "Copiar a configuração de rede da ISO para a instalação" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "Usar NetworkManager (necessário para configurar internet graficamente no GNOME e KDE)" - -msgid "Select one network interface to configure" -msgstr "Selecione uma interface de rede para configurar" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "Selecione qual modo configurar para \"{}\" ou pule para usar o modo padrão \"{}\"" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "Digite o IP e a sub-rede para {} (exemplo: 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "Digite o IP do gateway (roteador) ou deixe em branco para nenhum: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "Digite os servidores DNS (separados por espaço, deixe em branco para nenhum): " - -msgid "Select which filesystem your main partition should use" -msgstr "Selecione qual sistema de arquivos a partição principal deverá usar" - -msgid "Current partition layout" -msgstr "Layout de partições atual" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"Selecione o que fazer com\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "Digite o tipo de sistema de arquivos desejado para a partição" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "Digite o local inicial (em unidades do parted: s, GB, %, etc. ; padrão: {}): " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "Digite o local final (em unidades do parted: s, GB, %, etc. ; exemplo: {}): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} contém partições na fila; isso irá removê‑las. Tem certeza?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"Selecione por índice quais partições deletar" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"Selecione por índice quais partições montar em" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * Os pontos de montagem são relativos ao sistema instalado; por exemplo, boot fica em /boot" - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "Selecione onde montar a partição (deixe em branco para remover o ponto de montagem): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"Selecione qual partição mascarar para formatar" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"Selecione qual partição marcar como encriptada" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"Selecione qual partição marcar como inicializável" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"Selecione qual partição definir um sistema de arquivos" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "Insira o tipo de sistema de arquivos desejado para a partição: " - -msgid "Archinstall language" -msgstr "Idioma do Archinstall" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Apagar todos os discos selecionados e usar um esquema de partições padrão de melhor desempenho" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Selecione o que fazer com cada disco individual (seguido de uso da partição)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "Selecione o que deseja fazer com os dispositivos de bloco selecionados" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "Esta é uma lista de perfis pré-programados, que podem por exemplo facilitar a instalação de ambientes gráficos" - -msgid "Select keyboard layout" -msgstr "Selecione o layout de teclado" - -msgid "Select one of the regions to download packages from" -msgstr "Selecione uma das regiões para baixar os pacotes" - -msgid "Select one or more hard drives to use and configure" -msgstr "Selecione um ou mais discos rígidos para usar e configurar" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "Para melhor compatibilidade com seu hardware AMD, recomenda-se usar a opção totalmente open source ou as opções AMD / ATI." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "Para melhor compatibilidade com seu hardware Intel, recomenda-se usar a opção totalmente open source ou as opções Intel.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Para melhor compatibilidade com seu hardware Nvidia, recomenda-se usar o driver proprietário da Nvidia.\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Selecione um driver de vídeo ou deixe em branco para instalar os drivers completamente open-source" - -msgid "All open-source (default)" -msgstr "Tudo open-source (padrão)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "Escolhe quais kernels usar ou deixe em branco para o kernel padrão \"{}\"" - -msgid "Choose which locale language to use" -msgstr "Escolha qual idioma de localização usar" - -msgid "Choose which locale encoding to use" -msgstr "Escolha qual codificação de localização usar" - -msgid "Select one of the values shown below: " -msgstr "Selecione uma dos valores mostrados abaixo: " - -msgid "Select one or more of the options below: " -msgstr "Selecione uma ou mais das opções abaixo: " - -msgid "Adding partition...." -msgstr "Adicionando partição...." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "Você precisa definir um tipo de sistema de arquivo válido. Consulte o `man parted` para verificar os tipos de sistemas de arquivo válido." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Erro: Listando os perfis em URL \"{}\" resulta em:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "Erro: Não foi possível decodificar \"{}\" como JSON:" - -msgid "Keyboard layout" -msgstr "Layout do teclado" - -msgid "Mirror region" -msgstr "Região do mirror" - -msgid "Locale language" -msgstr "Idioma de localização" - -msgid "Locale encoding" -msgstr "Codificação de localização" - -msgid "Drive(s)" -msgstr "Unidades de armazenamento" - -msgid "Disk layout" -msgstr "Layout da unidade" - -msgid "Encryption password" -msgstr "Senha de encriptação" - -msgid "Swap" -msgstr "Swap" - -msgid "Bootloader" -msgstr "Inicializador" - -msgid "Root password" -msgstr "Senha de root" - -msgid "Superuser account" -msgstr "Conta de superusuário" - -msgid "User account" -msgstr "Conta de usuário" - -msgid "Profile" -msgstr "Perfil" - -msgid "Audio" -msgstr "Áudio" - -msgid "Kernels" -msgstr "Kernels" - -msgid "Additional packages" -msgstr "Pacotes adicionais" - -msgid "Network configuration" -msgstr "Configuração de rede" - -msgid "Automatic time sync (NTP)" -msgstr "Sincronização automática de tempo (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "Instalar ({} configuração(s) em falta)" - -msgid "" -"You decided to skip harddrive selection\n" -"and will use whatever drive-setup is mounted at {} (experimental)\n" -"WARNING: Archinstall won't check the suitability of this setup\n" -"Do you wish to continue?" -msgstr "" -"Você decidiu ignorar a seleção de disco rígido\n" -"e usar qualquer configuração de disco rígido montada em {} (experimental)\n" -"ATENÇÃO: O Archinstall não verifica a viabilidade desta configuração\n" -"Deseja continuar?" - -msgid "Re-using partition instance: {}" -msgstr "Reutilizando a instância da partição: {}" - -msgid "Create a new partition" -msgstr "Criar uma nova partição" - -msgid "Delete a partition" -msgstr "Deletar uma partição" - -msgid "Clear/Delete all partitions" -msgstr "Limpar/Deletar todas as partições" - -msgid "Assign mount-point for a partition" -msgstr "Atribuir um ponto de montagem para uma partição" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "Marcar/Desmarcar uma partição para ser formatada (apaga os dados)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "Marcar/Desmarcar uma partição como encriptada" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "Marcar/Desmarcar uma partição como inicializável (automática para /boot)" - -msgid "Set desired filesystem for a partition" -msgstr "Definir o sistema de arquivos desejado para uma partição" - -msgid "Abort" -msgstr "Cancelar" - -msgid "Hostname" -msgstr "Nome do computador (hostname)" - -msgid "Not configured, unavailable unless setup manually" -msgstr "Não configurado, indisponível a não ser que seja configurado manualmente" - -msgid "Timezone" -msgstr "Fuso horário" - -msgid "Set/Modify the below options" -msgstr "Definir/Modificar as opções abaixo" - -msgid "Install" -msgstr "Instalar" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"Use ESC para pular\n" -"\n" - -msgid "Suggest partition layout" -msgstr "Sugerir esquema de partição" - -msgid "Enter a password: " -msgstr "Digite uma senha: " - -msgid "Enter a encryption password for {}" -msgstr "Digite uma senha de encriptação para {}" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "Digite a senha de encriptação do disco (deixe em branco para não encriptar): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "Criar um superusuário requerido com privilégios de sudo: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "Digite uma senha de root (deixe em branco para desativar root): " - -msgid "Password for user \"{}\": " -msgstr "Senha para o usuário \"{}\": " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "Verificando se existem pacotes adicionais (isto pode demorar alguns segundos)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "Deseja usar sincronização de tempo automática (NTP) com os servidores de tempo padrão?\n" - -msgid "" -"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" -"For more information, please check the Arch wiki" -msgstr "" -"A hora de hardware e outros passos de pós-configuração podem ser necessários para que o NTP funcione.\n" -"Para mais informações, por favor visite a wiki do Arch" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "Digite um nome de usuário para criar um usuário adicional (deixe em branco para pular): " - -msgid "Use ESC to skip\n" -msgstr "Use ESC para pular\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -" Escolha um objeto da lista, e selecione uma das ações disponíveis para executar" - -msgid "Cancel" -msgstr "Cancelar" - -msgid "Confirm and exit" -msgstr "Confirmar e sair" - -msgid "Add" -msgstr "Adicionar" - -msgid "Copy" -msgstr "Copiar" - -msgid "Edit" -msgstr "Editar" - -msgid "Delete" -msgstr "Deletar" - -msgid "Select an action for '{}'" -msgstr "Selecione uma ação para '{}'" - -msgid "Copy to new key:" -msgstr "Copiar para nova chave:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "Tipo de NIC desconhecido: {}. Possíveis valores são {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"Esta é a configuração escolhida escolhida por você:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "O Pacman já está em execução, aguarde no máximo até 10 minutos para terminar." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "A trava pré-existente do Pacman não terminou. Por favor, limpe as sessões de pacman existentes antes de usar o archinstall." - -msgid "Choose which optional additional repositories to enable" -msgstr "Escolha quais repositórios adicionais opcionais ativar" - -msgid "Add a user" -msgstr "Adicionar usuário" - -msgid "Change password" -msgstr "Mudar senha" - -msgid "Promote/Demote user" -msgstr "Promover/Rebaixar usuário" - -msgid "Delete User" -msgstr "Deletar usuário" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"Definir um novo usuário\n" - -msgid "User Name : " -msgstr "Nome de usuário : " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "{} deve ser um superusuário (sudoer)?" - -msgid "Define users with sudo privilege: " -msgstr "Defina usuários com privilégio sudo: " - -msgid "No network configuration" -msgstr "Nenhuma configuração de rede" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "Definir subvolumes desejados numa partição btrfs" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"Selecione em qual partição definir subvolumes" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "Administrar subvolumes btrfs para a partição atual" - -msgid "No configuration" -msgstr "Nenhuma configuração" - -msgid "Save user configuration" -msgstr "Salvar configuração de usuário" - -msgid "Save user credentials" -msgstr "Salvar credenciais de usuário" - -msgid "Save disk layout" -msgstr "Salvar layout de disco" - -msgid "Save all" -msgstr "Salvar tudo" - -msgid "Choose which configuration to save" -msgstr "Escolha qual configuração salvar" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "Digite um diretório para as configurações serem salvas: " - -msgid "Not a valid directory: {}" -msgstr "Não é um diretório válido: {}" - -msgid "The password you are using seems to be weak," -msgstr "A senha que está usando parece ser fraca," - -msgid "are you sure you want to use it?" -msgstr "tem certeza que deseja usá-la?" - -msgid "Optional repositories" -msgstr "Repositórios opcionais" - -msgid "Save configuration" -msgstr "Salvar configuração" - -msgid "Missing configurations:\n" -msgstr "Configurações em falta:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "Deve se especificar uma senha de root ou pelo menos 1 superusuário" - -msgid "Manage superuser accounts: " -msgstr "Administrar contas de superusuário: " - -msgid "Manage ordinary user accounts: " -msgstr "Administrar contas de usuário padrão: " - -msgid " Subvolume :{:16}" -msgstr " Subvolume :{:16}" - -msgid " mounted at {:16}" -msgstr " montado em {:16}" - -msgid " with option {}" -msgstr " com opção {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -" Preencha os valores desejados para um novo subvolume \n" - -msgid "Subvolume name " -msgstr "Nome do subvolume " - -msgid "Subvolume mountpoint" -msgstr "Ponto de montagem do subvolume" - -msgid "Subvolume options" -msgstr "Opções do subvolume" - -msgid "Save" -msgstr "Salvar" - -msgid "Subvolume name :" -msgstr "Nome do subvolume :" - -msgid "Select a mount point :" -msgstr "Selecione um ponto de montagem :" - -msgid "Select the desired subvolume options " -msgstr "Selecione as opções desejadas do subvolume " - -msgid "Define users with sudo privilege, by username: " -msgstr "Defina usuários com privilégio sudo, por nome de usuário: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] Um arquivo de log foi criado aqui: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "Deseja usar subvolumes BTRFS com a estrutura padrão?" - -msgid "Would you like to use BTRFS compression?" -msgstr "Deseja usar a compressão BTRFS?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "Deseja criar uma partição separada para /home?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "As unidades selecionadas não tem a capacidade mínima para sugestão automática\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "Capacidade mínima para partição /home : {}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Capacidade mínima para a partição do Arch Linux: {}GB" - -msgid "Continue" -msgstr "Continuar" - -msgid "yes" -msgstr "sim" - -msgid "no" -msgstr "não" - -msgid "set: {}" -msgstr "definir: {}" - -msgid "Manual configuration setting must be a list" -msgstr "O ajuste de configuração manual deve ser em lista" - -msgid "No iface specified for manual configuration" -msgstr "Nenhum iface especificado para configuração manual" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "A configuração manual de NIC sem DHCP automático requer um endereço IP" - -msgid "Add interface" -msgstr "Adicionar interface" - -msgid "Edit interface" -msgstr "Editar interface" - -msgid "Delete interface" -msgstr "Deletar interface" - -msgid "Select interface to add" -msgstr "Selecione interface para adicionar" - -msgid "Manual configuration" -msgstr "Configuração manual" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "Marcar/desmarcar a partição como comprimida (apenas btrfs)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "A senha que você está usando parece ser fraca, tem certeza que deseja utilizá-la?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "Proporciona uma seleção de ambientes gráficos e gerenciadores de janela como por exemplo gnome, kde, sway" - -msgid "Select your desired desktop environment" -msgstr "Selecione o ambiente gráfico desejado" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "Uma instalação bem básica que permite a você customizar o Arch Linux como desejar." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "Proporciona uma seleção de diversos pacotes de servidor para instalar e habilitar como por exemplo httpd, nginx, mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "Selecione quais servidores instalar, se há nenhum uma instalação mínima será feita" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "Instala um sistema mínimo assim como xorg e drivers de vídeo." - -msgid "Press Enter to continue." -msgstr "Tecle Enter para continuar." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "Deseja fazer chroot para a nova instalação e realizar configurações pós-instalação?" - -msgid "Are you sure you want to reset this setting?" -msgstr "Tem certeza que desejar redefinir essa configuração?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "Selecione uma ou mais unidades para usar e configurar\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "Quaisquer modificações para configurações existentes vão redefinir o layout de disco!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "Se você redefinir a seleção de unidades isso também redefinirá o layout da unidade atual. Tem certeza?" - -msgid "Save and exit" -msgstr "Salvar e sair" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"contém partições enfileiradas, isso irá removê-las, tem certeza?" - -msgid "No audio server" -msgstr "Sem servidor de áudio" - -msgid "(default)" -msgstr "(padrão)" - -msgid "Use ESC to skip" -msgstr "Use ESC para pular" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"Use CTRL+C para redefinir a seleção atual\n" -"\n" - -msgid "Copy to: " -msgstr "Copiar para: " - -msgid "Edit: " -msgstr "Editar: " - -msgid "Key: " -msgstr "Chave: " - -msgid "Edit {}: " -msgstr "Editar {}: " - -msgid "Add: " -msgstr "Adicionar: " - -msgid "Value: " -msgstr "Valor: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "Você pode ignorar a seleção de unidade e particionar seja lá o que estiver montado em /mnt (experimental)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "Selecione um dos discos ou ignore e use /mnt como padrão" - -msgid "Select which partitions to mark for formatting:" -msgstr "Selecione quais partições marcar para formatar:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "Usar HSM para desbloquear unidade encriptada" - -msgid "Device" -msgstr "Dispositivo" - -msgid "Size" -msgstr "Tamanho" - -msgid "Free space" -msgstr "Espaço livre" - -msgid "Bus-type" -msgstr "Tipo de barramento" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "Deve-se especificar uma senha de root ou pelo menos 1 usuário com privilégios de sudo" - -msgid "Enter username (leave blank to skip): " -msgstr "Digite um nome de usuário (deixe em branco para pular): " - -msgid "The username you entered is invalid. Try again" -msgstr "O nome de usuário que você digitou é inválido. Tente novamente" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "\"{}\" deve ser um superusuário (sudo)?" - -msgid "Select which partitions to encrypt" -msgstr "Selecione quais partições encriptar" - -msgid "very weak" -msgstr "muito fraca" - -msgid "weak" -msgstr "fraca" - -msgid "moderate" -msgstr "moderada" - -msgid "strong" -msgstr "forte" - -msgid "Add subvolume" -msgstr "Adicionar subvolume" - -msgid "Edit subvolume" -msgstr "Editar subvolume" - -msgid "Delete subvolume" -msgstr "Deletar subvolume" - -msgid "Configured {} interfaces" -msgstr "{} interfaces configuradas" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "Esta opção habilita o número de downloads paralelos que podem ocorrer durante a instalação" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"Insira o número de downloads paralelos para serem habilitados.\n" -" (Insira um valor entre 1 e {})\n" -"Observação:" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - Valor máximo : {} ( Permite {} downloads paralelos, permite {} downloads por vez )" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - Valor mínimo : 1 ( Permite 1 download paralelo, permite 2 downloads por vez )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - Desativar/Padrão : 0 ( Desativa os downloads paralelos, permite apenas 1 download por vez )" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "Entrada inválida! Tente novamente com uma entrada válida [1 para {max_downloads}, ou 0 para desativar]" - -msgid "Parallel Downloads" -msgstr "Downloads Paralelos" - -msgid "ESC to skip" -msgstr "ESC para sair" - -msgid "CTRL+C to reset" -msgstr "CTRL+C para reiniciar" - -msgid "TAB to select" -msgstr "TAB para selecionar" - -msgid "[Default value: 0] > " -msgstr "[Valor padrão: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "Para poder usar esta tradução, instale manualmente uma fonte que suporte o idioma." - -msgid "The font should be stored as {}" -msgstr "A fonte deve ser armazenada como {}" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "O Archinstall requer privilégios de root para ser executado. Consulte --help para mais informações." - -msgid "Select an execution mode" -msgstr "Selecione um modo de execução" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "Não foi possível obter o perfil a partir da URL especificada: {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "Os perfis devem ter nomes únicos, mas foram encontradas definições de perfil com nomes duplicados: {}" - -msgid "Select one or more devices to use and configure" -msgstr "Selecione um ou mais dispositivos para usar e configurar" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "Se você redefinir a seleção de dispositivo isso também redefinirá o layout do dispositivo atual. Tem certeza?" - -msgid "Existing Partitions" -msgstr "Partições existentes" - -msgid "Select a partitioning option" -msgstr "Selecione uma opção de particionamento" - -msgid "Enter the root directory of the mounted devices: " -msgstr "Digite o diretório raiz dos dispositivos montados: " - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "Capacidade mínima para partição /home : {}GiB\n" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "Capacidade mínima para a partição do 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 é uma lista de perfis pré-programados, que podem por exemplo facilitar a instalação de ambientes gráficos" - -msgid "Current profile selection" -msgstr "Seleção de perfil atual" - -msgid "Remove all newly added partitions" -msgstr "Remova todas as partições recém-adicionadas" - -msgid "Assign mountpoint" -msgstr "Atribuir um ponto de montagem" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "Marcar/Desmarcar para ser formatada (apaga os dados)" - -msgid "Mark/Unmark as bootable" -msgstr "Marcar/desmarcar como inicializável" - -msgid "Change filesystem" -msgstr "Mudar arquivo do sistema" - -msgid "Mark/Unmark as compressed" -msgstr "Marcar/desmarcar como comprimida (apenas btrfs)" - -msgid "Set subvolumes" -msgstr "Definir subvolumes" - -msgid "Delete partition" -msgstr "Deletar partição" - -msgid "Partition" -msgstr "Partição" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "Esta partição está criptografada. Para formatá-la, um sistema de arquivos deve ser especificado" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "Os pontos de montagem das partições são relativos aos de dentro da instalação, boot por exemplo seria /boot." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "Se o ponto de montagem /boot for definido, a partição também será marcada como inicializável." - -msgid "Mountpoint: " -msgstr "Ponto de montagem: " - -msgid "Current free sectors on device {}:" -msgstr "Setores livres no dispositivo {}:" - -msgid "Total sectors: {}" -msgstr "Total de setores: {}" - -msgid "Enter the start sector (default: {}): " -msgstr "Digite o setor de início (padrão: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "Digite o setor final da partição (porcentagem ou número de bloco, padrão: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "Isso irá remover todas as partições recém-adicionadas, continuar?" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "Gerenciamento de partições: {}" - -#, python-brace-format -msgid "Total length: {}" -msgstr "Tamanho total: {}" - -msgid "Encryption type" -msgstr "Tipo de encriptação" - -msgid "Iteration time" -msgstr "" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "" - -msgid "Higher values increase security but slow down boot time" -msgstr "" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "" - -msgid "Iteration time cannot be empty" -msgstr "" - -msgid "Iteration time must be at least 100ms" -msgstr "" - -msgid "Iteration time must be at most 120000ms" -msgstr "" - -msgid "Please enter a valid number" -msgstr "" - -msgid "Partitions" -msgstr "Partições" - -msgid "No HSM devices available" -msgstr "Nenhum dispositivo HSM disponível" - -msgid "Partitions to be encrypted" -msgstr "Partições a serem encriptadas" - -msgid "Select disk encryption option" -msgstr "Selecione a opção de encriptação de disco" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "Selecione um dispositivo FIDO2 para usar como HSM" - -msgid "Use a best-effort default partition layout" -msgstr "Usar um esquema de partições padrão de melhor desempenho" - -msgid "Manual Partitioning" -msgstr "Particionamento manual" - -msgid "Pre-mounted configuration" -msgstr "Configuração pré-montada" - -msgid "Unknown" -msgstr "Desconhecido" - -msgid "Partition encryption" -msgstr "Encriptação de partição" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr " ! Formatando {} em " - -msgid "← Back" -msgstr "← Voltar" - -msgid "Disk encryption" -msgstr "Encriptação de disco" - -msgid "Configuration" -msgstr "Configuração" - -msgid "Password" -msgstr "Senha" - -msgid "All settings will be reset, are you sure?" -msgstr "Todas as configurações serão redefinidas, tem certeza?" - -msgid "Back" -msgstr "Voltar" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "Por favor, escolha qual greeter instalar para os perfis escolhidos: {}" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "Tipo de ambiente: {}" - -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 driver proprietário Nvidia não é suportado pelo Sway. É provável que você encontre problemas. Você está de acordo com isso?" - -msgid "Installed packages" -msgstr "Pacotes instalados" - -msgid "Add profile" -msgstr "Adicionar perfil" - -msgid "Edit profile" -msgstr "Editar perfil" - -msgid "Delete profile" -msgstr "Deletar perfil" - -msgid "Profile name: " -msgstr "Nome do perfil: " - -msgid "The profile name you entered is already in use. Try again" -msgstr "O nome do perfil que você digitou já esta em uso. Tente novamente" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "Pacotes a serem instalados com este perfil (separados por espaço, deixe em branco para pular): " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "Serviços a serem ativados com este perfil (separados por espaço, deixe em branco para pular): " - -msgid "Should this profile be enabled for installation?" -msgstr "Este perfil deve ser ativado para instalação?" - -msgid "Create your own" -msgstr "Crie o seu próprio" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Selecione um driver gráfico ou deixe em branco para instalar todos os drivers de código aberto" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "O Sway precisa de acesso ao seu seat (conjunto de dispositivos de hardware, como teclado, mouse, etc)" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Selecione uma opção para permitir o acesso do Sway ao seu hardware" - -msgid "Graphics driver" -msgstr "Driver gráfico" - -msgid "Greeter" -msgstr "Greeter" - -msgid "Please chose which greeter to install" -msgstr "Por favor, escolha qual greeter instalar" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "Esta é uma lista de perfis pré-programados (default_profiles)" - -msgid "Disk configuration" -msgstr "Configuração do disco" - -msgid "Profiles" -msgstr "Perfis" - -msgid "Finding possible directories to save configuration files ..." -msgstr "Procurando possiveis diretórios para salvar os arquivos de configuração ..." - -msgid "Select directory (or directories) for saving configuration files" -msgstr "Selecione um ou mais diretórios para salvar arquivos de configuração" - -msgid "Add a custom mirror" -msgstr "Adicionar mirror personalizado" - -msgid "Change custom mirror" -msgstr "Alterar mirror personalizado" - -msgid "Delete custom mirror" -msgstr "Excluir mirror personalizado" - -msgid "Enter name (leave blank to skip): " -msgstr "Digite o nome (deixe em branco para pular): " - -msgid "Enter url (leave blank to skip): " -msgstr "Digite a url (deixe em branco para pular): " - -msgid "Select signature check option" -msgstr "Selecione uma opção de verificação de assinatura" - -msgid "Select signature option" -msgstr "Selecione uma opção de assinatura" - -msgid "Custom mirrors" -msgstr "Mirrors personalizados" - -msgid "Defined" -msgstr "Definido" - -msgid "Save user configuration (including disk layout)" -msgstr "Salvar configuração de usuário (incluindo layout do disco)" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"Digite um diretório para as configurações serem salvas (completamento de tab ativado): \n" -"Salvar diretório: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"Você deseja salvar arquivo(s) de configuração de {} nos locais a seguir?\n" -"\n" -"{}" - -msgid "Saving {} configuration files to {}" -msgstr "Salvando arquivos de configuração de {} para {}" - -msgid "Mirrors" -msgstr "Mirrors" - -msgid "Mirror regions" -msgstr "Regiões dos mirrors" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - Valor máximo : {} ( Permite {} downloads paralelos, permite {max_downloads+1} downloads por vez )" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "Entrada inválida! Tente novamente com uma entrada válida [1 para {}, ou 0 para desativar]" - -msgid "Locales" -msgstr "Localidades" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "Usar NetworkManager (necessário para configurar internet graficamente no GNOME e KDE)" - -msgid "Total: {} / {}" -msgstr "Total: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "Todos os valores inseridos podem ser seguidos por uma unidade: B, KB, KiB, MB, MiB..." - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "Se nenhuma unidade for fornecida, o valor será interpretado como setores" - -msgid "Enter start (default: sector {}): " -msgstr "Digite o início (padrão: setor {}): " - -msgid "Enter end (default: {}): " -msgstr "Digite fim (padrão: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "Incapaz de determinar dispositivos FIDO2. O libfido2 está instalado?" - -msgid "Path" -msgstr "Caminho" - -msgid "Manufacturer" -msgstr "Fabricante" - -msgid "Product" -msgstr "Produto" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "Configuração inválida: {error}" - -msgid "Type" -msgstr "Tipo" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "Esta opção habilita o número de downloads paralelos que podem ocorrer durante os downloads de pacotes" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"Insira o número de downloads paralelos para serem habilitados.\n" -"\n" -"Observação:\n" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - Valor máximo recomendado : {} ( Permite {} downloads paralelos por vez )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - Desativar/Padrão : 0 ( Desativa os downloads paralelos, permite apenas 1 download por vez )\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "Entrada inválida! Tente novamente com uma entrada válida [ou 0 para desativar]" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "O Hyprland precisa de acesso ao seu seat (conjunto de dispositivos de hardware, como teclado, mouse, etc)" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Selecione uma opção para permitir o acesso do Hyprland ao seu hardware" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "Todos os valores inseridos podem ser seguidos por uma unidade: B, KB, KiB, MB, MiB..." - -msgid "Would you like to use unified kernel images?" -msgstr "Deseja usar imagens de kernel unificados?" - -msgid "Unified kernel images" -msgstr "Imagens de kernel unificados" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "Aguardando a sincronização do fuso horário (timedatectl show) ser concluida." - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Sincronização de fuso horário não concluída, enquanto você espera - confira a documentação para soluções alternativas: https://archinstall.readthedocs.io/" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "Pulando a espera pela sincronização automática de fuso horário (isso pode causar problemas se o fuso horário estiver desincronizado durante a instalação)" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "Aguardando a sincronização do Arch Linux Keyring (archlinux-keyring-wkd-sync) ser concluída." - -msgid "Selected profiles: " -msgstr "Perfis selecionados: " - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Sincronização de fuso horário não concluída, enquanto você espera - confira a documentação para soluções alternativas: https://archinstall.readthedocs.io/" - -msgid "Mark/Unmark as nodatacow" -msgstr "Marcar/desmarcar como nodatacow" - -msgid "Would you like to use compression or disable CoW?" -msgstr "Você gostaria de usar compressão ou desativar a Cópia na Gravação?" - -msgid "Use compression" -msgstr "Usar compressão" - -msgid "Disable Copy-on-Write" -msgstr "Desativar Cópia na Gravação" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "Proporciona uma seleção de ambientes gráficos e gerenciadores de janela como por exemplo gnome, kde, sway" - -#, python-brace-format -msgid "Configuration type: {}" -msgstr "Tipo de configuração: {}" - -msgid "LVM configuration type" -msgstr "Tipo de configuração LVM" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "No momento, não há suporte para a criptografia de disco LVM com mais de duas partições" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "Usar NetworkManager (necessário para configurar internet graficamente no GNOME e KDE)" - -msgid "Select a LVM option" -msgstr "Selecione uma opção de LVM (Gerenciador de Volume Logico)" - -msgid "Partitioning" -msgstr "Particionamento" - -msgid "Logical Volume Management (LVM)" -msgstr "Gerenciamento de Volume Lógico (LVM)" - -msgid "Physical volumes" -msgstr "Volumes físicos" - -msgid "Volumes" -msgstr "Volumes" - -msgid "LVM volumes" -msgstr "Volumes LVM" - -msgid "LVM volumes to be encrypted" -msgstr "Volumes LVM a serem encriptados" - -msgid "Select which LVM volumes to encrypt" -msgstr "Selecione quais volumes LVM encriptar" - -msgid "Default layout" -msgstr "Layout padrão" - -msgid "No Encryption" -msgstr "Sem encriptação" - -msgid "LUKS" -msgstr "LUKS" - -msgid "LVM on LUKS" -msgstr "LVM em LUKS" - -msgid "LUKS on LVM" -msgstr "LUKS em LVM" - -msgid "Yes" -msgstr "Sim" - -msgid "No" -msgstr "Não" - -msgid "Archinstall help" -msgstr "Ajuda do archinstall" - -msgid " (default)" -msgstr " (padrão)" - -msgid "Press Ctrl+h for help" -msgstr "Pressione Ctrl+h para ajuda" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "Selecione uma opção para permitir o acesso do Sway ao seu hardware" - -msgid "Seat access" -msgstr "Acesso ao seat" - -msgid "Mountpoint" -msgstr "Ponto de montagem" - -msgid "HSM" -msgstr "Dispositivo HSM" - -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "Digite a senha de encriptação do disco (deixe em branco para não encriptar):" - -msgid "Disk encryption password" -msgstr "Senha de encriptação do disco" - -msgid "Partition - New" -msgstr "Partição - Nova" - -msgid "Filesystem" -msgstr "Sistema de arquivos" - -msgid "Invalid size" -msgstr "Tamanho inválido" - -msgid "Start (default: sector {}): " -msgstr "Início (padrão: setor {}): " - -msgid "End (default: {}): " -msgstr "Fim (padrão: {}): " - -msgid "Subvolume name" -msgstr "Nome do subvolume" - -msgid "Disk configuration type" -msgstr "Tipo de configuração do disco" - -#, fuzzy -msgid "Root mount directory" -msgstr "Diretório de montagem root" - -msgid "Select language" -msgstr "Selecione uma linguagem" - -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "Digite pacotes adicionais para instalar (separados por espaço, deixe em branco para pular):" - -msgid "Invalid download number" -msgstr "Número de download inválido" - -msgid "Number downloads" -msgstr "Número de downloads" - -msgid "The username you entered is invalid" -msgstr "O nome de usuário que você digitou é inválido" - -msgid "Username" -msgstr "Nome de usuário" - -#, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "\"{}\" deve ser um superusuário (sudo)?\n" - -msgid "Interfaces" -msgstr "Interfaces" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "Você precisa fornecer um IP válido no modo IP-config" - -msgid "Modes" -msgstr "Modos" - -msgid "IP address" -msgstr "Endereço IP" - -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "Digite o seu IP de gateway (roteador) (deixe em branco para nenhum)" - -msgid "Gateway address" -msgstr "Endereço Gateway" - -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "Digite os servidores DNS, separados por espaço, (deixe em branco para nenhum):" - -msgid "DNS servers" -msgstr "Servidores DNS" - -msgid "Configure interfaces" -msgstr "Configurar interfaces" - -msgid "Kernel" -msgstr "Kernel" - -msgid "UEFI is not detected and some options are disabled" -msgstr "UEFI não foi detectado e algumas opções estão desabilitadas" - -msgid "Info" -msgstr "Informação" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "O driver proprietário Nvidia não é suportado pelo Sway." - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "É provável que você encontre problemas. Você está de acordo com isso?" - -msgid "Main profile" -msgstr "Perfil principal" - -msgid "Confirm password" -msgstr "Confirmar senha" - -msgid "The confirmation password did not match, please try again" -msgstr "A senha de confirmação não correspondeu, por favor tente novamente" - -msgid "Not a valid directory" -msgstr "Não é um diretório válido" - -msgid "Would you like to continue?" -msgstr "Deseja continuar?" - -msgid "Directory" -msgstr "Diretório" - -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "Digite um diretório para as configurações serem salvas (completamento de tab ativado):" - -#, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "Você deseja salvar arquivo(s) de configuração para {}?" - -msgid "Enabled" -msgstr "Habilitado" - -msgid "Disabled" -msgstr "Desabilitado" - -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "Por favor, envie este problema (e o arquivo) para: https://github.com/archlinux/archinstall/issues" - -msgid "Mirror name" -msgstr "Nome do Mirror" - -msgid "Url" -msgstr "Url" - -msgid "Select signature check" -msgstr "Selecione uma opção de verificação de assinatura" - -msgid "Select execution mode" -msgstr "Selecione um modo de execução" - -msgid "Press ? for help" -msgstr "Pressione ? para ajuda" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "Selecione uma opção para permitir que Hyprland acesse seu hardware" - -msgid "Additional repositories" -msgstr "Repositórios adicionais" - -msgid "NTP" -msgstr "NTP" - -msgid "Swap on zram" -msgstr "Swap em zram" - -msgid "Name" -msgstr "Nome" - -msgid "Signature check" -msgstr "Verificação de assinatura" - -#, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "Segmento de espaço livre selecionado no dispositivo {}:" - -#, python-brace-format -msgid "Size: {} / {}" -msgstr "Tamanho: {} / {}" - -#, python-brace-format -msgid "Size (default: {}): " -msgstr "Tamanho (padrão: {}): " - -msgid "HSM device" -msgstr "Dispositivo HSM" - -msgid "Some packages could not be found in the repository" -msgstr "Alguns pacotes não foram encontrados no repositório" - -msgid "User" -msgstr "Usuário" - -msgid "The specified configuration will be applied" -msgstr "A configuração especificada vai ser aplicada" - -msgid "Wipe" -msgstr "Apagar" - -msgid "Mark/Unmark as XBOOTLDR" -msgstr "Marcar/Desmarcar como XBOOTLDR" - -msgid "Loading packages..." -msgstr "Carregando pacotes..." - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "Selecione na lista abaixo os pacotes que devem ser instalados adicionalmente" - -msgid "Add a custom repository" -msgstr "Adicionar repositório personalizado" - -msgid "Change custom repository" -msgstr "Alterar repositório personalizado" - -msgid "Delete custom repository" -msgstr "Remover repositório personalizado" - -msgid "Repository name" -msgstr "Nome do repositório" - -msgid "Add a custom server" -msgstr "Adicionar servidor personalizado" - -msgid "Change custom server" -msgstr "Alterar servidor personalizado" - -msgid "Delete custom server" -msgstr "Remover servidor personalizado" - -msgid "Server url" -msgstr "URL do servidor" - -msgid "Select regions" -msgstr "Selecionar regiões" - -msgid "Add custom servers" -msgstr "Adicionar servidores personalizados" - -msgid "Add custom repository" -msgstr "Adicionar repositório personalizado" - -msgid "Loading mirror regions..." -msgstr "Carregando regiões dos mirrors..." - -msgid "Mirrors and repositories" -msgstr "Mirrors e repositórios" - -msgid "Selected mirror regions" -msgstr "Regiões dos mirrors selecionadas" - -msgid "Custom servers" -msgstr "Servidores personalizados" - -msgid "Custom repositories" -msgstr "Repositórios personalizados" - -msgid "Only ASCII characters are supported" -msgstr "Apenas caracteres ASCII são suportados" - -msgid "Show help" -msgstr "Mostrar ajuda" - -msgid "Exit help" -msgstr "Sair da ajuda" - -msgid "Preview scroll up" -msgstr "Rolar visualização para cima" - -msgid "Preview scroll down" -msgstr "Rolar visualização para baixo" - -msgid "Move up" -msgstr "Mover para cima" - -msgid "Move down" -msgstr "Mover para baixo" - -msgid "Move right" -msgstr "Mover para a direita" - -msgid "Move left" -msgstr "Mover para a esquerda" - -msgid "Jump to entry" -msgstr "Ir para entrada" - -msgid "Skip selection (if available)" -msgstr "Pular seleção (se disponível)" - -msgid "Reset selection (if available)" -msgstr "Redefinir seleção (se disponível)" - -msgid "Select on single select" -msgstr "Selecionar em escolha única" - -msgid "Select on multi select" -msgstr "Selecionar em múltipla escolha" - -msgid "Reset" -msgstr "Redefinir" - -msgid "Skip selection menu" -msgstr "Pular menu de seleção" - -msgid "Start search mode" -msgstr "Iniciar modo de busca" - -msgid "Exit search mode" -msgstr "Sair do modo de busca" - -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "O labwc precisa de acesso ao seu seat (conjunto de dispositivos de hardware, como teclado, mouse etc.)" - -msgid "Choose an option to give labwc access to your hardware" -msgstr "Escolha uma opção para conceder ao labwc acesso ao seu hardware" - -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "O niri precisa de acesso ao seu seat (conjunto de dispositivos de hardware, como teclado, mouse etc.)" - -msgid "Choose an option to give niri access to your hardware" -msgstr "Escolha uma opção para conceder ao niri acesso ao seu hardware" - -msgid "Mark/Unmark as ESP" -msgstr "Marcar/Desmarcar como ESP" - -msgid "Package group:" -msgstr "Grupo de pacotes:" - -msgid "Exit archinstall" -msgstr "Sair do archinstall" - -msgid "Reboot system" -msgstr "Reiniciar o sistema" - -msgid "chroot into installation for post-installation configurations" -msgstr "Entrar em chroot na instalação para configurações pós-instalação" - -msgid "Installation completed" -msgstr "Instalação concluída" - -msgid "What would you like to do next?" -msgstr "O que você gostaria de fazer a seguir?" - -#, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "Selecione qual modo configurar para \"{}\"" - -msgid "Incorrect credentials file decryption password" -msgstr "Senha incorreta para descriptografar o arquivo de credenciais" - -msgid "Incorrect password" -msgstr "Senha incorreta" - -msgid "Credentials file decryption password" -msgstr "Senha para descriptografar o arquivo de credenciais" - -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "Você deseja criptografar o arquivo user_credentials.json?" - -msgid "Credentials file encryption password" -msgstr "Senha para criptografar o arquivo de credenciais" - -#, python-brace-format -msgid "Repositories: {}" -msgstr "Repositórios: {}" - -#, fuzzy -msgid "New version available" -msgstr "Nenhum dispositivo HSM disponível" - -#, fuzzy -msgid "Passwordless login" -msgstr "Senha" - -msgid "Second factor login" -msgstr "" - -msgid "Bluetooth" -msgstr "" - -#, fuzzy -msgid "Would you like to configure Bluetooth?" -msgstr "Deseja continuar?" - -msgid "Authentication" -msgstr "" - -msgid "Applications" -msgstr "" - -msgid "U2F login method: " -msgstr "" - -msgid "Passwordless sudo: " -msgstr "" - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "" - -msgid "Syncing the system..." -msgstr "" - -msgid "Value cannot be empty" -msgstr "" - -msgid "Snapshot type" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Snapshot type: {}" -msgstr "Tipo de ambiente: {}" - -msgid "U2F login setup" -msgstr "" - -msgid "No U2F devices found" -msgstr "" - -msgid "U2F Login Method" -msgstr "" - -#, fuzzy -msgid "Enable passwordless sudo?" -msgstr "Digite uma senha: " - -#, fuzzy, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "Selecione um dispositivo FIDO2 para usar como HSM" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "" - -msgid "Starting device modifications in " -msgstr "" - -#, fuzzy -msgid "No network connection found" -msgstr "Nenhuma configuração de rede" - -#, fuzzy -msgid "Would you like to connect to a Wifi?" -msgstr "Deseja continuar?" - -#, fuzzy -msgid "No wifi interface found" -msgstr "Configurar interfaces" - -#, fuzzy -msgid "Select wifi network to connect to" -msgstr "Selecione uma interface de rede para configurar" - -msgid "Scanning wifi networks..." -msgstr "" - -#, fuzzy -msgid "No wifi networks found" -msgstr "Nenhuma configuração de rede" - -msgid "Failed setting up wifi" -msgstr "" - -#, fuzzy -msgid "Enter wifi password" -msgstr "Digite uma senha: " - -msgid "Ok" -msgstr "" - -#~ msgid "When picking a directory to save configuration files to, by default we will ignore the following folders: " -#~ msgstr "Ao selecionar um diretório para salvar arquivos de configuração, por padrão nós ignoramos as seguintes pastas: " diff --git a/examples/archinstall/archinstall/locales/ro/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/ro/LC_MESSAGES/base.mo deleted file mode 100644 index 8be1d63..0000000 Binary files a/examples/archinstall/archinstall/locales/ro/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/ro/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/ro/LC_MESSAGES/base.po deleted file mode 100644 index ac13e4d..0000000 --- a/examples/archinstall/archinstall/locales/ro/LC_MESSAGES/base.po +++ /dev/null @@ -1,1930 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: andrewKode iancu.andrei312@gmail.com\n" -"Language-Team: \n" -"Language: ro\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.3.1\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] Un fișier jurnal a fost creat aici: {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Vă rog să raportați problema (și fișierul) la https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "Sunteți sigur(ă) că doriți să închideți?" - -msgid "And one more time for verification: " -msgstr "Încă odată pentru verificare: " - -msgid "Would you like to use swap on zram?" -msgstr "Doriți să folosiți swap pe zram?" - -msgid "Desired hostname for the installation: " -msgstr "Hostname-ul dorit pentru instalare: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "Nume utilizator necesar pentru utilizatorul cu drepturi privilegiate: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "Alți utilizatori pentru adăugare (lăsați gol pentru niciunul): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "Acest utilizator ar trebui să aibă drepturi privilegiate (sudoer)?" - -msgid "Select a timezone" -msgstr "Selectați un fus orar" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "Doriți să folosiți GRUB ca bootloader în locul systemd-boot?" - -msgid "Choose a bootloader" -msgstr "Selectați un bootloader" - -msgid "Choose an audio server" -msgstr "Selectați un server audio" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Doar pachetele precum base, base-devel, linux, linux-firmware, egibootmgr și cele opționale de profil sunt instalate." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "Dacă doriți un browser, precum firefox sau chromium, puteți să-l specificați în promptul următor." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "Scrieți pachete adiționale pe care doriți să le instalați(separare prin spațiu, lăsați liber pentru a ignora): " - -msgid "Copy ISO network configuration to installation" -msgstr "Copiați configurarea ISO prin rețea la instalare" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "Folosiți NetworkManager (necesar pentru configurarea setărilor de rețea într-un mod grafic pentru GNOME și KDE)" - -msgid "Select one network interface to configure" -msgstr "Selectați o interfață de rețea pentru configurare" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "Selectați modul de configurare pentru \"{}\" sau folosiți modul predefinit \"{}\"" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "Introduceți IP-ul și subrețeaua pentru {} (example: 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "Introduceți IP-ul gateway-ului (router) sau lăsați liber pentru niciunul: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "Introduceți serverele dumneavoastră DNS (separare prin spațiu, lăsați liber pentru a ignora): " - -msgid "Select which filesystem your main partition should use" -msgstr "Selectați sistemul de fișiere dorit pentru partiția dumneavoastră primară" - -msgid "Current partition layout" -msgstr "Schema de partiționare curentă" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"Selectați ce doriți să se întâmple cu\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "Introduceți un sistem de fișiere dorit pentru partiția" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "Introduceți sectorul de început (procentaj sau numărul block-ului, predefinit: {}): " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "Introduceți locația finală (în unități de partiționare: s, GB, %, etc. ; ex: {}): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} conține partiții în așteptare, acest proces le va șterge, doriți acest lucru?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"Selectați pe baza indexului partițiile pentru ștergere" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"Selectați pe baza indexului partițiile pentru a fi montate și locația" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * Punctele de montare ale partițiilor sunt relevante pentru instalate, de exemplu partiția boot va fi /boot." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "Selectați locul de montare a partiției (lăsați gol pentru a șterge punctul de montare): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"Selectați partiția care urmează să fie marcată pentru formatare" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"Selectați partiția care urmează să fie marcată ca fiind cripitată" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"Selectați partiția care urmează să fie marcată ca fiind bootabilă" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"Selectați partiția pentru care urmează să fie setat un sistem de fișiere" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "Introduceți un sistem de fișiere dorit pentru partiție: " - -msgid "Archinstall language" -msgstr "Limba pentru Archinstall" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Șterge toate discurile selectate și folosește cea mai bună schemă de partiționare" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Selectați ce doriți să se întâmple cu fiecare disc în parte (urmat de capacitatea utilizată dorită)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "Selectați ce doriți să faceți cu dispozitivele de tip bloc selectate" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "Aceasta este o listă de profiluri preprogramate, ar putea să ușureze instalarea unor lucruri precum spațiile de lucru" - -msgid "Select keyboard layout" -msgstr "Selectați aranjamentul tastaturii" - -msgid "Select one of the regions to download packages from" -msgstr "Selectați regiunea pentru care se vor descărca pachetele" - -msgid "Select one or more hard drives to use and configure" -msgstr "Selectați unul sau mai multe discuri dure pentru a fi utilizate și configurate" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "Pentru cea mai bună compatibilitate cu hardware-ul dumneavoastră AMD ați putea folosi fie opțiunea All Open-Source sau 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 "Pentru cea mai bună compatibilitate cu hardware-ul dumneavoastră Intel ați putea folosi fie opțiunea All Open-Source sau Intel.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Pentru cea mai bună compatibilitate cu hardware-ul dumneavoastră Nvidia ați putea folosi opțiunea Nvidia proprietary driver.\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Selectați un driver grafic sau lăsați liber pentru a instala toate driverele open-source" - -msgid "All open-source (default)" -msgstr "Toate open-source (predefinit)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "Alegeți nucelii care urmează să fie folosiți sau lăsați liber pentru valorarea predefinită \"{}\"" - -msgid "Choose which locale language to use" -msgstr "Alegeți limba locală pentru utilizare" - -msgid "Choose which locale encoding to use" -msgstr "Alegeți codificarea locală pentru utilizare" - -msgid "Select one of the values shown below: " -msgstr "Selecați o valoare din cele afișate mai jos: " - -msgid "Select one or more of the options below: " -msgstr "Selecați una sau mai multe opțiuni din cele afișate mai jos: " - -msgid "Adding partition...." -msgstr "Adaug partiția...." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "Trebuie să introduceți un tip de fișiere de sistem valid pentru a continua. Vedeți 'man parted' pentru tipurile de fișiere de sistem disponibile." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Eroare: Listare profiluri pe URL \"{}\" rezultate în:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "Eroare: Nu s-a putut decoda rezultatul \"{}\" ca un JSON:" - -msgid "Keyboard layout" -msgstr "Aranjament tastatură" - -msgid "Mirror region" -msgstr "Regiune de oglindire" - -msgid "Locale language" -msgstr "Limba locală" - -msgid "Locale encoding" -msgstr "Codarea locală" - -msgid "Drive(s)" -msgstr "Disc(uri)" - -msgid "Disk layout" -msgstr "Schema discului" - -msgid "Encryption password" -msgstr "Parola de criptare" - -msgid "Swap" -msgstr "Swap" - -msgid "Bootloader" -msgstr "Bootloader" - -msgid "Root password" -msgstr "Parola pentru root" - -msgid "Superuser account" -msgstr "Cont utilizator privilegiat (root)" - -msgid "User account" -msgstr "Cont utilizator" - -msgid "Profile" -msgstr "Profil" - -msgid "Audio" -msgstr "Audio" - -msgid "Kernels" -msgstr "Nuclei" - -msgid "Additional packages" -msgstr "Pachete Adiționale" - -msgid "Network configuration" -msgstr "Configurarea rețelei" - -msgid "Automatic time sync (NTP)" -msgstr "Timpul de sincronizare automate (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "Instalalare ({} lipsă configurație(ii))" - -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 "" -"Ați decis să treceți peste selectarea discurilor dure\n" -"și se va folosi orice configurație de disc montată la {} (experimental)\n" -"ATENȚIE: Archinstall nu va verifica compatibilitatea configurării\n" -"Doriți să continuați?" - -msgid "Re-using partition instance: {}" -msgstr "Reutilizez instanța partiției: {}" - -msgid "Create a new partition" -msgstr "Crează o partiție nouă" - -msgid "Delete a partition" -msgstr "Șterge o partiție" - -msgid "Clear/Delete all partitions" -msgstr "Curăță/Șterge toate partițile" - -msgid "Assign mount-point for a partition" -msgstr "Asignează un punct de montare pentru o partiție" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "Marchează/Demarchează o partiție pentru a fi formatată (șterge toate datele)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "Marchează/Demarchează o partiție pentru a fi criptată" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "Marchează/Demarchează o partiție ca fiind bootabilă (automat pentru /boot)" - -msgid "Set desired filesystem for a partition" -msgstr "Setează sistemul de fișiere dorit pentru o partiție" - -msgid "Abort" -msgstr "Anulează" - -msgid "Hostname" -msgstr "Hostname" - -msgid "Not configured, unavailable unless setup manually" -msgstr "Nu este configurat, indisponibil, doar configurat manual" - -msgid "Timezone" -msgstr "Fus orar" - -msgid "Set/Modify the below options" -msgstr "Setează/Modifică opțiunile de mai jos" - -msgid "Install" -msgstr "Instalează" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"Folosiți ESC pentru a ignora\n" -"\n" - -msgid "Suggest partition layout" -msgstr "Sugerează o schemă de partiționare" - -msgid "Enter a password: " -msgstr "Introduceți o parolă: " - -msgid "Enter a encryption password for {}" -msgstr "Introduceți o parolă de criptare pentru {}" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "Introduceți parola de criptare a discului (lăsați liber pentru a evita criptarea): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "Crează un utilizator cu privilegii (root): " - -msgid "Enter root password (leave blank to disable root): " -msgstr "Introuceți parola pentru root (lăsați liber pentru a dezactiva utilizatorul root): " - -msgid "Password for user \"{}\": " -msgstr "Parola pentru utilizatorul \"{}\": " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "Verific dacă pachetele adiționale există (acest proces ar putea dura câteva secunde)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "Doriți să utilizați sincronizarea timpului automat (NTP) cu serverele de timp predefinite?\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 "" -"Timpul pentru hardware alți pași după configurare ar putea fi necesari pentru ca NTP să funcționeze.\n" -"Pentru mai multe informații verificații documentația Arch (Arch Wiki)" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "Introduceți un nume utilizator pentru a crea un user adițional (lăsați liber pentru a ignora): " - -msgid "Use ESC to skip\n" -msgstr "Foloți ESC pentru a ignora\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -" Alegeți un obiect din listă și selectați o acțiune disponibilă pentru a fi executată" - -msgid "Cancel" -msgstr "Opriți" - -msgid "Confirm and exit" -msgstr "Confirmă și ieși" - -msgid "Add" -msgstr "Adaugă" - -msgid "Copy" -msgstr "Copiază" - -msgid "Edit" -msgstr "Editează" - -msgid "Delete" -msgstr "Șterge" - -msgid "Select an action for '{}'" -msgstr "Selectează o acțiune pentru '{}'" - -msgid "Copy to new key:" -msgstr "Copiază la noua cheie:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "Tip necunoscut: {}. Valorile acceptate sunt {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"Aceasta este configurația selectată de către dumneavoastră:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Pacman rulează deja, aștept maxim 10 minute pentru a termina." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "Procesul pacman anterior nu s-a terminat corect. Vă rog, ștergeți orice sesiune de pacman existentă înainte de a continuea cu archinstall." - -msgid "Choose which optional additional repositories to enable" -msgstr "Alegeți ce colecție opțională de pachete să fie activată" - -msgid "Add a user" -msgstr "Adaugă un utilizator" - -msgid "Change password" -msgstr "Schimbă parola" - -msgid "Promote/Demote user" -msgstr "Promovează/Retrogradează un utilizator" - -msgid "Delete User" -msgstr "Șterge utilizatorul" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"Definește un utilizator nou\n" - -msgid "User Name : " -msgstr "Nume utilizator : " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "Ar trebui ca {} să fie un utilizator cu privilegii (sudoer)?" - -msgid "Define users with sudo privilege: " -msgstr "Definiți utilizatorii cu privilegii sudo: " - -msgid "No network configuration" -msgstr "Nu există o configurare de rețea" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "Setați subvolumele dorite pe o partiție btrfs" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"Selectați partiția pentru care se vor seta subvolumele" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "Administrează subvolumele btrfs pentru partiția curentă" - -msgid "No configuration" -msgstr "Nu există configurație" - -msgid "Save user configuration" -msgstr "Salvează configurația utilizatorului" - -msgid "Save user credentials" -msgstr "Salvează credențialele utilizatorului" - -msgid "Save disk layout" -msgstr "Salvează schema discului" - -msgid "Save all" -msgstr "Salvați tot" - -msgid "Choose which configuration to save" -msgstr "Alegeți configurația dorită pentru salvare" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "Introduceți un director pentru salvarea configurațiilor: " - -msgid "Not a valid directory: {}" -msgstr "Nu este un director valid: {}" - -msgid "The password you are using seems to be weak," -msgstr "Parola pe care doriți să o folosiți pare să fie slabă," - -msgid "are you sure you want to use it?" -msgstr "sigur doriți să o folosiți?" - -msgid "Optional repositories" -msgstr "Colecții de pachete opționale" - -msgid "Save configuration" -msgstr "Salvează configurația" - -msgid "Missing configurations:\n" -msgstr "Configurații lipsă:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "Este necesar ca parola pentru utilizatorul root sau măcar un utilizator cu privilegii să fie adăugat" - -msgid "Manage superuser accounts: " -msgstr "Administrează conturile pentru utilizatorii cu privilegii: " - -msgid "Manage ordinary user accounts: " -msgstr "Adminstrează conturile pentru utilizatorii obișnuiți: " - -msgid " Subvolume :{:16}" -msgstr " Subvolum :{:16}" - -msgid " mounted at {:16}" -msgstr " montat la {:16}" - -msgid " with option {}" -msgstr " cu opțiunea {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -" Completați valorile dorite pentru un subvolum nou \n" - -msgid "Subvolume name " -msgstr "Nume subvolum " - -msgid "Subvolume mountpoint" -msgstr "Punct de montare subvolum" - -msgid "Subvolume options" -msgstr "Opțiuni subvolum" - -msgid "Save" -msgstr "Salvează" - -msgid "Subvolume name :" -msgstr "Nume subvolum :" - -msgid "Select a mount point :" -msgstr "Seleactați un punct de montare :" - -msgid "Select the desired subvolume options " -msgstr "Selectați opțiunile dorite pentru subvolum " - -msgid "Define users with sudo privilege, by username: " -msgstr "Definiți utilizatorii cu privilegii sudo, după nume utilizator: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] Un fișier de jurnal a fost creat aici: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "Doriți să folosiți subvolume BTRFS cu o structură predefinită?" - -msgid "Would you like to use BTRFS compression?" -msgstr "Doriți să folosiți compresie pentru BTRFS?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "Doriți să creați o partiție separată pentru /home?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "Dispozitivele de stocare selectare nu au o capacitate minimă necesară pentru o sugestie automată\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "Capacitatea minimă pentru partiția /home: {}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Capacitatea minimă pentru partiția Arch Linux: {}GB" - -msgid "Continue" -msgstr "Continuă" - -msgid "yes" -msgstr "da" - -msgid "no" -msgstr "nu" - -msgid "set: {}" -msgstr "setează: {}" - -msgid "Manual configuration setting must be a list" -msgstr "Configurație manuală trebuie să fie o listă" - -msgid "No iface specified for manual configuration" -msgstr "Nu a fost menționat iface pentru configurarea manuală" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "Configurarea manuală nic fără un DHCP necesită o adresă IP" - -msgid "Add interface" -msgstr "Adaugă interfață" - -msgid "Edit interface" -msgstr "Editează interfața" - -msgid "Delete interface" -msgstr "Șterge interfața" - -msgid "Select interface to add" -msgstr "Selectează interfața pentru adăugare" - -msgid "Manual configuration" -msgstr "Configurare manuală" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "Marchează/Demarchează o partiție ca fiind comprimată (doar btrfs)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "Parola utilizată pare să fie slabă, sigur doriți să o folosiți pe aceasta?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "Oferă o selecție de medii de lucru și manageri de ferestre precum GNOME, KDE, Sway" - -msgid "Select your desired desktop environment" -msgstr "Selectați mediul de lucru dorit" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "O instalare de bază care vă permite să instalați Arch Linux așa cum vă doriți." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "Oferă o selecție de diferite pachete de sistem pentru instalare și activare precum httpd, nginx, mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "Alegeți serverele dorite pentru instalare, dacă nu este selectat niciunul se va realiza o instalare minimală" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "Instalează un sistem minimal împreună cu xorg și driverele grafice." - -msgid "Press Enter to continue." -msgstr "Apăsați Enter pentru a continua." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "Doriți să folosiți modul chroot pentru a intra în noua instalare și pentru a efectua configurații de post-instalare?" - -msgid "Are you sure you want to reset this setting?" -msgstr "Sigur doriți să resetați această setare?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "Selectați unul sau mai multe discuri dure pentru a utiliza și configura\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "Orice modificare aplicată la setările existene vor resta schema de partiționare a discului!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "Dacă resetați selecția de discuri de stocare acest lucru va rezulta în resetarea schemei de partiționare existente a discului. Sigur doriți acest lucru?" - -msgid "Save and exit" -msgstr "Salvează și ieși" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"conține partiții în așteptare, acest lucru le va șterge, sigur doriți acest lucru?" - -msgid "No audio server" -msgstr "Nu există un server audio" - -msgid "(default)" -msgstr "(predefinit)" - -msgid "Use ESC to skip" -msgstr "Folosiți ESC pentru a ignora" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"Folosi'i CTRL+C pentru a reseta selecția curentă\n" -"\n" - -msgid "Copy to: " -msgstr "Copiază la: " - -msgid "Edit: " -msgstr "Editează: " - -msgid "Key: " -msgstr "Cheie: " - -msgid "Edit {}: " -msgstr "Editează {}: " - -msgid "Add: " -msgstr "Adaugă: " - -msgid "Value: " -msgstr "Valoare: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "Puteți trece peste selectarea unui dispozitiv de stocare și folosiți orice configurație de partiționare este montată la /mnt (experimental)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "Selectați unul din discuri sau ignorați și folosiți /mnt ca predefinit" - -msgid "Select which partitions to mark for formatting:" -msgstr "Selectați partițiile pentru a fi marcate pentru formatare:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "Folosiți HSM pentru deblocarea dispozitivului criptat" - -msgid "Device" -msgstr "Discpozitiv" - -msgid "Size" -msgstr "Mărime" - -msgid "Free space" -msgstr "Spațiu liber" - -msgid "Bus-type" -msgstr "Tip magistrală" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "O parolă pentru utilizatorul root sau măcar un utilizator cu privilegii sudo trebuie adăugat" - -msgid "Enter username (leave blank to skip): " -msgstr "Introduceți numele de utilizator (lăsați gol pentru a ignora): " - -msgid "The username you entered is invalid. Try again" -msgstr "Numele de utilizator adăugat este invalid. Încercați din nou" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "Ar trebui ca \"{}\" să fie un utilizator cu privilegii (sudo)?" - -msgid "Select which partitions to encrypt" -msgstr "Selectați partițiile pentru criptare" - -msgid "very weak" -msgstr "foarte slabă" - -msgid "weak" -msgstr "slabă" - -msgid "moderate" -msgstr "moderată" - -msgid "strong" -msgstr "puetrnică" - -msgid "Add subvolume" -msgstr "Adaugă subvolum" - -msgid "Edit subvolume" -msgstr "Editează subvolum" - -msgid "Delete subvolume" -msgstr "Șterge subvolum" - -msgid "Configured {} interfaces" -msgstr "Configurează interfața {}" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "Această opținea setează numărul de descărcări paralele care pot avea loc în timpul instalării" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"Introduceți numărul de descărcări simultane pentru a fi activat.\n" -" (Introduceți o valuare între 1 și {max_downloads})\n" -"Info:" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - Valoare minimă : 1 ( Permite o descărcare simultană, permite 2 descărcări simultane )" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - Valoare minimă : 1 ( Permite o descărcare simultană, permite 2 descărcări simultane )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - Dezactivează/Predefinit: 0 (Dezactivează descărcările simultane, permite o singură descărcare simultană )" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "Input invalid! Încercați din nou cu un input valid [1 pentru {max_downloads}, sau 0 pentru dezactivare]" - -msgid "Parallel Downloads" -msgstr "Descărcări Simultane" - -msgid "ESC to skip" -msgstr "ESC pentru ignorare" - -msgid "CTRL+C to reset" -msgstr "CTRL+C pentru resetare" - -msgid "TAB to select" -msgstr "TAB pentru a selecta" - -msgid "[Default value: 0] > " -msgstr "[Valoare predefinită: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "Pentru a putea folosi această traducere, vă rog să instalați manual un font compatibil cu această limbă." - -msgid "The font should be stored as {}" -msgstr "Fontul ar trebui salvat ca {}" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "Archinstall necesită privilegii avansate pentru execuție. Vedeți --help pentru mai multe." - -msgid "Select an execution mode" -msgstr "Selectați un mod de execuție" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "Nu se poate prelua profilul de la URL-ul specificat: {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "Profilurile trebuie să aibă nume unicate, dar definiții de profil cu nume duplicate au fost găsite: {}" - -msgid "Select one or more devices to use and configure" -msgstr "Selectați unul sau mai multe discuri dure pentru a fi utilizate și configurate" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "Dacă resetați selecția de discuri de stocare acest lucru va rezulta în resetarea schemei de partiționare existente a discului. Sigur doriți acest lucru?" - -msgid "Existing Partitions" -msgstr "Partiții Existente" - -msgid "Select a partitioning option" -msgstr "Selectați o opțiune de partiționare" - -msgid "Enter the root directory of the mounted devices: " -msgstr "Introduceți directorul rădăcină a dispozitivelor montate: " - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "Capacitatea minimă pentru partiția /home: {}GB\n" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "Capacitatea minimă pentru partiția Arch Linux: {}GB" - -msgid "This is a list of pre-programmed profiles_bck, they might make it easier to install things like desktop environments" -msgstr "Aceasta este o listă de profiluri pre-programate \"profiluris_bck\", ar putea să ușureze instalarea unor lucruri precum spațiile de lucru" - -msgid "Current profile selection" -msgstr "Selecția curentă a profilului" - -msgid "Remove all newly added partitions" -msgstr "Șterge toate partițiile noi adăugate" - -msgid "Assign mountpoint" -msgstr "Asignează punctul de montare" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "Marchează/Demarchează pentru formatare (șterge toate datele)" - -msgid "Mark/Unmark as bootable" -msgstr "Marchează/Demarchează ca bootabil" - -msgid "Change filesystem" -msgstr "Schimbă sistemul de fișiere" - -msgid "Mark/Unmark as compressed" -msgstr "Marchează/Demarchează ca comprimat" - -msgid "Set subvolumes" -msgstr "Setează subvolumele" - -msgid "Delete partition" -msgstr "Șterge partiția" - -msgid "Partition" -msgstr "Partiție" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "Partiția curentă este criptată, pentru a fi formatată un sistem de fișiere trebuie specificat" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "Punctele de montare ale partițiilor sunt relevante pentru instalate, de exemplu partiția boot va fi /boot." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "Dacă punctul de montare /boot este setat, atunci partiția va fi marcată ca fiind bootabilă." - -msgid "Mountpoint: " -msgstr "Punct de montare: " - -msgid "Current free sectors on device {}:" -msgstr "Sectoarele libere curente de pe dispozitiv {}:" - -msgid "Total sectors: {}" -msgstr "Toate sectoarele: {}" - -msgid "Enter the start sector (default: {}): " -msgstr "Introduceți sectorul de început (predefinit: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "Introduceți sectorul de final pentru partiționare (procentaj sau numărul block-ului, predefinit: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "Această acțiune va șterge toate partițiile noi adăugate, continuați?" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "Managementul partiției: {}" - -#, python-brace-format -msgid "Total length: {}" -msgstr "Lungime totală: {}" - -msgid "Encryption type" -msgstr "Tipul de criptare" - -msgid "Iteration time" -msgstr "" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "" - -msgid "Higher values increase security but slow down boot time" -msgstr "" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "" - -msgid "Iteration time cannot be empty" -msgstr "" - -msgid "Iteration time must be at least 100ms" -msgstr "" - -msgid "Iteration time must be at most 120000ms" -msgstr "" - -msgid "Please enter a valid number" -msgstr "" - -msgid "Partitions" -msgstr "Partiții" - -msgid "No HSM devices available" -msgstr "Nicun dispozitiv HSM disponibil" - -msgid "Partitions to be encrypted" -msgstr "Selectați partițiile pentru criptare" - -msgid "Select disk encryption option" -msgstr "Selectați opțiunea pentru criptarea discului" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "Selectați utilizarea unui device FID02 pentru HSM" - -msgid "Use a best-effort default partition layout" -msgstr "Folosește cea mai bună configurație de partiționare" - -msgid "Manual Partitioning" -msgstr "Partiționare manuală" - -msgid "Pre-mounted configuration" -msgstr "Configurație pre-montată" - -msgid "Unknown" -msgstr "Neștiut" - -msgid "Partition encryption" -msgstr "Criptare partiție" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr " ! Se formatează {} in " - -msgid "← Back" -msgstr "← Înapoi" - -msgid "Disk encryption" -msgstr "Criptarea discului" - -msgid "Configuration" -msgstr "Configurație" - -msgid "Password" -msgstr "Parola" - -msgid "All settings will be reset, are you sure?" -msgstr "{} conține partiții în așteptare, acest proces le va șterge, doriți acest lucru?" - -msgid "Back" -msgstr "Înapoi" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "Vă rog selectați un manager de afișare pentru profilurile selectate: {}" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "Tip mediu: {}" - -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 "Driverul proprietar Nvidia nu este compatibil cu Sway. Se poate să aveți probleme, sunteți ok cu asta?" - -msgid "Installed packages" -msgstr "Pachete instalate" - -msgid "Add profile" -msgstr "Adaugă profil" - -msgid "Edit profile" -msgstr "Editează profil" - -msgid "Delete profile" -msgstr "Șterge profil" - -msgid "Profile name: " -msgstr "Nume profil: " - -msgid "The profile name you entered is already in use. Try again" -msgstr "Numele de utilizator adăugat este invalid. Încercați din nou" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "Pachetele care se instalează cu acest profil (separare prin spațiu, lăsați liber pentru a ignora): " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "Serviciile activate cu acest profil (separare prin spațiu, lăsați liber pentru a ignora): " - -msgid "Should this profile be enabled for installation?" -msgstr "Ar trebui ca acest profil să fie bifat pentru instalare?" - -msgid "Create your own" -msgstr "Crează-ți propriul tău" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"Selectați un driver grafic sau lăsați liber pentru a instala toate driverele open-source" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway are nevoie de acces la setup-ul dumneavoastră (colecție de dispozitive hardware ex. tastatura, mouse, etc.)" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Alegeți o opțiune pentru a acorda acces lui Sway la hardware" - -msgid "Graphics driver" -msgstr "Driver grafic" - -msgid "Greeter" -msgstr "Manager afișare" - -msgid "Please chose which greeter to install" -msgstr "Vă rog selectați managerul de afișare pentru instalare" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "Aceasta este o listă cu profiluri pre-programate" - -msgid "Disk configuration" -msgstr "Configurație disc" - -msgid "Profiles" -msgstr "Profiluri" - -msgid "Finding possible directories to save configuration files ..." -msgstr "Caut directoare pentru salvarea fișierelor de configurare ..." - -msgid "Select directory (or directories) for saving configuration files" -msgstr "Selectați directorul (sau directoarele), pentru salvarea fișierelor de configurare" - -msgid "Add a custom mirror" -msgstr "Adaugă o oglindă customizată" - -msgid "Change custom mirror" -msgstr "Schimbă oglinda customizată" - -msgid "Delete custom mirror" -msgstr "Șterge oglinda customizată" - -msgid "Enter name (leave blank to skip): " -msgstr "Introduceți numele (lăsați gol pentru a ignora): " - -msgid "Enter url (leave blank to skip): " -msgstr "Introduceți URL (lăsați gol pentru a ignora): " - -msgid "Select signature check option" -msgstr "Selectați opțiunea pentru verificarea semnăturii" - -msgid "Select signature option" -msgstr "Selectați opțiunea pentru semnătură" - -msgid "Custom mirrors" -msgstr "Oglinzi customizate" - -msgid "Defined" -msgstr "Definit" - -msgid "Save user configuration (including disk layout)" -msgstr "Salvează configurația utilizatorului (schema discului este inclusă)" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"Introduceți un director pentru salvarea configurării (configurațiilor, completare automată cu Tab activată)\n" -"Directorul pentru salvare: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"Doriți să salvați fișierele de configurare {} în această locație?\n" -"\n" -"{]" - -msgid "Saving {} configuration files to {}" -msgstr "Salvez {} fișierele de configurație la {}" - -msgid "Mirrors" -msgstr "Oglinzi" - -msgid "Mirror regions" -msgstr "Regiuni oglinzi" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - Valoare maximă : {} ( Permite {} descărcări simultane, permite {max_downloads+1} descărcări în același timp )" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "Input invalid! Încercați din nou cu un input valid [1 la {}, sau 0 pentru dezactivare]" - -msgid "Locales" -msgstr "Locale" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "Folosiți NetworkManager (necesar pentru configurarea setărilor de rețea într-un mod grafic pentru GNOME și KDE)" - -msgid "Total: {} / {}" -msgstr "Total: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "Toate valorile introduse pot fi notate cu unități precum: B, KB, KiB, MB, MiB ..." - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "Dacă nicio unitate nu este specificate, atunci valorile vor fi interpretate ca sectoare" - -msgid "Enter start (default: sector {}): " -msgstr "Introduceți start (predefinit: sector {}): " - -msgid "Enter end (default: {}): " -msgstr "Introduceți final (predefinit: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "Nu se pot identifica dispozitive de tip fido2. Este libfido2 instalată?" - -msgid "Path" -msgstr "Cale" - -msgid "Manufacturer" -msgstr "Producător" - -msgid "Product" -msgstr "Produs" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "Configurație invalidă: {error}" - -msgid "Type" -msgstr "" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "Această opțiune setează numărul de descărcări paralele care pot avea loc în timpul instalării" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"Introduceți numărul de descărcări simultane pentru a fi activat.\n" -"\n" -"Notă:\n" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - Valoare minimă : {} ( Permite {} descărcări simultane în același timp )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - Dezactivează/Predefinit: 0 (Dezactivează descărcările simultane, permite o singură descărcare în același timp )\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "Input invalid! Încercați din nou cu un input valid [0 pentru dezactivare]" - -#, fuzzy -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway are nevoie de acces la setup-ul dumneavoastră (colecție de dispozitive hardware ex. tastatura, mouse, etc.)" - -#, fuzzy -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Alegeți o opțiune pentru a acorda acces lui Sway la hardware" - -#, fuzzy -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "Toate valorile introduse pot fi notate cu unități precum: B, KB, KiB, MB, MiB ..." - -#, fuzzy -msgid "Would you like to use unified kernel images?" -msgstr "Doriți să folosiți swap pe zram?" - -msgid "Unified kernel images" -msgstr "" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "" - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "" - -#, fuzzy -msgid "Selected profiles: " -msgstr "Șterge profil" - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "" - -#, fuzzy -msgid "Mark/Unmark as nodatacow" -msgstr "Marchează/Demarchează ca bootabil" - -#, fuzzy -msgid "Would you like to use compression or disable CoW?" -msgstr "Doriți să folosiți compresie pentru BTRFS?" - -msgid "Use compression" -msgstr "" - -msgid "Disable Copy-on-Write" -msgstr "" - -#, fuzzy -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "Oferă o selecție de medii de lucru și manageri de ferestre precum GNOME, KDE, Sway" - -#, fuzzy, python-brace-format -msgid "Configuration type: {}" -msgstr "Configurație" - -#, fuzzy -msgid "LVM configuration type" -msgstr "Nu există configurație" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "" - -#, fuzzy -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "Folosiți NetworkManager (necesar pentru configurarea setărilor de rețea într-un mod grafic pentru GNOME și KDE)" - -#, fuzzy -msgid "Select a LVM option" -msgstr "Selectați un fus orar" - -#, fuzzy -msgid "Partitioning" -msgstr "Partiție" - -msgid "Logical Volume Management (LVM)" -msgstr "" - -msgid "Physical volumes" -msgstr "" - -msgid "Volumes" -msgstr "" - -#, fuzzy -msgid "LVM volumes" -msgstr "Setează subvolumele" - -#, fuzzy -msgid "LVM volumes to be encrypted" -msgstr "Selectați partițiile pentru criptare" - -#, fuzzy -msgid "Select which LVM volumes to encrypt" -msgstr "Selectați partițiile pentru criptare" - -#, fuzzy -msgid "Default layout" -msgstr "Schema discului" - -#, fuzzy -msgid "No Encryption" -msgstr "Tipul de criptare" - -msgid "LUKS" -msgstr "" - -msgid "LVM on LUKS" -msgstr "" - -msgid "LUKS on LVM" -msgstr "" - -#, fuzzy -msgid "Yes" -msgstr "da" - -msgid "No" -msgstr "" - -#, fuzzy -msgid "Archinstall help" -msgstr "Limba pentru Archinstall" - -#, fuzzy -msgid " (default)" -msgstr "(predefinit)" - -msgid "Press Ctrl+h for help" -msgstr "" - -#, fuzzy -msgid "Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Alegeți o opțiune pentru a acorda acces lui Sway la hardware" - -msgid "Seat access" -msgstr "" - -#, fuzzy -msgid "Mountpoint" -msgstr "Punct de montare: " - -msgid "HSM" -msgstr "" - -#, fuzzy -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "Introduceți parola de criptare a discului (lăsați liber pentru a evita criptarea): " - -#, fuzzy -msgid "Disk encryption password" -msgstr "Parola de criptare" - -#, fuzzy -msgid "Partition - New" -msgstr "Partiție" - -#, fuzzy -msgid "Filesystem" -msgstr "Schimbă sistemul de fișiere" - -msgid "Invalid size" -msgstr "" - -#, fuzzy -msgid "Start (default: sector {}): " -msgstr "Introduceți start (predefinit: sector {}): " - -#, fuzzy -msgid "End (default: {}): " -msgstr "Introduceți final (predefinit: {}): " - -#, fuzzy -msgid "Subvolume name" -msgstr "Nume subvolum " - -#, fuzzy -msgid "Disk configuration type" -msgstr "Configurație disc" - -msgid "Root mount directory" -msgstr "" - -#, fuzzy -msgid "Select language" -msgstr "Limba locală" - -#, fuzzy -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "Scrieți pachete adiționale pe care doriți să le instalați(separare prin spațiu, lăsați liber pentru a ignora): " - -msgid "Invalid download number" -msgstr "" - -msgid "Number downloads" -msgstr "" - -#, fuzzy -msgid "The username you entered is invalid" -msgstr "Numele de utilizator adăugat este invalid. Încercați din nou" - -#, fuzzy -msgid "Username" -msgstr "Nume utilizator : " - -#, fuzzy, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "Ar trebui ca \"{}\" să fie un utilizator cu privilegii (sudo)?" - -#, fuzzy -msgid "Interfaces" -msgstr "Adaugă interfață" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "" - -msgid "Modes" -msgstr "" - -msgid "IP address" -msgstr "" - -#, fuzzy -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "Introduceți IP-ul gateway-ului (router) sau lăsați liber pentru niciunul: " - -msgid "Gateway address" -msgstr "" - -#, fuzzy -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "Introduceți serverele dumneavoastră DNS (separare prin spațiu, lăsați liber pentru a ignora): " - -#, fuzzy -msgid "DNS servers" -msgstr "Nu există un server audio" - -#, fuzzy -msgid "Configure interfaces" -msgstr "Configurează interfața {}" - -#, fuzzy -msgid "Kernel" -msgstr "Nuclei" - -msgid "UEFI is not detected and some options are disabled" -msgstr "" - -msgid "Info" -msgstr "" - -#, fuzzy -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "Driverul proprietar Nvidia nu este compatibil cu Sway. Se poate să aveți probleme, sunteți ok cu asta?" - -#, fuzzy -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "Driverul proprietar Nvidia nu este compatibil cu Sway. Se poate să aveți probleme, sunteți ok cu asta?" - -#, fuzzy -msgid "Main profile" -msgstr "Editează profil" - -#, fuzzy -msgid "Confirm password" -msgstr "Schimbă parola" - -msgid "The confirmation password did not match, please try again" -msgstr "" - -#, fuzzy -msgid "Not a valid directory" -msgstr "Nu este un director valid: {}" - -#, fuzzy -msgid "Would you like to continue?" -msgstr "Doriți să folosiți compresie pentru BTRFS?" - -msgid "Directory" -msgstr "" - -#, fuzzy -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "" -"Introduceți un director pentru salvarea configurării (configurațiilor, completare automată cu Tab activată)\n" -"Directorul pentru salvare: " - -#, fuzzy, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "" -"Doriți să salvați fișierele de configurare {} în această locație?\n" -"\n" -"{]" - -msgid "Enabled" -msgstr "" - -msgid "Disabled" -msgstr "" - -#, fuzzy -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Vă rog să raportați problema (și fișierul) la https://github.com/archlinux/archinstall/issues" - -#, fuzzy -msgid "Mirror name" -msgstr "Regiune de oglindire" - -msgid "Url" -msgstr "" - -#, fuzzy -msgid "Select signature check" -msgstr "Selectați opțiunea pentru verificarea semnăturii" - -#, fuzzy -msgid "Select execution mode" -msgstr "Selectați un mod de execuție" - -msgid "Press ? for help" -msgstr "" - -#, fuzzy -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Alegeți o opțiune pentru a acorda acces lui Sway la hardware" - -#, fuzzy -msgid "Additional repositories" -msgstr "Colecții de pachete opționale" - -msgid "NTP" -msgstr "" - -msgid "Swap on zram" -msgstr "" - -msgid "Name" -msgstr "" - -#, fuzzy -msgid "Signature check" -msgstr "Selectați opțiunea pentru verificarea semnăturii" - -#, fuzzy, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "Sectoarele libere curente de pe dispozitiv {}:" - -#, fuzzy, python-brace-format -msgid "Size: {} / {}" -msgstr "Total: {} / {}" - -#, fuzzy, python-brace-format -msgid "Size (default: {}): " -msgstr "Introduceți final (predefinit: {}): " - -#, fuzzy -msgid "HSM device" -msgstr "Discpozitiv" - -msgid "Some packages could not be found in the repository" -msgstr "" - -#, fuzzy -msgid "User" -msgstr "Nume utilizator : " - -msgid "The specified configuration will be applied" -msgstr "" - -msgid "Wipe" -msgstr "" - -#, fuzzy -msgid "Mark/Unmark as XBOOTLDR" -msgstr "Marchează/Demarchează ca bootabil" - -#, fuzzy -msgid "Loading packages..." -msgstr "Pachete Adiționale" - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "" - -#, fuzzy -msgid "Add a custom repository" -msgstr "Adaugă o oglindă customizată" - -#, fuzzy -msgid "Change custom repository" -msgstr "Schimbă oglinda customizată" - -#, fuzzy -msgid "Delete custom repository" -msgstr "Șterge oglinda customizată" - -#, fuzzy -msgid "Repository name" -msgstr "Regiune de oglindire" - -#, fuzzy -msgid "Add a custom server" -msgstr "Adaugă o oglindă customizată" - -#, fuzzy -msgid "Change custom server" -msgstr "Schimbă oglinda customizată" - -#, fuzzy -msgid "Delete custom server" -msgstr "Șterge oglinda customizată" - -msgid "Server url" -msgstr "" - -#, fuzzy -msgid "Select regions" -msgstr "Selectați opțiunea pentru semnătură" - -#, fuzzy -msgid "Add custom servers" -msgstr "Adaugă o oglindă customizată" - -#, fuzzy -msgid "Add custom repository" -msgstr "Adaugă o oglindă customizată" - -#, fuzzy -msgid "Loading mirror regions..." -msgstr "Regiuni oglinzi" - -#, fuzzy -msgid "Mirrors and repositories" -msgstr "Colecții de pachete opționale" - -#, fuzzy -msgid "Selected mirror regions" -msgstr "Regiuni oglinzi" - -#, fuzzy -msgid "Custom servers" -msgstr "Oglinzi customizate" - -#, fuzzy -msgid "Custom repositories" -msgstr "Colecții de pachete opționale" - -msgid "Only ASCII characters are supported" -msgstr "" - -msgid "Show help" -msgstr "" - -msgid "Exit help" -msgstr "" - -msgid "Preview scroll up" -msgstr "" - -msgid "Preview scroll down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move right" -msgstr "" - -msgid "Move left" -msgstr "" - -msgid "Jump to entry" -msgstr "" - -msgid "Skip selection (if available)" -msgstr "" - -msgid "Reset selection (if available)" -msgstr "" - -#, fuzzy -msgid "Select on single select" -msgstr "Selectați opțiunea pentru verificarea semnăturii" - -#, fuzzy -msgid "Select on multi select" -msgstr "Selectați un fus orar" - -msgid "Reset" -msgstr "" - -#, fuzzy -msgid "Skip selection menu" -msgstr "Selectați un mod de execuție" - -msgid "Start search mode" -msgstr "" - -msgid "Exit search mode" -msgstr "" - -#, fuzzy -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway are nevoie de acces la setup-ul dumneavoastră (colecție de dispozitive hardware ex. tastatura, mouse, etc.)" - -#, fuzzy -msgid "Choose an option to give labwc access to your hardware" -msgstr "" -"\n" -"\n" -"Alegeți o opțiune pentru a acorda acces lui Sway la hardware" - -#, fuzzy -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway are nevoie de acces la setup-ul dumneavoastră (colecție de dispozitive hardware ex. tastatura, mouse, etc.)" - -#, fuzzy -msgid "Choose an option to give niri access to your hardware" -msgstr "" -"\n" -"\n" -"Alegeți o opțiune pentru a acorda acces lui Sway la hardware" - -#, fuzzy -msgid "Mark/Unmark as ESP" -msgstr "Marchează/Demarchează ca bootabil" - -msgid "Package group:" -msgstr "" - -#, fuzzy -msgid "Exit archinstall" -msgstr "Limba pentru Archinstall" - -#, fuzzy -msgid "Reboot system" -msgstr "Schimbă sistemul de fișiere" - -#, fuzzy -msgid "chroot into installation for post-installation configurations" -msgstr "Doriți să folosiți modul chroot pentru a intra în noua instalare și pentru a efectua configurații de post-instalare?" - -msgid "Installation completed" -msgstr "" - -#, fuzzy -msgid "What would you like to do next?" -msgstr "Doriți să folosiți compresie pentru BTRFS?" - -#, fuzzy, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "Selectați modul de configurare pentru \"{}\" sau folosiți modul predefinit \"{}\"" - -#, fuzzy -msgid "Incorrect credentials file decryption password" -msgstr "Parola de criptare" - -#, fuzzy -msgid "Incorrect password" -msgstr "Parola pentru root" - -#, fuzzy -msgid "Credentials file decryption password" -msgstr "Parola de criptare" - -#, fuzzy -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "" -"Doriți să salvați fișierele de configurare {} în această locație?\n" -"\n" -"{]" - -#, fuzzy -msgid "Credentials file encryption password" -msgstr "Parola de criptare" - -#, fuzzy, python-brace-format -msgid "Repositories: {}" -msgstr "Regiune de oglindire" - -#, fuzzy -msgid "New version available" -msgstr "Nicun dispozitiv HSM disponibil" - -#, fuzzy -msgid "Passwordless login" -msgstr "Parola" - -msgid "Second factor login" -msgstr "" - -msgid "Bluetooth" -msgstr "" - -#, fuzzy -msgid "Would you like to configure Bluetooth?" -msgstr "Doriți să folosiți compresie pentru BTRFS?" - -msgid "Authentication" -msgstr "" - -msgid "Applications" -msgstr "" - -msgid "U2F login method: " -msgstr "" - -msgid "Passwordless sudo: " -msgstr "" - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "" - -msgid "Syncing the system..." -msgstr "" - -msgid "Value cannot be empty" -msgstr "" - -msgid "Snapshot type" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Snapshot type: {}" -msgstr "Tip mediu: {}" - -msgid "U2F login setup" -msgstr "" - -msgid "No U2F devices found" -msgstr "" - -msgid "U2F Login Method" -msgstr "" - -#, fuzzy -msgid "Enable passwordless sudo?" -msgstr "Introduceți o parolă: " - -#, fuzzy, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "Selectați utilizarea unui device FID02 pentru HSM" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "" - -msgid "Starting device modifications in " -msgstr "" - -#, fuzzy -msgid "No network connection found" -msgstr "Nu există o configurare de rețea" - -#, fuzzy -msgid "Would you like to connect to a Wifi?" -msgstr "Doriți să folosiți compresie pentru BTRFS?" - -#, fuzzy -msgid "No wifi interface found" -msgstr "Configurează interfața {}" - -#, fuzzy -msgid "Select wifi network to connect to" -msgstr "Selectați o interfață de rețea pentru configurare" - -msgid "Scanning wifi networks..." -msgstr "" - -#, fuzzy -msgid "No wifi networks found" -msgstr "Nu există o configurare de rețea" - -msgid "Failed setting up wifi" -msgstr "" - -#, fuzzy -msgid "Enter wifi password" -msgstr "Introduceți o parolă: " - -msgid "Ok" -msgstr "" diff --git a/examples/archinstall/archinstall/locales/ru/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/ru/LC_MESSAGES/base.mo deleted file mode 100644 index 5934a96..0000000 Binary files a/examples/archinstall/archinstall/locales/ru/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/ru/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/ru/LC_MESSAGES/base.po deleted file mode 100644 index d9a71a9..0000000 --- a/examples/archinstall/archinstall/locales/ru/LC_MESSAGES/base.po +++ /dev/null @@ -1,1855 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Aleksandr Melman \n" -"Language-Team: \n" -"Language: ru\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" -"X-Generator: Poedit 3.5\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] Здесь был создан файл журнала: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Пожалуйста, отправьте эту проблему (и файл) по адресу https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "Вы действительно хотите прекратить?" - -msgid "And one more time for verification: " -msgstr "И еще раз для проверки: " - -msgid "Would you like to use swap on zram?" -msgstr "Вы хотите использовать подкачку на zram?" - -msgid "Desired hostname for the installation: " -msgstr "Желаемое имя хоста для установки: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "Имя пользователя для требуемого суперпользователя с привилегиями sudo: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "Любые дополнительные пользователи для установки (оставьте пустым, если пользователей нет): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "Должен ли этот пользователь быть суперпользователем (sudoer)?" - -msgid "Select a timezone" -msgstr "Выберите часовой пояс" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "Вы хотите использовать GRUB в качестве загрузчика вместо systemd-boot?" - -msgid "Choose a bootloader" -msgstr "Выберите загрузчик" - -msgid "Choose an audio server" -msgstr "Выберите звуковой сервер" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Устанавливаются только такие пакеты, как base, base-devel, linux, linux-firmware, efibootmgr и дополнительные пакеты профиля." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "Если вы хотите использовать веб-браузер, например, firefox или chromium, вы можете указать его в следующем запросе." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "Напишите дополнительные пакеты для установки (разделите пробелами, оставьте пустым, чтобы пропустить): " - -msgid "Copy ISO network configuration to installation" -msgstr "Копировать сетевую конфигурацию ISO в установку" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "Использовать NetworkManager (необходим для графической настройки интернета в GNOME и KDE)" - -msgid "Select one network interface to configure" -msgstr "Выберите один сетевой интерфейс для настройки" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "Выберите режим для конфигурации \"{}\" или пропустите, чтобы использовать режим по умолчанию \"{}\"." - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "Введите IP-адрес и подсеть для {} (пример: 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "Введите IP-адрес вашего шлюза (маршрутизатора) или оставьте пустым, если его нет: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "Введите ваши DNS-серверы (через пробел, пустой - нет): " - -msgid "Select which filesystem your main partition should use" -msgstr "Выберите, какую файловую систему должен использовать ваш основной раздел" - -msgid "Current partition layout" -msgstr "Текущая разметка разделов" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"Выберите, что делать с\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "Введите желаемый тип файловой системы для раздела" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "Введите начальное значение (в раздельных блоках: с, ГБ, % и т.д.; по умолчанию: {}): " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "Введите конечное значение (в раздельных блоках: с, Гб, % и т.д.; например: {}): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} содержит разделы в очереди, это удалит их, вы уверены?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"Выберите по индексу, какие разделы следует удалить" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"Выберите по индексу, какой раздел куда монтировать" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * Точки монтирования разделов являются относительными внутри установки, например, загрузочный будет /boot." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "Выберите куда монтировать раздел (оставьте пустым, чтобы удалить точку монтирования): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"Выберите, какой раздел следует отметить для форматирования" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"Выберите раздел, который следует пометить как зашифрованный" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"Выберите раздел, который следует отметить как загрузочный" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"Выберите раздел, на котором будет установлена файловая система" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "Введите желаемый тип файловой системы для раздела: " - -msgid "Archinstall language" -msgstr "Язык Archinstall" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Стереть все выбранные диски и использовать оптимальную схему разделов по умолчанию" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Выберите, что делать с каждым отдельным диском (с последующим использованием разделов)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "Выберите, что вы хотите сделать с выбранными блочными устройствами" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "Это список предварительно запрограммированных профилей, они могут облегчить установку таких вещей, как окружения рабочего стола" - -msgid "Select keyboard layout" -msgstr "Выберите раскладку клавиатуры" - -msgid "Select one of the regions to download packages from" -msgstr "Выберите один из регионов для загрузки пакетов" - -msgid "Select one or more hard drives to use and configure" -msgstr "Выберите один или несколько жестких дисков для использования и настройте их" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "Для наилучшей совместимости с оборудованием AMD вы можете использовать либо все варианты с открытым исходным кодом, либо AMD / ATI." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "Для лучшей совместимости с оборудованием Intel вы можете использовать либо все варианты с открытым исходным кодом, либо Intel.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Для наилучшей совместимости с оборудованием Nvidia вы можете использовать проприетарный драйвер Nvidia.\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Выберите графический драйвер или оставьте пустым, чтобы установить все драйверы с открытым исходным кодом" - -msgid "All open-source (default)" -msgstr "Все с открытым исходным кодом (по умолчанию)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "Выберите, какие ядра использовать, или оставьте пустым по умолчанию \"{}\"." - -msgid "Choose which locale language to use" -msgstr "Выберите, какой язык локали использовать" - -msgid "Choose which locale encoding to use" -msgstr "Выберите, какую кодировку локали использовать" - -msgid "Select one of the values shown below: " -msgstr "Выберите одно из значений, показанных ниже: " - -msgid "Select one or more of the options below: " -msgstr "Выберите один или несколько из приведенных ниже вариантов: " - -msgid "Adding partition...." -msgstr "Добавление раздела...." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "Чтобы продолжить, вам нужно ввести действительный fs-тип. Смотрите `man parted` для правильных fs-типов." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Ошибка: Перечисление профилей по URL \"{}\" привело к:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "Ошибка: Не удалось декодировать результат \"{}\" как JSON:" - -msgid "Keyboard layout" -msgstr "Раскладка клавиатуры" - -msgid "Mirror region" -msgstr "Регион зеркала" - -msgid "Locale language" -msgstr "Язык локали" - -msgid "Locale encoding" -msgstr "Кодировка локали" - -msgid "Drive(s)" -msgstr "Диск(и)" - -msgid "Disk layout" -msgstr "Разметка диска" - -msgid "Encryption password" -msgstr "Пароль шифрования" - -msgid "Swap" -msgstr "Подкачка" - -msgid "Bootloader" -msgstr "Загрузчик" - -msgid "Root password" -msgstr "Пароль root" - -msgid "Superuser account" -msgstr "Учетная запись суперпользователя" - -msgid "User account" -msgstr "Учетная запись пользователя" - -msgid "Profile" -msgstr "Профиль" - -msgid "Audio" -msgstr "Звуковой сервер" - -msgid "Kernels" -msgstr "Ядра" - -msgid "Additional packages" -msgstr "Дополнительные пакеты" - -msgid "Network configuration" -msgstr "Настройка сети" - -msgid "Automatic time sync (NTP)" -msgstr "Автоматическая синхронизация времени (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "Установить ({} конфигурация(и) отсутствует)" - -msgid "" -"You decided to skip harddrive selection\n" -"and will use whatever drive-setup is mounted at {} (experimental)\n" -"WARNING: Archinstall won't check the suitability of this setup\n" -"Do you wish to continue?" -msgstr "" -"Вы решили пропустить выбор жесткого диска\n" -"и будете использовать любой диск, смонтированный по адресу {} (экспериментально)\n" -"ПРЕДУПРЕЖДЕНИЕ: Archinstall не будет проверять пригодность этой установки.\n" -"Вы хотите продолжить?" - -msgid "Re-using partition instance: {}" -msgstr "Повторное использование экземпляра раздела: {}" - -msgid "Create a new partition" -msgstr "Создать новый раздел" - -msgid "Delete a partition" -msgstr "Удалить раздел" - -msgid "Clear/Delete all partitions" -msgstr "Очистить/удалить все разделы" - -msgid "Assign mount-point for a partition" -msgstr "Назначить точку монтирования для раздела" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "Пометить/снять отметку с раздела, который будет отформатирован (стирание данных)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "Пометить/снять отметку с раздела как зашифрованный" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "Пометить/снять отметку с раздела как загрузочный (автоматически для /boot)" - -msgid "Set desired filesystem for a partition" -msgstr "Установите желаемую файловую систему для раздела" - -msgid "Abort" -msgstr "Прервать" - -msgid "Hostname" -msgstr "Имя хоста" - -msgid "Not configured, unavailable unless setup manually" -msgstr "Не настроен, недоступен, если не настроен вручную" - -msgid "Timezone" -msgstr "Часовой пояс" - -msgid "Set/Modify the below options" -msgstr "Установить/изменить следующие параметры" - -msgid "Install" -msgstr "Установить" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"Используйте ESC, чтобы пропустить\n" -"\n" - -msgid "Suggest partition layout" -msgstr "Предложить разметку разделов" - -msgid "Enter a password: " -msgstr "Введите пароль: " - -msgid "Enter a encryption password for {}" -msgstr "Введите пароль шифрования для {}" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "Введите пароль шифрования диска (оставьте пустым для отсутствия шифрования): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "Создайте необходимого суперпользователя с привилегиями sudo: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "Введите пароль root (оставьте пустым, чтобы отключить root): " - -msgid "Password for user \"{}\": " -msgstr "Пароль для пользователя \"{}\": " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "Проверка наличия дополнительных пакетов (это может занять несколько секунд)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "Вы хотите использовать автоматическую синхронизацию времени (NTP) с серверами времени по умолчанию?\n" - -msgid "" -"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" -"For more information, please check the Arch wiki" -msgstr "" -"Для работы NTP может потребоваться аппаратное время и другие шаги после конфигурации.\n" -"Для получения дополнительной информации, пожалуйста, ознакомьтесь с ArchWiki" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "Введите имя пользователя для создания дополнительного пользователя (оставьте пустым, чтобы пропустить): " - -msgid "Use ESC to skip\n" -msgstr "Используйте ESC, чтобы пропустить\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -" Выберите объект из списка и выберите одно из доступных действий для его выполнения" - -msgid "Cancel" -msgstr "Отменить" - -msgid "Confirm and exit" -msgstr "Подтвердить и выйти" - -msgid "Add" -msgstr "Добавить" - -msgid "Copy" -msgstr "Копировать" - -msgid "Edit" -msgstr "Редактировать" - -msgid "Delete" -msgstr "Удалить" - -msgid "Select an action for '{}'" -msgstr "Выберите действие для '{}'" - -msgid "Copy to new key:" -msgstr "Копировать в новый ключ:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "Неизвестный тип сетевого адаптера: {}. Возможные значения: {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"Это выбранная вами конфигурация:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Pacman уже запущен, ожидание его завершения составляет максимум 10 минут." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "Существовавшая ранее блокировка pacman не завершилась. Пожалуйста, очистите все существующие сессии pacman перед использованием archinstall." - -msgid "Choose which optional additional repositories to enable" -msgstr "Выберите, какие дополнительные репозитории следует включить" - -msgid "Add a user" -msgstr "Добавить пользователя" - -msgid "Change password" -msgstr "Изменить пароль" - -msgid "Promote/Demote user" -msgstr "Повысить/понизить пользователя" - -msgid "Delete User" -msgstr "Удалить пользователя" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"Укажите нового пользователя\n" - -msgid "User Name : " -msgstr "Имя пользователя: " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "Должен ли {} быть суперпользователем (sudoer)?" - -msgid "Define users with sudo privilege: " -msgstr "Определите пользователей с привилегиями sudo: " - -msgid "No network configuration" -msgstr "Нет сетевой конфигурации" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "Установите желаемые подтома на раздел btrfs" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"Выберите раздел, на котором будут установлены подтома" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "Управление подтомами btrfs для текущего раздела" - -msgid "No configuration" -msgstr "Отсутствует конфигурация" - -msgid "Save user configuration" -msgstr "Сохранить конфигурацию пользователя" - -msgid "Save user credentials" -msgstr "Сохранить учетные данные пользователя" - -msgid "Save disk layout" -msgstr "Сохранить разметку диска" - -msgid "Save all" -msgstr "Сохранить все" - -msgid "Choose which configuration to save" -msgstr "Выберите, какую конфигурацию сохранить" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "Введите каталог для сохранения конфигурации (-ций): " - -msgid "Not a valid directory: {}" -msgstr "Недействительный каталог: {}" - -msgid "The password you are using seems to be weak," -msgstr "Пароль, который вы используете, кажется слабым," - -msgid "are you sure you want to use it?" -msgstr "вы уверены, что хотите его использовать?" - -msgid "Optional repositories" -msgstr "Дополнительные репозитории" - -msgid "Save configuration" -msgstr "Сохранить конфигурацию" - -msgid "Missing configurations:\n" -msgstr "Отсутствующие конфигурации:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "Должен быть указан либо пароль root, либо как минимум 1 суперпользователь" - -msgid "Manage superuser accounts: " -msgstr "Управление учетными записями суперпользователей: " - -msgid "Manage ordinary user accounts: " -msgstr "Управление учетными записями обычных пользователей: " - -msgid " Subvolume :{:16}" -msgstr " Подтом :{:16}" - -msgid " mounted at {:16}" -msgstr " смонтировано в {:16}" - -msgid " with option {}" -msgstr " с параметром {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -" Заполните нужные значения для нового подтома\n" - -msgid "Subvolume name " -msgstr "Имя подтома " - -msgid "Subvolume mountpoint" -msgstr "Точка монтирования подтома" - -msgid "Subvolume options" -msgstr "Параметры подтома" - -msgid "Save" -msgstr "Сохранить" - -msgid "Subvolume name :" -msgstr "Имя подтома :" - -msgid "Select a mount point :" -msgstr "Выберите точку монтирования:" - -msgid "Select the desired subvolume options " -msgstr "Выберите нужные параметры подтома " - -msgid "Define users with sudo privilege, by username: " -msgstr "Определите пользователей с привилегией sudo по имени пользователя: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] Здесь был создан файл журнала: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "Вы хотите использовать подтома BTRFS со структурой по умолчанию?" - -msgid "Would you like to use BTRFS compression?" -msgstr "Хотите ли вы использовать сжатие BTRFS?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "Хотите ли вы создать отдельный раздел для /home?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "Выбранные диски не имеют минимальной емкости, необходимой для автоматического предложения\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "Минимальный размер раздела /home: {}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Минимальный размер раздела Arch Linux: {}GB" - -msgid "Continue" -msgstr "Продолжить" - -msgid "yes" -msgstr "да" - -msgid "no" -msgstr "нет" - -msgid "set: {}" -msgstr "выбор: {}" - -msgid "Manual configuration setting must be a list" -msgstr "Ручная настройка конфигурации должна представлять собой список" - -msgid "No iface specified for manual configuration" -msgstr "Не указан iface для ручной настройки" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "Ручная конфигурация сетевого адаптера без автоматического DHCP требует IP-адреса" - -msgid "Add interface" -msgstr "Добавить интерфейс" - -msgid "Edit interface" -msgstr "Редактировать интерфейс" - -msgid "Delete interface" -msgstr "Удалить интерфейс" - -msgid "Select interface to add" -msgstr "Выберите интерфейс для добавления" - -msgid "Manual configuration" -msgstr "Ручная конфигурация" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "Пометить/снять отметку с раздела как сжатый (только для btrfs)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "Пароль, который вы используете, кажется слабым, вы уверены, что хотите его использовать?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "Предоставляет выбор окружений рабочего стола и тайловых оконных менеджеров, например, gnome, kde, sway" - -msgid "Select your desired desktop environment" -msgstr "Выберите желаемое окружение рабочего стола" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "Очень базовая установка, позволяющая настроить Arch Linux по своему усмотрению." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "Предоставляет выбор различных пакетов сервера для установки и включения, например, httpd, nginx, mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "Выберите серверы для установки, если их нет, то будет выполнена минимальная установка" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "Устанавливает минимальную систему, а также xorg и графические драйверы." - -msgid "Press Enter to continue." -msgstr "Нажмите Enter, чтобы продолжить." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "Хотите ли вы использовать chroot в новой созданной установке и выполнить настройку после установки?" - -msgid "Are you sure you want to reset this setting?" -msgstr "Вы уверены, что хотите сбросить эту настройку?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "Выберите один или несколько жестких дисков для использования и настройки\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "Любые изменения существующей настройки приведут к сбросу разметки диска!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "Если вы сбросите выбор жесткого диска, это также сбросит текущую разметку диска. Вы уверены?" - -msgid "Save and exit" -msgstr "Сохранить и выйти" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"содержит разделы в очереди, это удалит их, вы уверены?" - -msgid "No audio server" -msgstr "Отсутствует звуковой сервер" - -msgid "(default)" -msgstr "(по умолчанию)" - -msgid "Use ESC to skip" -msgstr "Используйте ESC, чтобы пропустить" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"Используйте CTRL+C для сброса текущего выбора\n" -"\n" - -msgid "Copy to: " -msgstr "Копировать в: " - -msgid "Edit: " -msgstr "Редактировать: " - -msgid "Key: " -msgstr "Ключ: " - -msgid "Edit {}: " -msgstr "Редактировать {}: " - -msgid "Add: " -msgstr "Добавить: " - -msgid "Value: " -msgstr "Значение: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "Вы можете не выбирать диск и разметку и использовать любой диск, смонтированный в /mnt (экспериментально)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "Выберите один из дисков или пропустите и используйте /mnt по умолчанию" - -msgid "Select which partitions to mark for formatting:" -msgstr "Выберите, какие разделы следует отметить для форматирования:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "Использовать HSM для разблокировки зашифрованного диска" - -msgid "Device" -msgstr "Устройство" - -msgid "Size" -msgstr "Размер" - -msgid "Free space" -msgstr "Свободное место" - -msgid "Bus-type" -msgstr "Тип шины" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "Должен быть указан либо пароль root, либо хотя бы 1 пользователь с привилегиями sudo" - -msgid "Enter username (leave blank to skip): " -msgstr "Введите имя пользователя (оставьте пустым, чтобы пропустить): " - -msgid "The username you entered is invalid. Try again" -msgstr "Введенное вами имя пользователя недействительно. Попробуйте еще раз" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "Должен ли \"{}\" быть суперпользователем (sudo)?" - -msgid "Select which partitions to encrypt" -msgstr "Выберите разделы для шифрования" - -msgid "very weak" -msgstr "очень слабый" - -msgid "weak" -msgstr "слабый" - -msgid "moderate" -msgstr "умеренный" - -msgid "strong" -msgstr "надежный" - -msgid "Add subvolume" -msgstr "Добавить подтом" - -msgid "Edit subvolume" -msgstr "Редактировать подтом" - -msgid "Delete subvolume" -msgstr "Удалить подтом" - -msgid "Configured {} interfaces" -msgstr "Настроено интерфейсов: {}" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "Этот параметр определяет количество параллельных загрузок, которые могут происходить во время установки" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"Введите количество параллельных загрузок, которые будут включены.\n" -" (Введите значение от 1 до {})\n" -"Примечание:" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - Минимальное значение: {} ( Позволяет {} параллельную загрузку, позволяет {} загрузки одновременно )" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - Минимальное значение: 1 ( Позволяет 1 параллельную загрузку, позволяет 2 загрузки одновременно )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - Отключить/по умолчанию: 0 ( Отключает параллельную загрузку, позволяет только 1 загрузку за один раз )" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "Неверный ввод! Повторите попытку с правильным вводом [1 - {max_downloads}, или 0 - отключить]" - -msgid "Parallel Downloads" -msgstr "Параллельные загрузки" - -msgid "ESC to skip" -msgstr "ESC, чтобы пропустить" - -msgid "CTRL+C to reset" -msgstr "CTRL+C, чтобы сбросить" - -msgid "TAB to select" -msgstr "TAB, чтобы выбрать" - -msgid "[Default value: 0] > " -msgstr "[Значение по умолчанию: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "Чтобы иметь возможность использовать этот перевод, пожалуйста, установите вручную шрифт, поддерживающий данный язык." - -msgid "The font should be stored as {}" -msgstr "Шрифт должен быть сохранен как {}" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "Для запуска Archinstall требуются привилегии root. Для получения дополнительной информации смотрите --help." - -msgid "Select an execution mode" -msgstr "Выберите режим выполнения" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "Невозможно получить профиль из указанного url: {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "Профили должны иметь уникальное имя, но найдены определения профиля с дублирующимся именем: {}" - -msgid "Select one or more devices to use and configure" -msgstr "Выберите одно или несколько устройств для использования и настройки" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "Если вы сбросите выбор устройства, это также сбросит текущую разметку дисков. Вы уверены?" - -msgid "Existing Partitions" -msgstr "Существующие разделы" - -msgid "Select a partitioning option" -msgstr "Выберите вариант разбивки на разделы" - -msgid "Enter the root directory of the mounted devices: " -msgstr "Введите корневой каталог смонтированных устройств: " - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "Минимальный размер раздела /home: {}GiB\n" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "Минимальный размер раздела 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 "Это список предварительно запрограммированных профилей, они могут облегчить установку таких вещей, как окружения рабочего стола" - -msgid "Current profile selection" -msgstr "Текущий выбор профиля" - -msgid "Remove all newly added partitions" -msgstr "Удалить все вновь добавленные разделы" - -msgid "Assign mountpoint" -msgstr "Назначить точку монтирования" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "Пометить/снять отметку для форматирования (стирание данных)" - -msgid "Mark/Unmark as bootable" -msgstr "Пометить/снять пометку как загрузочный" - -msgid "Change filesystem" -msgstr "Изменить файловую систему" - -msgid "Mark/Unmark as compressed" -msgstr "Пометить/снять отметку как сжатый" - -msgid "Set subvolumes" -msgstr "Установить подтома" - -msgid "Delete partition" -msgstr "Удалить раздел" - -msgid "Partition" -msgstr "Раздел" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "Этот раздел в настоящее время зашифрован, для его форматирования необходимо указать файловую систему" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "Точки монтирования разделов являются относительными внутри установки, например, загрузочный раздел будет /boot." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "Если установлена точка монтирования /boot, то раздел также будет помечен как загрузочный." - -msgid "Mountpoint: " -msgstr "Точка монтирования: " - -msgid "Current free sectors on device {}:" -msgstr "Текущие свободные секторы на устройстве {}:" - -msgid "Total sectors: {}" -msgstr "Всего секторов: {}" - -msgid "Enter the start sector (default: {}): " -msgstr "Введите начальный сектор (по умолчанию: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "Введите конечный сектор раздела (процент или номер блока, по умолчанию: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "Это приведет к удалению всех вновь добавленных разделов, продолжить?" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "Управление разделом: {}" - -#, python-brace-format -msgid "Total length: {}" -msgstr "Весь размер: {}" - -msgid "Encryption type" -msgstr "Тип шифрования" - -msgid "Iteration time" -msgstr "" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "" - -msgid "Higher values increase security but slow down boot time" -msgstr "" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "" - -msgid "Iteration time cannot be empty" -msgstr "" - -msgid "Iteration time must be at least 100ms" -msgstr "" - -msgid "Iteration time must be at most 120000ms" -msgstr "" - -msgid "Please enter a valid number" -msgstr "" - -msgid "Partitions" -msgstr "Разделы" - -msgid "No HSM devices available" -msgstr "Нет доступных устройств HSM" - -msgid "Partitions to be encrypted" -msgstr "Разделы, подлежащие шифрованию" - -msgid "Select disk encryption option" -msgstr "Выбрать вариант шифрования диска" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "Выберите устройство FIDO2 для использования в качестве HSM" - -msgid "Use a best-effort default partition layout" -msgstr "Использовать оптимальную схему разделов по умолчанию" - -msgid "Manual Partitioning" -msgstr "Ручное разбиение на разделы" - -msgid "Pre-mounted configuration" -msgstr "Предварительно смонтированная конфигурация" - -msgid "Unknown" -msgstr "Неизвестно" - -msgid "Partition encryption" -msgstr "Шифрование раздела" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr " ! Форматирование {} в " - -msgid "← Back" -msgstr "← Назад" - -msgid "Disk encryption" -msgstr "Шифрование диска" - -msgid "Configuration" -msgstr "Конфигурация" - -msgid "Password" -msgstr "Пароль" - -msgid "All settings will be reset, are you sure?" -msgstr "Все настройки будут сброшены, вы уверены?" - -msgid "Back" -msgstr "Назад" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "Пожалуйста, выберите, какой экран приветствия установить для выбранных профилей: {}" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "Тип окружения рабочего стола: {}" - -msgid "The proprietary Nvidia driver is not supported by Sway. It is likely that you will run into issues, are you okay with that?" -msgstr "Проприетарный драйвер Nvidia не поддерживается Sway. Вполне вероятно, что вы столкнетесь с проблемами, вы согласны с этим?" - -msgid "Installed packages" -msgstr "Устанавливаемые пакеты" - -msgid "Add profile" -msgstr "Добавить профиль" - -msgid "Edit profile" -msgstr "Изменить профиль" - -msgid "Delete profile" -msgstr "Удалить профиль" - -msgid "Profile name: " -msgstr "Имя профиля: " - -msgid "The profile name you entered is already in use. Try again" -msgstr "Введенное вами имя профиля уже используется. Попробуйте еще раз" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "Пакеты, которые будут установлены с этим профилем (разделенные пробелами, оставьте пустым, чтобы пропустить): " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "Службы, которые должны быть включены с помощью этого профиля (разделенные пробелами, оставьте пустым, чтобы пропустить): " - -msgid "Should this profile be enabled for installation?" -msgstr "Должен ли этот профиль быть включен для установки?" - -msgid "Create your own" -msgstr "Создать свой собственный" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"Выберите графический драйвер или оставьте пустым, чтобы установить все драйверы с открытым исходным кодом" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway необходим доступ к вашему компьютеру (набор аппаратных устройств, т.е. клавиатура, мышь и т.д.)" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Выберите опцию, чтобы предоставить Sway доступ к вашему оборудованию" - -msgid "Graphics driver" -msgstr "Графический драйвер" - -msgid "Greeter" -msgstr "Экран приветствия" - -msgid "Please chose which greeter to install" -msgstr "Пожалуйста, выберите, какой экран приветствия установить" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "Это список запрограммированных по умолчанию профилей" - -msgid "Disk configuration" -msgstr "Конфигурация диска" - -msgid "Profiles" -msgstr "Профили" - -msgid "Finding possible directories to save configuration files ..." -msgstr "Поиск возможных каталогов для сохранения файлов конфигурации ..." - -msgid "Select directory (or directories) for saving configuration files" -msgstr "Выберите каталог (или каталоги) для сохранения файлов конфигурации" - -msgid "Add a custom mirror" -msgstr "Добавить пользовательское зеркало" - -msgid "Change custom mirror" -msgstr "Изменить пользовательское зеркало" - -msgid "Delete custom mirror" -msgstr "Удалить пользовательское зеркало" - -msgid "Enter name (leave blank to skip): " -msgstr "Введите имя (оставьте пустым, чтобы пропустить): " - -msgid "Enter url (leave blank to skip): " -msgstr "Введите адрес (оставьте пустым, чтобы пропустить): " - -msgid "Select signature check option" -msgstr "Выбрать вариант проверки подписи" - -msgid "Select signature option" -msgstr "Выбрать вариант подписи" - -msgid "Custom mirrors" -msgstr "Пользовательские зеркала" - -msgid "Defined" -msgstr "Определено" - -msgid "Save user configuration (including disk layout)" -msgstr "Сохранить конфигурацию пользователя (включая разметку диска)" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"Введите каталог для сохранения конфигурации (-ций) (включено заполнение вкладок)\n" -"Каталог сохранения: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"Хотите ли вы сохранить {} файл(-а) конфигурации в следующем месте?\n" -"\n" -"{}" - -msgid "Saving {} configuration files to {}" -msgstr "Сохранение {} файла(-ов) конфигурации в {}" - -msgid "Mirrors" -msgstr "Зеркала" - -msgid "Mirror regions" -msgstr "Регионы зеркала" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - Максимальное значение: {} ( Позволяет {} параллельных загрузок, позволяет {max_downloads+1} загрузок одновременно )" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "Неверный ввод! Повторите попытку с правильным вводом [1 - {}, или 0 - отключить]" - -msgid "Locales" -msgstr "Локализации" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "Использовать NetworkManager (необходим для графической настройки интернета в GNOME и KDE)" - -msgid "Total: {} / {}" -msgstr "Весь размер: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "Все вводимые значения могут иметь суффикс с единицей измерения: Б, Кб, КиБ, Мб, МиБ..." - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "Если единица измерения не указана, то значение интерпретируется как сектор" - -msgid "Enter start (default: sector {}): " -msgstr "Введите начало (по умолчанию: сектор {}): " - -msgid "Enter end (default: {}): " -msgstr "Введите конец (по умолчанию: сектор {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "Невозможно определить устройства fido2. Установлена ли libfido2?" - -msgid "Path" -msgstr "Путь" - -msgid "Manufacturer" -msgstr "Производитель" - -msgid "Product" -msgstr "Продукт" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "Неверная конфигурация: {error}" - -msgid "Type" -msgstr "Тип" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "Этот параметр определяет количество параллельных загрузок, которые могут происходить во время загрузки пакетов" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"Введите количество параллельных загрузок, которые будут включены.\n" -"\n" -"Примечание:\n" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - Максимальное рекомендуемое значение: {} ( Позволяет {} параллельных загрузок одновременно )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - Отключить/по умолчанию: 0 ( Отключает параллельную загрузку, позволяет только 1 загрузку за один раз )\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "Неверный ввод! Повторите попытку с правильным вводом [ или 0, чтобы отключить ]" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Hyprland необходим доступ к вашему компьютеру ( набор аппаратных устройств, т.е. клавиатура, мышь и т.д. )" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Выберите опцию, чтобы предоставить Hyprland доступ к вашему оборудованию" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "Все вводимые значения могут иметь суффикс с единицей измерения: %, Б, Кб, КиБ, Мб, МиБ..." - -msgid "Would you like to use unified kernel images?" -msgstr "Хотите ли Вы использовать унифицированные образы ядра?" - -msgid "Unified kernel images" -msgstr "Унифицированные образы ядра" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "Ожидание завершения синхронизации времени (timedatectl show)." - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Синхронизация времени не завершена, пока вы ждете - проверьте документацию на предмет обходных путей: https://archinstall.readthedocs.io/" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "Пропуск ожидания автоматической синхронизации времени (это может привести к проблемам, если время не синхронизируется во время установки)" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "Ожидание завершения синхронизации связки ключей Arch Linux (archlinux-keyring-wkd-sync)." - -msgid "Selected profiles: " -msgstr "Выбранные профили: " - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Синхронизация времени не завершена, пока вы ждете - проверьте документацию на предмет обходных путей: https://archinstall.readthedocs.io/" - -msgid "Mark/Unmark as nodatacow" -msgstr "Пометить/снять пометку как nodatacow" - -msgid "Would you like to use compression or disable CoW?" -msgstr "Хотите ли вы использовать сжатие или отключить CoW?" - -msgid "Use compression" -msgstr "Использовать сжатие" - -msgid "Disable Copy-on-Write" -msgstr "Отключить копирование при записи (CoW)" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "Предоставляет выбор окружений рабочего стола и тайловых оконных менеджеров, например, GNOME, KDE Plasma, Sway" - -#, python-brace-format -msgid "Configuration type: {}" -msgstr "Тип конфигурации: {}" - -msgid "LVM configuration type" -msgstr "Тип конфигурации LVM" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "Шифрование дисков LVM с более чем 2 разделами в настоящее время не поддерживается" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "Использовать NetworkManager (необходим для графической настройки интернета в GNOME и KDE Plasma)" - -msgid "Select a LVM option" -msgstr "Выберите вариант LVM" - -msgid "Partitioning" -msgstr "Разбивка на разделы" - -msgid "Logical Volume Management (LVM)" -msgstr "Управление логическими томами (LVM)" - -msgid "Physical volumes" -msgstr "Физические тома" - -msgid "Volumes" -msgstr "Тома" - -msgid "LVM volumes" -msgstr "Тома LVM" - -msgid "LVM volumes to be encrypted" -msgstr "Тома LVM, подлежащие шифрованию" - -msgid "Select which LVM volumes to encrypt" -msgstr "Выберите тома LVM для шифрования" - -msgid "Default layout" -msgstr "Разметка по умолчанию" - -msgid "No Encryption" -msgstr "Нет шифрования" - -msgid "LUKS" -msgstr "LUKS" - -msgid "LVM on LUKS" -msgstr "LVM на LUKS" - -msgid "LUKS on LVM" -msgstr "LUKS на LVM" - -msgid "Yes" -msgstr "Да" - -msgid "No" -msgstr "Нет" - -msgid "Archinstall help" -msgstr "Справка Archinstall" - -msgid " (default)" -msgstr " (по умолчанию)" - -msgid "Press Ctrl+h for help" -msgstr "Нажмите Ctrl+h для справки" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "Выберите опцию, чтобы предоставить Sway доступ к вашему оборудованию" - -msgid "Seat access" -msgstr "Доступ к месту" - -msgid "Mountpoint" -msgstr "Точка монтирования" - -msgid "HSM" -msgstr "HSM" - -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "Введите пароль шифрования диска (оставьте пустым для отсутствия шифрования)" - -msgid "Disk encryption password" -msgstr "Пароль шифрования диска" - -msgid "Partition - New" -msgstr "Раздел - Новый" - -msgid "Filesystem" -msgstr "Файловая система" - -msgid "Invalid size" -msgstr "Недопустимый размер" - -msgid "Start (default: sector {}): " -msgstr "Начало (по умолчанию: сектор {}): " - -msgid "End (default: {}): " -msgstr "Конец (по умолчанию: сектор {}): " - -msgid "Subvolume name" -msgstr "Имя подтома" - -msgid "Disk configuration type" -msgstr "Тип конфигурации диска" - -msgid "Root mount directory" -msgstr "Корневой каталог для монтирования" - -msgid "Select language" -msgstr "Выбрать язык" - -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "Напишите дополнительные пакеты для установки (разделите пробелами, оставьте пустым, чтобы пропустить)" - -msgid "Invalid download number" -msgstr "Недопустимое количество загрузок" - -msgid "Number downloads" -msgstr "Количество загрузок" - -msgid "The username you entered is invalid" -msgstr "Введенное вами имя пользователя недействительно" - -msgid "Username" -msgstr "Имя пользователя" - -#, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "Должен ли \"{}\" быть суперпользователем (sudo)?\n" - -msgid "Interfaces" -msgstr "Интерфейсы" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "Вам необходимо ввести действительный IP-адрес в режиме IP-конфигурации" - -msgid "Modes" -msgstr "Режимы" - -msgid "IP address" -msgstr "IP-адрес" - -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "Введите IP-адрес вашего шлюза (маршрутизатора) (оставьте пустым, если его нет)" - -msgid "Gateway address" -msgstr "Адрес шлюза" - -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "Введите ваши DNS-серверы, разделяя их пробелами (оставьте пустым, если их нет)" - -msgid "DNS servers" -msgstr "DNS-серверы" - -msgid "Configure interfaces" -msgstr "Настройка интерфейсов" - -msgid "Kernel" -msgstr "Ядро" - -msgid "UEFI is not detected and some options are disabled" -msgstr "UEFI не обнаружен и некоторые опции отключены" - -msgid "Info" -msgstr "Информация" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "Проприетарный драйвер Nvidia не поддерживается Sway." - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "Вполне вероятно, что вы столкнетесь с проблемами, вы согласны с этим?" - -msgid "Main profile" -msgstr "Главный профиль" - -msgid "Confirm password" -msgstr "Подтвердить пароль" - -msgid "The confirmation password did not match, please try again" -msgstr "Пароль подтверждения не совпал, попробуйте еще раз" - -msgid "Not a valid directory" -msgstr "Недействительный каталог" - -msgid "Would you like to continue?" -msgstr "Вы хотите продолжить?" - -msgid "Directory" -msgstr "Каталог" - -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "Введите каталог для сохранения конфигурации (-ций) (включено заполнение вкладок)" - -#, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "Хотите ли вы сохранить файл(ы) конфигурации в {}?" - -msgid "Enabled" -msgstr "Включено" - -msgid "Disabled" -msgstr "Выключено" - -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "Пожалуйста, отправьте эту проблему (и файл) по адресу https://github.com/archlinux/archinstall/issues" - -msgid "Mirror name" -msgstr "Название зеркала" - -msgid "Url" -msgstr "URL-адрес" - -msgid "Select signature check" -msgstr "Выберите проверку подписи" - -msgid "Select execution mode" -msgstr "Выберите режим выполнения" - -msgid "Press ? for help" -msgstr "Нажмите ? для справки" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "Выберите опцию, чтобы предоставить Hyprland доступ к вашему оборудованию" - -msgid "Additional repositories" -msgstr "Дополнительные репозитории" - -msgid "NTP" -msgstr "NTP" - -msgid "Swap on zram" -msgstr "Подкачка на zram" - -msgid "Name" -msgstr "Имя" - -msgid "Signature check" -msgstr "Проверка подписи" - -#, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "Выбранный сегмент свободного пространства на устройстве {}:" - -#, python-brace-format -msgid "Size: {} / {}" -msgstr "Размер: {} / {}" - -#, python-brace-format -msgid "Size (default: {}): " -msgstr "Размер (по умолчанию: {}): " - -msgid "HSM device" -msgstr "Устройство HSM" - -msgid "Some packages could not be found in the repository" -msgstr "Некоторые пакеты не найдены в репозитории" - -msgid "User" -msgstr "Пользователь" - -msgid "The specified configuration will be applied" -msgstr "Будет применена указанная конфигурация" - -msgid "Wipe" -msgstr "" - -#, fuzzy -msgid "Mark/Unmark as XBOOTLDR" -msgstr "Пометить/снять пометку как загрузочный" - -#, fuzzy -msgid "Loading packages..." -msgstr "Дополнительные пакеты" - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "" - -#, fuzzy -msgid "Add a custom repository" -msgstr "Добавить пользовательское зеркало" - -#, fuzzy -msgid "Change custom repository" -msgstr "Изменить пользовательское зеркало" - -#, fuzzy -msgid "Delete custom repository" -msgstr "Удалить пользовательское зеркало" - -#, fuzzy -msgid "Repository name" -msgstr "Название зеркала" - -#, fuzzy -msgid "Add a custom server" -msgstr "Добавить пользовательское зеркало" - -#, fuzzy -msgid "Change custom server" -msgstr "Изменить пользовательское зеркало" - -#, fuzzy -msgid "Delete custom server" -msgstr "Удалить пользовательское зеркало" - -msgid "Server url" -msgstr "" - -#, fuzzy -msgid "Select regions" -msgstr "Выбрать вариант подписи" - -#, fuzzy -msgid "Add custom servers" -msgstr "Добавить пользовательское зеркало" - -#, fuzzy -msgid "Add custom repository" -msgstr "Добавить пользовательское зеркало" - -#, fuzzy -msgid "Loading mirror regions..." -msgstr "Регионы зеркала" - -#, fuzzy -msgid "Mirrors and repositories" -msgstr "Дополнительные репозитории" - -#, fuzzy -msgid "Selected mirror regions" -msgstr "Регионы зеркала" - -#, fuzzy -msgid "Custom servers" -msgstr "Пользовательские зеркала" - -#, fuzzy -msgid "Custom repositories" -msgstr "Дополнительные репозитории" - -msgid "Only ASCII characters are supported" -msgstr "" - -msgid "Show help" -msgstr "" - -msgid "Exit help" -msgstr "" - -msgid "Preview scroll up" -msgstr "" - -msgid "Preview scroll down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move right" -msgstr "" - -msgid "Move left" -msgstr "" - -msgid "Jump to entry" -msgstr "" - -msgid "Skip selection (if available)" -msgstr "" - -msgid "Reset selection (if available)" -msgstr "" - -#, fuzzy -msgid "Select on single select" -msgstr "Выберите проверку подписи" - -#, fuzzy -msgid "Select on multi select" -msgstr "Выберите часовой пояс" - -msgid "Reset" -msgstr "" - -#, fuzzy -msgid "Skip selection menu" -msgstr "Выберите режим выполнения" - -msgid "Start search mode" -msgstr "" - -msgid "Exit search mode" -msgstr "" - -#, fuzzy -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway необходим доступ к вашему компьютеру (набор аппаратных устройств, т.е. клавиатура, мышь и т.д.)" - -#, fuzzy -msgid "Choose an option to give labwc access to your hardware" -msgstr "Выберите опцию, чтобы предоставить Sway доступ к вашему оборудованию" - -#, fuzzy -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway необходим доступ к вашему компьютеру (набор аппаратных устройств, т.е. клавиатура, мышь и т.д.)" - -#, fuzzy -msgid "Choose an option to give niri access to your hardware" -msgstr "Выберите опцию, чтобы предоставить Sway доступ к вашему оборудованию" - -#, fuzzy -msgid "Mark/Unmark as ESP" -msgstr "Пометить/снять пометку как загрузочный" - -msgid "Package group:" -msgstr "" - -#, fuzzy -msgid "Exit archinstall" -msgstr "Справка Archinstall" - -#, fuzzy -msgid "Reboot system" -msgstr "Файловая система" - -#, fuzzy -msgid "chroot into installation for post-installation configurations" -msgstr "Хотите ли вы использовать chroot в новой созданной установке и выполнить настройку после установки?" - -msgid "Installation completed" -msgstr "" - -#, fuzzy -msgid "What would you like to do next?" -msgstr "Вы хотите продолжить?" - -#, fuzzy, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "Выберите режим для конфигурации \"{}\" или пропустите, чтобы использовать режим по умолчанию \"{}\"." - -#, fuzzy -msgid "Incorrect credentials file decryption password" -msgstr "Пароль шифрования диска" - -#, fuzzy -msgid "Incorrect password" -msgstr "Пароль root" - -#, fuzzy -msgid "Credentials file decryption password" -msgstr "Пароль шифрования диска" - -#, fuzzy -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "Хотите ли вы сохранить файл(ы) конфигурации в {}?" - -#, fuzzy -msgid "Credentials file encryption password" -msgstr "Пароль шифрования диска" - -#, fuzzy, python-brace-format -msgid "Repositories: {}" -msgstr "Название зеркала" - -#, fuzzy -msgid "New version available" -msgstr "Нет доступных устройств HSM" - -#, fuzzy -msgid "Passwordless login" -msgstr "Пароль" - -msgid "Second factor login" -msgstr "" - -msgid "Bluetooth" -msgstr "" - -#, fuzzy -msgid "Would you like to configure Bluetooth?" -msgstr "Вы хотите продолжить?" - -msgid "Authentication" -msgstr "" - -msgid "Applications" -msgstr "" - -msgid "U2F login method: " -msgstr "" - -msgid "Passwordless sudo: " -msgstr "" - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "" - -msgid "Syncing the system..." -msgstr "" - -msgid "Value cannot be empty" -msgstr "" - -msgid "Snapshot type" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Snapshot type: {}" -msgstr "Тип окружения рабочего стола: {}" - -msgid "U2F login setup" -msgstr "" - -msgid "No U2F devices found" -msgstr "" - -msgid "U2F Login Method" -msgstr "" - -#, fuzzy -msgid "Enable passwordless sudo?" -msgstr "Введите пароль: " - -#, fuzzy, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "Выберите устройство FIDO2 для использования в качестве HSM" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "" - -msgid "Starting device modifications in " -msgstr "" - -#, fuzzy -msgid "No network connection found" -msgstr "Нет сетевой конфигурации" - -#, fuzzy -msgid "Would you like to connect to a Wifi?" -msgstr "Вы хотите продолжить?" - -#, fuzzy -msgid "No wifi interface found" -msgstr "Настройка интерфейсов" - -#, fuzzy -msgid "Select wifi network to connect to" -msgstr "Выберите один сетевой интерфейс для настройки" - -msgid "Scanning wifi networks..." -msgstr "" - -#, fuzzy -msgid "No wifi networks found" -msgstr "Нет сетевой конфигурации" - -msgid "Failed setting up wifi" -msgstr "" - -#, fuzzy -msgid "Enter wifi password" -msgstr "Введите пароль: " - -msgid "Ok" -msgstr "" diff --git a/examples/archinstall/archinstall/locales/sv/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/sv/LC_MESSAGES/base.mo deleted file mode 100644 index 66cd8d2..0000000 Binary files a/examples/archinstall/archinstall/locales/sv/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/sv/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/sv/LC_MESSAGES/base.po deleted file mode 100644 index 485a0e0..0000000 --- a/examples/archinstall/archinstall/locales/sv/LC_MESSAGES/base.po +++ /dev/null @@ -1,1811 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" -"Language: sv\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.8\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] En logg-fil har skapats här: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Vänligen rapportera detta fel (och logg-filen) till https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "Vill du verkligen avbryta?" - -msgid "And one more time for verification: " -msgstr "Och en gång till för verifikation: " - -msgid "Would you like to use swap on zram?" -msgstr "Vill du använda swap under zram?" - -msgid "Desired hostname for the installation: " -msgstr "Önskat 'värdnamn' för din installation: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "Användarnamn för obligatoriska superanvändaren med sudo rättigheter: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "Några ytterligare användare att installera (lämna tomt när du är klar): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "Är detta en superanvändare (sudo-rättigheter)?" - -msgid "Select a timezone" -msgstr "Välj en tidszon" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "Vill du använda GRUB istället för systemd-boot som boot-loader?" - -msgid "Choose a bootloader" -msgstr "Välj en boot-loader" - -msgid "Choose an audio server" -msgstr "Välj en ljud-server" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Enbart paket som base, base-devel, linux, linux-firmware, efibootmgr och självvalda paket är installerade." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "Om du önskar en webbläsare, exempelvis firefox eller chromium, bör du skriva in dom i följande fält." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "Skriv in ytterligare paket som skall installeras (separerade med mellanslag, lämna tomt för att skippa): " - -msgid "Copy ISO network configuration to installation" -msgstr "Kopiera nätverkskonfigurationen från ISO till installationen" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "Använd NetworkManager (nödvändigt för att konfigurera internet i grafiska miljöerna GNOME och KDE)" - -msgid "Select one network interface to configure" -msgstr "Välj ett nätverkskort för konfigurering" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "Välj vilket läge att konfigurera för \"{}\" eller använd standardläge \"{}\"" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "Mata in IP och subnät för {} (exempelvis: 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "Mata in IP-adress till gateway (router) eller lämna tomt för inget: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "Mata in DNS-servrar (separerade med mellanslag, lämna tomt för inget): " - -msgid "Select which filesystem your main partition should use" -msgstr "Välj vilket filsystem din huvudpartition skall använda" - -msgid "Current partition layout" -msgstr "Nuvarande partitionslayout" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"Välj vad du vill göra med\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "Mata in önskad filsystemtyp för partition" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "Ange startplatsen (i delade enheter: s, GB, %, etc. ; standard: {}): " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "Ange slutplatsen (i delade enheter: s, GB, %, etc. ; ex: {}): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} innehåller uppköade partitioner, detta tar bort dessa, är du säker?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"Välj vilket partitionsindex du vill ta bort" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"Välj vilket partitionsindex du vill montera vart" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * Partitionens monteringsplats är relativa till insidan av installationen, boot är exempelvis /boot." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "Välj vart du vill montera partitionen (lämna tomt för att ta bort montering): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"Välj vilken partition som skall markeras för formatering" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"Välj vilken partition som skall markeras för kryptering" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"Välj vilken partition som skall markeras som bootbar" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"Välj vilken partition som du vill välja filsystem till" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "Mata in ett önskat filsystem för partitionen: " - -msgid "Archinstall language" -msgstr "Språk för detta gränssnitt" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Töm alla partitioner och använd en generiskt rekommenderad partitionslayout" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Välj vad som skall hända med varje individuell disk (följt av partitionsanvändning)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "Välj vad du önskar göra med valda blockenheterna" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "Detta är en lista med förprogrammerade profiler, dom kan göra installation av exempelvis skrivbordsmiljöer lite enklare" - -msgid "Select keyboard layout" -msgstr "Välj tangentbordslayout" - -msgid "Select one of the regions to download packages from" -msgstr "Välj en av regionerna för att ladda ner paket ifrån" - -msgid "Select one or more hard drives to use and configure" -msgstr "Välj en eller flera hårddiskar som skall användas och konfigureras" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "För bästa kompabilitet med din AMD-hårdvara, vill du förmodligen använda antingen \"öppen mjukvara\" eller \"AMD/ATI\" valet." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "För bästa kompabilitet med din Intel-hårdvara, vill du förmodligen använda antingen \"öppen mjukvara\" eller \"Intel\" valet.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "För bästa kompabilitet med din nVidia-hårdvara, vill du förmodligen använda antingen \"nVidia proprietär drivrutin\".\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Välj en grafikdrivrutin eller lämna blankt för att installera alla med öppen mjukvara" - -msgid "All open-source (default)" -msgstr "Alla med öppen mjukvara (standardvalet)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "Välj vilken Linux-kärna du vill använda, lämna tomt för att använda \"{}\"" - -msgid "Choose which locale language to use" -msgstr "Välj vilket språk du vill använda" - -msgid "Choose which locale encoding to use" -msgstr "Välj vilken teckenuppsättning du vill använda" - -msgid "Select one of the values shown below: " -msgstr "Välj en av alternativen nedan: " - -msgid "Select one or more of the options below: " -msgstr "Välj ett eller flera av följande val: " - -msgid "Adding partition...." -msgstr "Skapar en partition...." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "Du måste mata in en supporterad filsystem-typ för att fortsätta. Kör `man parted` för supporterade filsystem." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Fel: Listning av profiler på \"{}\" resulterade i:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "Fel: Kunde inte tyda \"{}\" resultatet som JSON:" - -msgid "Keyboard layout" -msgstr "Tangentbordslayout" - -msgid "Mirror region" -msgstr "Region för paketsynk" - -msgid "Locale language" -msgstr "Språk du vill använda" - -msgid "Locale encoding" -msgstr "Teckenuppsättning du vill använda" - -msgid "Drive(s)" -msgstr "Hårddisk(ar)" - -msgid "Disk layout" -msgstr "Disklayout" - -msgid "Encryption password" -msgstr "Krypterings-lösenord" - -msgid "Swap" -msgstr "Swap" - -msgid "Bootloader" -msgstr "Boot-loader" - -msgid "Root password" -msgstr "Root-lösenord" - -msgid "Superuser account" -msgstr "Superanvändar-konto" - -msgid "User account" -msgstr "Användarkonto" - -msgid "Profile" -msgstr "Profil" - -msgid "Audio" -msgstr "Ljud mjukvara" - -msgid "Kernels" -msgstr "Linux-kärnor" - -msgid "Additional packages" -msgstr "Extra paket" - -msgid "Network configuration" -msgstr "Nätverkskonfiguration" - -msgid "Automatic time sync (NTP)" -msgstr "Automatisk tidssynk (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "Installera ({} inställningar saknas)" - -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 "" -"Du valde att hoppa över hårddiskvalet.\n" -"Archinstall kommer därför använda vad som finns monterat under {} (experimentell)!\n" -"Varning: Archinstall kommer inte kontrollera lämpligheten i diskvalet.\n" -"Vill du fortsätta?" - -msgid "Re-using partition instance: {}" -msgstr "Återanvänder disk-instans: {}" - -msgid "Create a new partition" -msgstr "Skapa en ny partition" - -msgid "Delete a partition" -msgstr "Ta bort en partition" - -msgid "Clear/Delete all partitions" -msgstr "Rensa/Ta bort alla partitioner" - -msgid "Assign mount-point for a partition" -msgstr "Välj monteringspunkt för en partition" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "Markera/Avmarkera en partition för formatering (tar bort alla dess data)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "Markera/Avmarkera en partition som krypterad" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "Markera/Avmarkera en partition som bootbar (automatiskt gjort för /boot)" - -msgid "Set desired filesystem for a partition" -msgstr "Sätt önskat filsystem för partitionen" - -msgid "Abort" -msgstr "Avbryt" - -msgid "Hostname" -msgstr "Värdnamn" - -msgid "Not configured, unavailable unless setup manually" -msgstr "Inte konfigurerad, otillgängligt utan manuell konfigurering" - -msgid "Timezone" -msgstr "Tidszon" - -msgid "Set/Modify the below options" -msgstr "Sätt eller modifiera nedan alternativ" - -msgid "Install" -msgstr "Installera" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"Använd ESC för att hoppa över\n" -"\n" - -msgid "Suggest partition layout" -msgstr "Rekommendera en partitionslayout" - -msgid "Enter a password: " -msgstr "Mata in ett lösenord: " - -msgid "Enter a encryption password for {}" -msgstr "Mata in ett krypterings-lösenord för {}" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "Mata in ett disk-krypteringslösenord (lämna blankt för att hoppa över kryptering): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "Skapa ett super-användarkonto med sudo-rättigheter (detta är ett krav): " - -msgid "Enter root password (leave blank to disable root): " -msgstr "Mata in ett root-lösenord (lämna blankt för att deaktivera kontot): " - -msgid "Password for user \"{}\": " -msgstr "Lösenord för användare \"{}\": " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "Verifierar att valda paket existerar (detta kan ta några sekunder)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "Skulle du vilja använda automatisk tidssynkronisering (NTP) med standard-tidsservrar?\n" - -msgid "" -"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" -"For more information, please check the Arch wiki" -msgstr "" -"Hårdvaru-tid och annan efterkonfigurering kan behövas för att NTP skall fungera korrekt.\n" -"För mer information, se Arch Wiki-sidan" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "Mata in ett användarnamn för att skapa ytterligare användare (lämna tomt för att hoppa över): " - -msgid "Use ESC to skip\n" -msgstr "Använd ESC för att hoppa över\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -"Välj ett objekt från listan, och välj en åtgärd att exekvera" - -msgid "Cancel" -msgstr "Avbryt" - -msgid "Confirm and exit" -msgstr "Godkänn och gå ur" - -msgid "Add" -msgstr "Lägg till" - -msgid "Copy" -msgstr "Kopiera" - -msgid "Edit" -msgstr "Editera" - -msgid "Delete" -msgstr "Ta bort" - -msgid "Select an action for '{}'" -msgstr "Välj vad du vill göra med '{}'" - -msgid "Copy to new key:" -msgstr "Kopiera till en ny nyckel:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "Okänd NIC typ: {}. Möjliga val är {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"Det här är din valda konfiguration:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Pacman körs redan, väntar max 10 minuter innan vi avbryter." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "Existerande pacman-lås avslutades aldrig. Vänligen rensa upp föregående körningar av pacman-sessioner innan du använder archinstall." - -msgid "Choose which optional additional repositories to enable" -msgstr "Välj vilka frivilliga arkiv som ska aktiveras" - -msgid "Add a user" -msgstr "Lägg till användare" - -msgid "Change password" -msgstr "Byt lösenord" - -msgid "Promote/Demote user" -msgstr "Befodra/Degradera användare" - -msgid "Delete User" -msgstr "Ta bort användare" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"Skapa ny användare\n" - -msgid "User Name : " -msgstr "Användarnamn : " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "Är detta en superanvändare (sudo-rättigheter)?" - -msgid "Define users with sudo privilege: " -msgstr "Skapa användare med sudo-rättigheter: " - -msgid "No network configuration" -msgstr "Ingen nätverkskonfigurering" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "Välj önskade sub-volymen på en BTRFS partition" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"Välj vilken partition som du ska sätta sub-volymer på" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "Managera BTRFS sub-volymer på nuvarande partition" - -msgid "No configuration" -msgstr "Ingen konfiguration" - -msgid "Save user configuration" -msgstr "Spara användarkonfigurering" - -msgid "Save user credentials" -msgstr "Spara användar-/lösenordsuppgifter" - -msgid "Save disk layout" -msgstr "Spara disk konfigurering" - -msgid "Save all" -msgstr "Spara alla" - -msgid "Choose which configuration to save" -msgstr "Välj vilken konfigurering du vill spara" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "Välj vilken mapp du vill spara konfigurerationerna till: " - -msgid "Not a valid directory: {}" -msgstr "Inte en giltig mapp: {}" - -msgid "The password you are using seems to be weak," -msgstr "Lösenordet du angav verkar svagt," - -msgid "are you sure you want to use it?" -msgstr "är du säker på att du vill använda det?" - -msgid "Optional repositories" -msgstr "Valfria arkiv" - -msgid "Save configuration" -msgstr "Spara konfiguration" - -msgid "Missing configurations:\n" -msgstr "Konfigurationer som saknas:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "Antingen måste ett root-lösenord sättas eller 1 superanvändarkonto skapas" - -msgid "Manage superuser accounts: " -msgstr "Managera super-användare: " - -msgid "Manage ordinary user accounts: " -msgstr "Managera vanliga användarkonton: " - -msgid " Subvolume :{:16}" -msgstr " Sub-volym :{:16}" - -msgid " mounted at {:16}" -msgstr " Monterad som {:16}" - -msgid " with option {}" -msgstr " Med inställningen {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -"Mata in önskvärda värden för nya sub-volymer \n" - -msgid "Subvolume name " -msgstr "Namn för Sub-volymen " - -msgid "Subvolume mountpoint" -msgstr "Monteringspunkt för sub-volymen" - -msgid "Subvolume options" -msgstr "Flaggor för sub-volymen" - -msgid "Save" -msgstr "Spara" - -msgid "Subvolume name :" -msgstr "Namn på sub-volymen :" - -msgid "Select a mount point :" -msgstr "Välj en monteringspunkt :" - -msgid "Select the desired subvolume options " -msgstr "Välj önskade inställningar för sub-volymen " - -msgid "Define users with sudo privilege, by username: " -msgstr "Definera användarnamn med sudo-rättigheter: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] En logg-fil har skapats här: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "Vill du använda BTRFS sub-volymer med standard-layout?" - -msgid "Would you like to use BTRFS compression?" -msgstr "Vill du använda komprimering för BTRFS?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "Vill du skapa en separat partition för /home?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "De valda diskarna uppfyller inte minsta lagringskapacitet för automatisk layout-förslag\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "Minsta kapaciteten för /home är: {}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Minsta kapaciteten för Arch Linux partitionen är: {}GB" - -msgid "Continue" -msgstr "Gå vidare" - -msgid "yes" -msgstr "ja" - -msgid "no" -msgstr "nej" - -msgid "set: {}" -msgstr "sätt: {}" - -msgid "Manual configuration setting must be a list" -msgstr "Manuell konfigurering måste vara en lista" - -msgid "No iface specified for manual configuration" -msgstr "Inget interface specificerat för manuell konfigurering" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "Manuell NIC-konfiguration utan DHCP kräver en IP adress" - -msgid "Add interface" -msgstr "Lägg till interface" - -msgid "Edit interface" -msgstr "Editera interface" - -msgid "Delete interface" -msgstr "Ta bort interface" - -msgid "Select interface to add" -msgstr "Välj ett nätverkskort att lägga till" - -msgid "Manual configuration" -msgstr "Manuell konfiguration" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "Markera/Avmarkera en partition för komprimering (BTRFS enbart)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "Lösenordet du angav verkar svagt, är du säker på att du vill använda det?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "Ger ett urval av skrivbordsval och fönsterhanterare, t.ex. Gnome, KDE och sway" - -msgid "Select your desired desktop environment" -msgstr "Välj din skrivbordsmiljö" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "En väldigt minimal installation som möjliggör konfigurering av Arch Linux som du själv vill ha det." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "Erbjuder ett urval av olika server-paketeringar, t.ex. httpd, nginx och mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "Välj vilka servrar som ska installeras, om ingen kommer en minimal installation att göras" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "Installerar ett minimal system med xorg och grafikdrivrutiner." - -msgid "Press Enter to continue." -msgstr "Tryck på Enter för att fortsätta." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "Vill du hoppa in i det nyligen installerade systemet och utföra förändringar? (skriv 'exit' när du är klart)" - -msgid "Are you sure you want to reset this setting?" -msgstr "Vill du verkligen återställa denna inställning?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "Välj en eller flera hårddiskar som skall användas och konfigureras\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "Modiferingar av inställningen kommer återställa disk-konfigureringen!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "Om du återställer hårddiskvalen kommer det också återställa diskuppsättningen. Är du säker?" - -msgid "Save and exit" -msgstr "Spara och gå ur" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"innehåller uppköade partitionen och detta kommer ta bort dessa. Är du säker?" - -msgid "No audio server" -msgstr "Ingen ljud-server" - -msgid "(default)" -msgstr "(standard)" - -msgid "Use ESC to skip" -msgstr "Använd ESC för att hoppa över" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"Använd CTRL+C för att återställa valen\n" -"\n" - -msgid "Copy to: " -msgstr "Kopiera till: " - -msgid "Edit: " -msgstr "Editera: " - -msgid "Key: " -msgstr "Nyckel: " - -msgid "Edit {}: " -msgstr "Editera {}: " - -msgid "Add: " -msgstr "Lägg till: " - -msgid "Value: " -msgstr "Värde: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "Du kan hoppa över val av disk och partitionering och använda det som är monterat vid /mnt/archinstall (experimentellt)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "Välj en disk eller hoppa över och använd /mnt/archinstall utan formatering" - -msgid "Select which partitions to mark for formatting:" -msgstr "Välj vilken partition som skall markeras för formatering:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "Använd HSM för att låsa upp krypterad enhet" - -msgid "Device" -msgstr "Enhet" - -msgid "Size" -msgstr "Storlek" - -msgid "Free space" -msgstr "Fritt utrymme" - -msgid "Bus-type" -msgstr "Buss-typ" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "Antingen root-lösenord eller minst 1 användare med sudo-privilegier måste anges" - -msgid "Enter username (leave blank to skip): " -msgstr "Ange användarnamn (lämna tomt för att hoppa över): " - -msgid "The username you entered is invalid. Try again" -msgstr "Användarnamnet du angav är ogiltigt. Försök igen" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "Ska \"{}\" vara en superanvändare (sudo)?" - -msgid "Select which partitions to encrypt" -msgstr "Välj vilka partitioner som ska krypteras" - -msgid "very weak" -msgstr "mycket svag" - -msgid "weak" -msgstr "svag" - -msgid "moderate" -msgstr "måttlig" - -msgid "strong" -msgstr "starkt" - -msgid "Add subvolume" -msgstr "Lägg till Sub-volym" - -msgid "Edit subvolume" -msgstr "Editera Sub-volym" - -msgid "Delete subvolume" -msgstr "Ta bort Sub-volym" - -msgid "Configured {} interfaces" -msgstr "Konfigurerade {} gränssnitt" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "Detta alternativ aktiverar antalet parallella nedladdningar som kan ske under installationen" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"Ange antalet parallella nedladdningar som ska aktiveras.\n" -" (ange ett värde mellan 1 till {}\n" -"Observera:" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - - Maximalt värde: : {} (Tillåter {} parallella nedladdningar, tillåter {} nedladdningar åt gången)" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - Minimalt värde : 1 (Tillåter 1 parallell nedladdning, tillåter 2 nedladdningar åt gången)" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - Inaktivera/Standard: 0 (Inaktiverar parallell nedladdning, tillåter endast en nedladdning åt gången)" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "Ogiltig inmatning! Försök igen med en giltig inmatning [1 till {max_downloads}, eller 0 för att inaktivera]" - -msgid "Parallel Downloads" -msgstr "Parallella nedladdningar" - -msgid "ESC to skip" -msgstr "ESC för att hoppa över" - -msgid "CTRL+C to reset" -msgstr "CTRL+C för att återställa" - -msgid "TAB to select" -msgstr "TAB för att välja" - -msgid "[Default value: 0] > " -msgstr "[Standardvärde: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "För att kunna använda denna översättning, installera ett teckensnitt manuellt som stöder språket." - -msgid "The font should be stored as {}" -msgstr "Teckensnittet ska lagras som {}" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "Archinstall kräver root-privilegier för att köras. Se --help för mer." - -msgid "Select an execution mode" -msgstr "Välj ett exekveringsläge" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "Det gick inte att hämta profilen från angiven webbadress: {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "Profiler måste ha ett unikt namn, men profildefinitioner med dubblettnamn hittades: {}" - -msgid "Select one or more devices to use and configure" -msgstr "Välj en eller flera enheter att använda och konfigurera" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "Om du återställer enhetsvalet kommer detta också att återställa den aktuella disklayouten. Är du säker?" - -msgid "Existing Partitions" -msgstr "Existerande partitioner" - -msgid "Select a partitioning option" -msgstr "Välj ett partitioneringsalternativ" - -msgid "Enter the root directory of the mounted devices: " -msgstr "Ange rootkatalogen för de monterade enheterna: " - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "Minsta kapacitet för /home-partition: {}GiB\n" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "Minsta kapacitet för Arch Linux-partition: {}GiB" - -msgid "This is a list of pre-programmed profiles_bck, they might make it easier to install things like desktop environments" -msgstr "Det här är en lista över förprogrammerade backup profiler, de kan göra det lättare att installera saker som skrivbordsmiljöer" - -msgid "Current profile selection" -msgstr "Nuvarande profilval" - -msgid "Remove all newly added partitions" -msgstr "Ta bort alla nyligen tillagda partitioner" - -msgid "Assign mountpoint" -msgstr "Tilldela monteringspunkt" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "Markera/avmarkera som det som ska formateras (tar bort all data)" - -msgid "Mark/Unmark as bootable" -msgstr "Markera/avmarkera som bootbar" - -msgid "Change filesystem" -msgstr "Byt filsystem" - -msgid "Mark/Unmark as compressed" -msgstr "Markera/avmarkera som komprimerad" - -msgid "Set subvolumes" -msgstr "Ställ in subvolymer" - -msgid "Delete partition" -msgstr "Ta bort partition" - -msgid "Partition" -msgstr "Partition" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "Denna partition är för närvarande krypterad, för att formatera den måste ett filsystem anges" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "Partitionsmonteringspunkter är relativa till inuti installationen, boot skulle vara /boot som ett exempel." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "Om monteringspunkt /boot är inställd kommer partitionen också att markeras som startbar." - -msgid "Mountpoint: " -msgstr "Monteringspunkt " - -msgid "Current free sectors on device {}:" -msgstr "Aktuella fria sektorer på enheten {}:" - -msgid "Total sectors: {}" -msgstr "Totala sektorer: {}" - -msgid "Enter the start sector (default: {}): " -msgstr "Ange startsektor (standard: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "Ange slutsektorn för partitionen (procent eller blocknummer, standard: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "Detta tar bort alla nyligen tillagda partitioner. Fortsätta?" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "Partitionshantering: {}" - -#, python-brace-format -msgid "Total length: {}" -msgstr "Total längd: {}" - -msgid "Encryption type" -msgstr "Krypteringstyp" - -msgid "Iteration time" -msgstr "Iterationstid" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "Ange iterationstid för LUKS-kryptering (i millisekunder)" - -msgid "Higher values increase security but slow down boot time" -msgstr "Högre värde ökar säkerheten men fördröjer uppstartstiden" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "Standard: 10000ms, Rekommenderat intervall: 1000-60000" - -msgid "Iteration time cannot be empty" -msgstr "Iterationstiden kan inte vara tom" - -msgid "Iteration time must be at least 100ms" -msgstr "Iterationstiden måste vara minst 100 ms" - -msgid "Iteration time must be at most 120000ms" -msgstr "Iterationstiden får vara högst 120000 ms" - -msgid "Please enter a valid number" -msgstr "Var vänlig ange ett giltigt nummer" - -msgid "Partitions" -msgstr "Partitioner" - -msgid "No HSM devices available" -msgstr "Inga HSM-enheter tillgängliga" - -msgid "Partitions to be encrypted" -msgstr "Partitioner som ska krypteras" - -msgid "Select disk encryption option" -msgstr "Välj alternativ för diskkryptering" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "Välj en FIDO2-enhet att använda för HSM" - -msgid "Use a best-effort default partition layout" -msgstr "Använd en generiskt rekommenderad partitionslayout" - -msgid "Manual Partitioning" -msgstr "Manuell partitionering" - -msgid "Pre-mounted configuration" -msgstr "Förmonterad konfiguration" - -msgid "Unknown" -msgstr "Okänd" - -msgid "Partition encryption" -msgstr "Partitionskryptering" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr " ! Formaterar {} om " - -msgid "← Back" -msgstr "← Tillbaka" - -msgid "Disk encryption" -msgstr "Diskkryptering" - -msgid "Configuration" -msgstr "Konfiguration" - -msgid "Password" -msgstr "Lösenord" - -msgid "All settings will be reset, are you sure?" -msgstr "Alla inställningar kommer att återställas, är du säker?" - -msgid "Back" -msgstr "Tillbaka" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "Vänligen välj vilken displayhanterare du vill installera för de valda profilerna: {}" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "Miljötyp: {}" - -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 "Den proprietära Nvidia-drivrutinen stöds inte av Sway. Det är troligt att du kommer att stöta på problem, är du okej med det?" - -msgid "Installed packages" -msgstr "Installerade paket" - -msgid "Add profile" -msgstr "Lägg till profil" - -msgid "Edit profile" -msgstr "Redigera profil" - -msgid "Delete profile" -msgstr "Ta bort profil" - -msgid "Profile name: " -msgstr "Profilnamn: " - -msgid "The profile name you entered is already in use. Try again" -msgstr "Profilnamnet du angav används redan. Försök igen" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "Paket som ska installeras med den här profilen (separerade med mellanslag, lämna tomt för att skippa): " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "Tjänster som ska aktiveras med den här profilen (separerade med mellanslag, lämna tomt för att skippa): " - -msgid "Should this profile be enabled for installation?" -msgstr "Ska denna profil aktiveras för installation?" - -msgid "Create your own" -msgstr "Skapa din egen" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"Välj en grafikdrivrutin eller lämna tomt för att installera alla drivrutiner med öppen källkod" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway behöver tillgång till din sitshantering (samling av hårdvaruenheter, t.ex. tangentbord, mus, etc)" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Välj ett alternativ för att ge Sway åtkomst till din hårdvara" - -msgid "Graphics driver" -msgstr "Grafik drivrutin" - -msgid "Greeter" -msgstr "Displayhanterare" - -msgid "Please chose which greeter to install" -msgstr "Välj vilken displayhanterare att installera" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "Detta är en lista över förprogrammerade standard_profiler" - -msgid "Disk configuration" -msgstr "Diskkonfiguration" - -msgid "Profiles" -msgstr "Profiler" - -msgid "Finding possible directories to save configuration files ..." -msgstr "Hittar möjliga kataloger att spara konfigurationsfiler i ..." - -msgid "Select directory (or directories) for saving configuration files" -msgstr "Välj katalog (eller kataloger) för att spara konfigurationsfiler" - -msgid "Add a custom mirror" -msgstr "Lägg till en anpassad spegel" - -msgid "Change custom mirror" -msgstr "Ändra anpassad spegel" - -msgid "Delete custom mirror" -msgstr "Ta bort anpassad spegel" - -msgid "Enter name (leave blank to skip): " -msgstr "Ange namn (lämna tomt för att hoppa över): " - -msgid "Enter url (leave blank to skip): " -msgstr "Ange url (lämna tomt för att hoppa över): " - -msgid "Select signature check option" -msgstr "Välj signaturkontroll alternativ" - -msgid "Select signature option" -msgstr "Välj signaturalternativ" - -msgid "Custom mirrors" -msgstr "Anpassade speglar" - -msgid "Defined" -msgstr "Definierat" - -msgid "Save user configuration (including disk layout)" -msgstr "Spara användarkonfiguration (inklusive disklayout)" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"Välj vilken mapp som konfigureratione(rna) ska sparas till TAB-komplettering (aktiverat)\n" -"Sparkatalog: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"Vill du spara {} konfigurationsfil(er) på följande plats?\n" -"\n" -"{}" - -msgid "Saving {} configuration files to {}" -msgstr "Sparar {} konfigurationsfiler till {}" - -msgid "Mirrors" -msgstr "Speglar" - -msgid "Mirror regions" -msgstr "Spegelregioner" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - Maximalt värde : (Tillåter {} parallella nedladdningar, tillåter {max_downloads+1} nedladdningar åt gången)" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "Ogiltig inmatning! Försök igen med en giltig inmatning [1 till {}, eller 0 för att inaktivera]" - -msgid "Locales" -msgstr "Lokaler" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "Använd NetworkManager (nödvändigt för att konfigurera internet grafiskt i GNOME och KDE)" - -msgid "Total: {} / {}" -msgstr "Total: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "Alla inmatade värden kan adderas med en enhet: B, KB, KiB, MB, MiB..." - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "Om ingen enhet tillhandahålls tolkas värdet som sektorer" - -msgid "Enter start (default: sector {}): " -msgstr "Ange start (standard: sektor {}): " - -msgid "Enter end (default: {}): " -msgstr "Ange slut (standard: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "Det går inte att fastställa fido2-enheter. Är libfido2 installerat?" - -msgid "Path" -msgstr "Sökväg" - -msgid "Manufacturer" -msgstr "Tillverkare" - -msgid "Product" -msgstr "Produkt" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "Ogiltig konfiguration: {error}" - -msgid "Type" -msgstr "Typ" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "Det här alternativet aktiverar antalet parallella nedladdningar som kan ske under paketnedladdningar" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"Ange antalet parallella nedladdningar som ska aktiveras.\n" -"\n" -"Observera:\n" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - Maximalt rekommenderat värde: {} (Tillåter {} parallella nedladdningar åt gången)" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - Inaktivera/Standard: 0 (Inaktiverar parallell nedladdning, tillåter endast en nedladdning åt gången)\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "Ogiltig inmatning! Försök igen med en giltig inmatning [eller 0 för att inaktivera]" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Hyprland behöver tillgång till din sitshantering (samling av hårdvaruenheter t.ex. tangentbord, mus, etc)" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Välj ett alternativ för att ge Hyprland åtkomst till din hårdvara" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "Alla inmatade värden kan adderas med en enhet: %, B, KB, KiB, MB, MiB..." - -msgid "Would you like to use unified kernel images?" -msgstr "Vill du använda enhetliga kärnavbildningar?" - -msgid "Unified kernel images" -msgstr "Enhetliga kärnavbildningar" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "Väntar på att tidssynkroniseringen (timedatectl show) ska slutföras." - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Tidssynkroniseringen slutförs inte medan du väntar - kontrollera dokumentationen för lösningar: https://archinstall.readthedocs.io/" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "Hoppa över att vänta på automatisk tidssynkronisering (detta kan orsaka problem om tiden är osynkroniserad under installationen)" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "Väntar på att Arch Linux-nyckelringssynkroniseringen (archlinux-keyring-wkd-sync) ska slutföras." - -msgid "Selected profiles: " -msgstr "Valda profiler: " - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Tidsynkroniseringen slutförs inte medan du väntar - kontrollera dokumentationen för lösningar: https://archinstall.readthedocs.io/" - -msgid "Mark/Unmark as nodatacow" -msgstr "Markera/avmarkera som nodatacow" - -msgid "Would you like to use compression or disable CoW?" -msgstr "Vill du använda komprimering eller inaktivera CoW?" - -msgid "Use compression" -msgstr "Använd komprimering" - -msgid "Disable Copy-on-Write" -msgstr "Inaktivera Copy-on-Write" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "Ger ett urval av skrivbordsmiljöer och kaklade fönsterhanterare, t.ex. GNOME, KDE Plasma, Sway" - -#, python-brace-format -msgid "Configuration type: {}" -msgstr "Konfigurationstyp: {}" - -msgid "LVM configuration type" -msgstr "LVM-konfigurationstyp" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "LVM-diskkryptering med fler än 2 partitioner stöds för närvarande inte" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "Använd NetworkManager (nödvändigt för att konfigurera internet grafiskt i GNOME och KDE Plasma)" - -msgid "Select a LVM option" -msgstr "Välj ett LVM-alternativ" - -msgid "Partitioning" -msgstr "Partitionering" - -msgid "Logical Volume Management (LVM)" -msgstr "Logisk volymhantering (LVM)" - -msgid "Physical volumes" -msgstr "Fysiska volymer" - -msgid "Volumes" -msgstr "Volymer" - -msgid "LVM volumes" -msgstr "LVM-volymer" - -msgid "LVM volumes to be encrypted" -msgstr "LVM-volymer som ska krypteras" - -msgid "Select which LVM volumes to encrypt" -msgstr "Välj vilka LVM-volymer som ska krypteras" - -msgid "Default layout" -msgstr "Standardlayout" - -msgid "No Encryption" -msgstr "Ingen kryptering" - -msgid "LUKS" -msgstr "LUKS" - -msgid "LVM on LUKS" -msgstr "LVM på LUKS" - -msgid "LUKS on LVM" -msgstr "LUKS på LVM" - -msgid "Yes" -msgstr "Ja" - -msgid "No" -msgstr "Nej" - -msgid "Archinstall help" -msgstr "Archinstall hjälp" - -msgid " (default)" -msgstr " (standard)" - -msgid "Press Ctrl+h for help" -msgstr "Tryck på Ctrl+h för hjälp" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "Välj ett alternativ för att ge Sway åtkomst till din hårdvara" - -msgid "Seat access" -msgstr "Åtkomst av sitshantering" - -msgid "Mountpoint" -msgstr "Monteringspunkt" - -msgid "HSM" -msgstr "HSM" - -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "Mata in ett disk-krypteringslösenord (lämna blankt för att hoppa över kryptering)" - -msgid "Disk encryption password" -msgstr "Diskkrypteringslösenord" - -msgid "Partition - New" -msgstr "Partition - Ny" - -msgid "Filesystem" -msgstr "Filsystem" - -msgid "Invalid size" -msgstr "Ogiltig storlek" - -msgid "Start (default: sector {}): " -msgstr "Start (standard: sektor {}): " - -msgid "End (default: {}): " -msgstr "Slut (standard: {}): " - -msgid "Subvolume name" -msgstr "Subvolymens namn" - -msgid "Disk configuration type" -msgstr "Diskkonfigurationstyp" - -msgid "Root mount directory" -msgstr "Rootmonteringskatalog" - -msgid "Select language" -msgstr "Välj språk" - -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "Skriv in ytterligare paket som skall installeras (separerade med mellanslag, lämna tomt för att skippa):" - -msgid "Invalid download number" -msgstr "Ogiltigt nedladdningsnummer" - -msgid "Number downloads" -msgstr "Antal nedladdningar" - -msgid "The username you entered is invalid" -msgstr "Användarnamnet du angav är ogiltigt" - -msgid "Username" -msgstr "Användarnamn" - -#, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "Ska \"{}\" vara en superanvändare (sudo)?\n" - -msgid "Interfaces" -msgstr "Gränssnitt" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "Du måste ange en giltig IP i IP-konfigurationsläge" - -msgid "Modes" -msgstr "Lägen" - -msgid "IP address" -msgstr "IP-adress" - -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "Mata in IP-adress till gateway (router) eller lämna tomt för inget" - -msgid "Gateway address" -msgstr "Gateway adress" - -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "Mata in DNS-servrar (separerade med mellanslag, lämna tomt för inget)" - -msgid "DNS servers" -msgstr "DNS-servrar" - -msgid "Configure interfaces" -msgstr "Konfigurera gränssnitt" - -msgid "Kernel" -msgstr "Kärna" - -msgid "UEFI is not detected and some options are disabled" -msgstr "UEFI identifierades inte och vissa alternativ är inaktiverade" - -msgid "Info" -msgstr "Information" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "Den proprietära Nvidia-drivrutinen stöds inte av Sway." - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "Det är troligt att du kommer att stöta på problem, är du okej med det?" - -msgid "Main profile" -msgstr "Huvudprofil" - -msgid "Confirm password" -msgstr "Bekräfta lösenord" - -msgid "The confirmation password did not match, please try again" -msgstr "Bekräftelselösenordet matchade inte, försök igen" - -msgid "Not a valid directory" -msgstr "Inte en giltig katalog" - -msgid "Would you like to continue?" -msgstr "Vill du fortsätta?" - -msgid "Directory" -msgstr "Katalog" - -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "Ange en katalog för konfigurationen/konfigurationerna som ska sparas (komplettering av flikar aktiverad)" - -#, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "Vill du spara konfigurationsfil(er) till {}?" - -msgid "Enabled" -msgstr "Aktiverad" - -msgid "Disabled" -msgstr "Inaktiverad" - -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "Vänligen skicka in detta problem (och fil) till https://github.com/archlinux/archinstall/issues" - -msgid "Mirror name" -msgstr "Spegelnamn" - -msgid "Url" -msgstr "Webbadress" - -msgid "Select signature check" -msgstr "Välj signaturkontroll" - -msgid "Select execution mode" -msgstr "Välj exekveringsläge" - -msgid "Press ? for help" -msgstr "Tryck på ?för hjälp" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "Välj ett alternativ för att ge Hyprland åtkomst till din hårdvara" - -msgid "Additional repositories" -msgstr "Ytterligare arkiv" - -msgid "NTP" -msgstr "NTP" - -msgid "Swap on zram" -msgstr "Swap på zram" - -msgid "Name" -msgstr "Namn" - -msgid "Signature check" -msgstr "Signaturkontroll" - -#, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "Valt ledigt utrymmessegment på enheten {}:" - -#, python-brace-format -msgid "Size: {} / {}" -msgstr "Storlek: {} / {}" - -#, python-brace-format -msgid "Size (default: {}): " -msgstr "Storlek (standard: {}): " - -msgid "HSM device" -msgstr "HSM-enhet" - -msgid "Some packages could not be found in the repository" -msgstr "Vissa paket kunde inte hittas i arkivet" - -msgid "User" -msgstr "Användare" - -msgid "The specified configuration will be applied" -msgstr "Den angivna konfigurationen kommer att tillämpas" - -msgid "Wipe" -msgstr "Rensa" - -msgid "Mark/Unmark as XBOOTLDR" -msgstr "Markera/avmarkera som XBOOTLDR" - -msgid "Loading packages..." -msgstr "Laddar paket..." - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "Välj alla paket från listan nedan som ska installeras ytterligare" - -msgid "Add a custom repository" -msgstr "Lägg till en anpassat arkiv" - -msgid "Change custom repository" -msgstr "Ändra anpassat arkiv" - -msgid "Delete custom repository" -msgstr "Ta bort anpassat arkiv" - -msgid "Repository name" -msgstr "Arkivnamn" - -msgid "Add a custom server" -msgstr "Lägg till en anpassad server" - -msgid "Change custom server" -msgstr "Ändra anpassad server" - -msgid "Delete custom server" -msgstr "Ta bort anpassad server" - -msgid "Server url" -msgstr "Server url" - -msgid "Select regions" -msgstr "Välj regioner" - -msgid "Add custom servers" -msgstr "Lägg till en anpassade servrar" - -msgid "Add custom repository" -msgstr "Lägg till ett anpassat arkiv" - -msgid "Loading mirror regions..." -msgstr "Laddar spegelregioner..." - -msgid "Mirrors and repositories" -msgstr "Speglar och arkiv" - -msgid "Selected mirror regions" -msgstr "Valda spegelregioner" - -msgid "Custom servers" -msgstr "Anpassade servrar" - -msgid "Custom repositories" -msgstr "Anpassade arkiv" - -msgid "Only ASCII characters are supported" -msgstr "Endast ASCII-tecken stöds" - -msgid "Show help" -msgstr "Visa hjälp" - -msgid "Exit help" -msgstr "Avsluta hjälpen" - -msgid "Preview scroll up" -msgstr "Förhandsgranska rulla uppåt" - -msgid "Preview scroll down" -msgstr "Förhandsgranska rulla nedåt" - -msgid "Move up" -msgstr "Flytta upp" - -msgid "Move down" -msgstr "Flytta ned" - -msgid "Move right" -msgstr "Flytta höger" - -msgid "Move left" -msgstr "Flytta vänster" - -msgid "Jump to entry" -msgstr "Hoppa till posten" - -msgid "Skip selection (if available)" -msgstr "Hoppa över valet (om tillgängligt)" - -msgid "Reset selection (if available)" -msgstr "Återställ val (om tillgängligt)" - -msgid "Select on single select" -msgstr "Välj på enstaka val" - -msgid "Select on multi select" -msgstr "Välj på flerval" - -msgid "Reset" -msgstr "Återställ" - -msgid "Skip selection menu" -msgstr "Hoppa över valmenyn" - -msgid "Start search mode" -msgstr "Starta sökläge" - -msgid "Exit search mode" -msgstr "Avsluta sökläge" - -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "labwc behöver tillgång till din sitshantering (samling av hårdvaruenheter, t.ex. tangentbord, mus, etc)" - -msgid "Choose an option to give labwc access to your hardware" -msgstr "Välj ett alternativ för att ge labwc åtkomst till din hårdvara" - -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "niri behöver tillgång till din sitshantering (samling av hårdvaruenheter, t.ex. tangentbord, mus, etc)" - -msgid "Choose an option to give niri access to your hardware" -msgstr "Välj ett alternativ för att ge niri åtkomst till din hårdvara" - -msgid "Mark/Unmark as ESP" -msgstr "Markera/avmarkera som ESP" - -msgid "Package group:" -msgstr "Paketgrupp:" - -msgid "Exit archinstall" -msgstr "Avsluta archinstall" - -msgid "Reboot system" -msgstr "Starta om systemet" - -msgid "chroot into installation for post-installation configurations" -msgstr "chroot in i installationen för efterinstallationskonfigurationer" - -msgid "Installation completed" -msgstr "Installationen slutförd" - -msgid "What would you like to do next?" -msgstr "Vad vill du göra härnäst?" - -#, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "Välj vilket läge att konfigurera för \"{}\"" - -msgid "Incorrect credentials file decryption password" -msgstr "Felaktigt lösenord för autentiseringsfilens dekrypteringslösenord" - -msgid "Incorrect password" -msgstr "Felaktigt lösenord" - -msgid "Credentials file decryption password" -msgstr "Dekrypteringslösenord för autentiseringsfil" - -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "Vill du kryptera user_credentials.json filen?" - -msgid "Credentials file encryption password" -msgstr "Krypteringslösenord för autentiseringsfil" - -#, python-brace-format -msgid "Repositories: {}" -msgstr "Arkiv: {}" - -msgid "New version available" -msgstr "Ny version tillgänglig" - -msgid "Passwordless login" -msgstr "Lösenordslös inloggning" - -msgid "Second factor login" -msgstr "Andra faktorsinloggning" - -msgid "Bluetooth" -msgstr "Bluetooth" - -msgid "Would you like to configure Bluetooth?" -msgstr "Vill du konfigurera Bluetooth?" - -msgid "Authentication" -msgstr "Autentisering" - -msgid "Applications" -msgstr "Program" - -msgid "U2F login method: " -msgstr "U2F-inloggningsmetod: " - -msgid "Passwordless sudo: " -msgstr "Lösenordslös sudo: " - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "Btrfs-ögonblicksavbildstyp: {}" - -msgid "Syncing the system..." -msgstr "Synkroniserar systemet..." - -msgid "Value cannot be empty" -msgstr "Värdet kan inte vara tomt" - -msgid "Snapshot type" -msgstr "Ögonblicksavbildstyp" - -#, python-brace-format -msgid "Snapshot type: {}" -msgstr "Ögonblicksavbildstyp: {}" - -msgid "U2F login setup" -msgstr "Ställ in U2F-inloggning" - -msgid "No U2F devices found" -msgstr "Inga U2F-enheter hittades" - -msgid "U2F Login Method" -msgstr "U2F-inloggningsmetod" - -msgid "Enable passwordless sudo?" -msgstr "Aktivera lösenordslös sudo?" - -#, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "Konfigurerar U2F-enhet för användare: {}" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "Du kan behöva ange PIN-koden och sedan trycka på din U2F-enhet för att registrera den" - -msgid "Starting device modifications in " -msgstr "Starta enhetsmodifieringar i " - -msgid "No network connection found" -msgstr "Ingen nätverksanslutning hittades" - -msgid "Would you like to connect to a Wifi?" -msgstr "Vill du ansluta till ett wifi nätverk?" - -msgid "No wifi interface found" -msgstr "Inget wifi gränssnitt hittades" - -msgid "Select wifi network to connect to" -msgstr "Välj ett wifi nätverk att ansluta till" - -msgid "Scanning wifi networks..." -msgstr "Skannar efter wifi nätverk..." - -msgid "No wifi networks found" -msgstr "Inga wifi nätverk hittades" - -msgid "Failed setting up wifi" -msgstr "Misslyckades med att ställa in wifi" - -msgid "Enter wifi password" -msgstr "Ange wifi lösenord" - -msgid "Ok" -msgstr "Ok" diff --git a/examples/archinstall/archinstall/locales/ta/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/ta/LC_MESSAGES/base.mo deleted file mode 100644 index afcb264..0000000 Binary files a/examples/archinstall/archinstall/locales/ta/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/ta/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/ta/LC_MESSAGES/base.po deleted file mode 100644 index 7b7feb3..0000000 --- a/examples/archinstall/archinstall/locales/ta/LC_MESSAGES/base.po +++ /dev/null @@ -1,1913 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: K.B.Dharun Krishna \n" -"Language-Team: \n" -"Language: ta\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.5\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] ஒரு பதிவு கோப்பு இங்கே உருவாக்கப்பட்டது: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " இந்த சிக்கல் (மற்றும் கோப்பை) https://github.com/archlinux/archinstall/issues க்கு சமர்ப்பிக்கவும்" - -msgid "Do you really want to abort?" -msgstr "நீங்கள் உண்மையிலேயே கைவிட விரும்புகிறீர்களா?" - -msgid "And one more time for verification: " -msgstr "மற்றும் மேலும் ஒரு முறை சரிபார்த்தல்: " - -msgid "Would you like to use swap on zram?" -msgstr "நீங்கள் zram இல் swap ஐப் பயன்படுத்த விரும்புகிறீர்களா?" - -msgid "Desired hostname for the installation: " -msgstr "நிறுவலுக்கு விரும்பிய ஹோஸ்ட்பெயர்: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "சூடோ சிறப்புரிமைகளுடன் தேவைப்படும் சூப்பர் யூசருக்கான பயனர் பெயர்: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "நிறுவ வேண்டிய கூடுதல் பயனர்கள் (பயனர்கள் யாரும் இல்லாத நிலையில் காலியாக விடவும்): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "இந்தப் பயனர் ஒரு சூப்பர் யூசராக (sudoer) இருக்க வேண்டுமா?" - -msgid "Select a timezone" -msgstr "நேர மண்டலத்தைத் தேர்ந்தெடுக்கவும்" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "நீங்கள் systemd-boot க்குப் பதிலாக GRUB ஐ துவக்க ஏற்றியாகப் பயன்படுத்த விரும்புகிறீர்களா?" - -msgid "Choose a bootloader" -msgstr "துவக்க ஏற்றியைத் தேர்ந்தெடுக்கவும்" - -msgid "Choose an audio server" -msgstr "ஆடியோ சர்வரை தேர்வு செய்யவும்" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "தொகுப்பு Base, base-devel, linux, linux-firmware, efibootmgr மற்றும் விருப்ப சுயவிவர தொகுப்புகள் போன்ற தொகுப்புகள் மட்டுமே நிறுவப்பட்டுள்ளன." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "நீங்கள் பயர்பாக்ஸ் அல்லது குரோமியம் போன்ற இணைய உலாவியை விரும்பினால், அதை பின்வரும் வரியில் குறிப்பிடலாம்." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "நிறுவ கூடுதல் தொகுப்புகளை எழுதவும் (இடம் பிரிக்கப்பட்டது, தவிர்க்க காலியாக விடவும்): " - -msgid "Copy ISO network configuration to installation" -msgstr "நிறுவலுக்கு ISO பிணைய கட்டமைப்பு நகலெடுக்கவும்" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "பயன்படுத்துங்கள் NetworkManager ஐப் (GNOME மற்றும் KDE இல் இணையத்தை வரைகலை முறையில் கட்டமைக்க அவசியம்)" - -msgid "Select one network interface to configure" -msgstr "கட்டமைக்க ஒரு பிணைய இடைமுகத்தைத் தேர்ந்தெடுக்கவும்" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "எந்த பயன்முறையை \"{}\" உள்ளமைக்க வேண்டும் என்பதைத் தேர்ந்தெடுக்கவும் அல்லது இயல்புநிலை பயன்முறை \"{}\" ஐப் பயன்படுத்த தவிர்க்கவும்" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "உள்ளிடுங்கள் IP மற்றும் சப்நெட்டை {} (எடுத்துக்காட்டு: 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "உங்கள் நுழைவாயில் (திசைவி) IP முகவரியை உள்ளிடவும் அல்லது எதற்கும் காலியாக விடவும்: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "உங்கள் DNS சேவையகங்களை உள்ளிடவும் (இடம் பிரிக்கப்பட்டது, எதற்கும் காலியாக இல்லை): " - -msgid "Select which filesystem your main partition should use" -msgstr "உங்கள் பிரதான பகிர்வு எந்த கோப்பு முறைமையைப் பயன்படுத்த வேண்டும் என்பதைத் தேர்ந்தெடுக்கவும்" - -msgid "Current partition layout" -msgstr "தற்போதைய பகிர்வு தளவமைப்பு" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"என்ன செய்ய வேண்டும் என்பதைத் தேர்ந்தெடுக்கவும்\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "பகிர்வுக்கு தேவையான கோப்பு முறைமை வகையை உள்ளிடவும்" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "தொடக்க இடத்தை உள்ளிடவும் (பிரிக்கப்பட்ட அலகுகளில்: s, GB, %, முதலியன ; இயல்புநிலை: {}): " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "இறுதி இடத்தை உள்ளிடவும் (பிரிக்கப்பட்ட அலகுகளில்: s, GB, %, etc. ; ex: {}): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} வரிசைப்படுத்தப்பட்ட பகிர்வுகளைக் கொண்டுள்ளது, இது அவற்றை அகற்றும், நீங்கள் உறுதியாக இருக்கிறீர்களா?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"எந்த பகிர்வுகளை நீக்க வேண்டும் என்பதை குறியீட்டின் மூலம் தேர்ந்தெடுக்கவும்" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"எந்த பகிர்வை எங்கு ஏற்ற வேண்டும் என்பதை குறியீட்டு மூலம் தேர்ந்தெடுக்கவும்" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * பகிர்வு மவுண்ட்-பாயிண்ட்கள் நிறுவலின் உள்ளே தொடர்புடையவை, துவக்கம் /boot எடுத்துக்காட்டாக இருக்கும்." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "பகிர்வை எங்கு ஏற்ற வேண்டும் என்பதைத் தேர்ந்தெடுக்கவும் (மவுண்ட்பாயிண்டை அகற்ற காலியாக விடவும்): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"வடிவமைப்பிற்கு எந்த பகிர்வை மறைக்க வேண்டும் என்பதைத் தேர்ந்தெடுக்கவும்" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"எந்தப் பிரிவை மறைகுறியாக்கப்பட்டதாகக் குறிக்க வேண்டும் என்பதைத் தேர்ந்தெடுக்கவும்" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"துவக்கக்கூடியதாகக் குறிக்கும் பகிர்வைத் தேர்ந்தெடுக்கவும்" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"கோப்பு முறைமையை எந்த பகிர்வில் அமைக்க வேண்டும் என்பதைத் தேர்ந்தெடுக்கவும்" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "பகிர்வுக்கு தேவையான கோப்பு முறைமை வகையை உள்ளிடவும்: " - -msgid "Archinstall language" -msgstr "Archinstall மொழி" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "தேர்ந்தெடுக்கப்பட்ட அனைத்து இயக்கிகளையும் துடைத்து, சிறந்த முயற்சி இயல்புநிலை பகிர்வு அமைப்பைப் பயன்படுத்தவும்" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "ஒவ்வொரு தனி இயக்ககத்தையும் என்ன செய்ய வேண்டும் என்பதைத் தேர்ந்தெடுக்கவும் (பகிர்வு உபயோகத்தைத் தொடர்ந்து)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "தேர்ந்தெடுக்கப்பட்ட தொகுதி சாதனங்களில் நீங்கள் என்ன செய்ய விரும்புகிறீர்கள் என்பதைத் தேர்ந்தெடுக்கவும்" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "இது முன்-திட்டமிடப்பட்ட சுயவிவரங்களின் பட்டியல், அவை டெஸ்க்டாப் சூழல்கள் போன்றவற்றை நிறுவுவதை எளிதாக்கலாம்" - -msgid "Select keyboard layout" -msgstr "விசைப்பலகை அமைப்பைத் தேர்ந்தெடுக்கவும்" - -msgid "Select one of the regions to download packages from" -msgstr "தொகுப்புகளை பதிவிறக்கம் செய்ய வேண்டிய பகுதிகளில் ஒன்றைத் தேர்ந்தெடுக்கவும்" - -msgid "Select one or more hard drives to use and configure" -msgstr "பயன்படுத்த மற்றும் கட்டமைக்க ஒன்று அல்லது அதற்கு மேற்பட்ட ஹார்டு டிரைவ்களைத் தேர்ந்தெடுக்கவும்" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "உங்கள் AMD வன்பொருளுடன் சிறந்த இணக்கத்தன்மைக்கு, நீங்கள் அனைத்து திறந்த மூல அல்லது AMD / ATI விருப்பங்களையும் பயன்படுத்த விரும்பலாம்." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "உங்கள் இன்டெல் வன்பொருளுடன் சிறந்த இணக்கத்தன்மைக்கு, நீங்கள் அனைத்து ஓப்பன் சோர்ஸ் அல்லது இன்டெல் விருப்பங்களையும் பயன்படுத்த விரும்பலாம்.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "உங்கள் Nvidia வன்பொருளுடன் சிறந்த இணக்கத்தன்மைக்கு, நீங்கள் Nvidia தனியுரிம இயக்கியைப் பயன்படுத்த விரும்பலாம்.\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"கிராபிக்ஸ் இயக்கியைத் தேர்ந்தெடுக்கவும் அல்லது அனைத்து திறந்த மூல இயக்கிகளையும் நிறுவ காலியாக விடவும்" - -msgid "All open-source (default)" -msgstr "அனைத்தும் திறந்த-மூலம் (இயல்புநிலை)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "எந்த கர்னல்களைப் பயன்படுத்த வேண்டும் என்பதைத் தேர்வு செய்யவும் அல்லது இயல்புநிலைக்கு காலியாக விடவும் \"{}\"" - -msgid "Choose which locale language to use" -msgstr "எந்த லோகேல் மொழியைப் பயன்படுத்த வேண்டும் என்பதைத் தேர்ந்தெடுக்கவும்" - -msgid "Choose which locale encoding to use" -msgstr "எந்த லோகேல் என்கோடிங்கைப் பயன்படுத்த வேண்டும் என்பதைத் தேர்வுசெய்யவும்" - -msgid "Select one of the values shown below: " -msgstr "கீழே காட்டப்பட்டுள்ள மதிப்புகளில் ஒன்றைத் தேர்ந்தெடுக்கவும்: " - -msgid "Select one or more of the options below: " -msgstr "கீழே உள்ள விருப்பங்களில் ஒன்று அல்லது அதற்கு மேற்பட்டவற்றைத் தேர்ந்தெடுக்கவும்: " - -msgid "Adding partition...." -msgstr "பகிர்வை சேர்க்கிறது...." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "தொடர, நீங்கள் செல்லுபடியாகும் fs-type உள்ளிட வேண்டும். செல்லுபடியாகும் fs-type'sக்கு `man parted` என்பதைப் பார்க்கவும்." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "பிழை: URL \"{}\" இல் சுயவிவரங்களை பட்டியலிடுவதால் விளைவித்தது:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "பிழை: \"{}\" முடிவை JSON ஆக டிகோட் செய்ய முடியவில்லை:" - -msgid "Keyboard layout" -msgstr "விசைப்பலகை அமைப்பு" - -msgid "Mirror region" -msgstr "மிரர் பிராந்தியம்" - -msgid "Locale language" -msgstr "லோகேல் மொழி" - -msgid "Locale encoding" -msgstr "லோகேல் என்கோடிங்" - -msgid "Drive(s)" -msgstr "இயக்கி(கள்)" - -msgid "Disk layout" -msgstr "வட்டு தளவமைப்பு" - -msgid "Encryption password" -msgstr "குறியாக்கம் கடவுச்சொல்" - -msgid "Swap" -msgstr "இடமாற்று" - -msgid "Bootloader" -msgstr "துவக்க ஏற்றி" - -msgid "Root password" -msgstr "ரூட் கடவுச்சொல்" - -msgid "Superuser account" -msgstr "சூப்பர் யூசர் கணக்கு" - -msgid "User account" -msgstr "பயனர் கணக்கு" - -msgid "Profile" -msgstr "சுயவிவரம்" - -msgid "Audio" -msgstr "ஆடியோ" - -msgid "Kernels" -msgstr "கர்னல்கள்" - -msgid "Additional packages" -msgstr "கூடுதல் தொகுப்புகள்" - -msgid "Network configuration" -msgstr "பிணைய கட்டமைப்பு" - -msgid "Automatic time sync (NTP)" -msgstr "தானியங்கி நேர ஒத்திசைவு (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "நிறுவு ({} கட்டமைப்பு(கள்) இல்லை)" - -msgid "" -"You decided to skip harddrive selection\n" -"and will use whatever drive-setup is mounted at {} (experimental)\n" -"WARNING: Archinstall won't check the suitability of this setup\n" -"Do you wish to continue?" -msgstr "" -"ஹார்ட் டிரைவ் தேர்வைத் தவிர்க்க முடிவு செய்துள்ளீர்கள்\n" -"மற்றும் {} (சோதனை) இல் ஏற்றப்பட்ட எந்த இயக்கி அமைப்பையும் பயன்படுத்தும்\n" -"எச்சரிக்கை: இந்த அமைப்பின் பொருத்தத்தை Archinstall சரிபார்க்காது\n" -"நீங்கள் தொடர விரும்புகிறீர்களா?" - -msgid "Re-using partition instance: {}" -msgstr "பகிர்வு நிகழ்வை மீண்டும் பயன்படுத்துதல்: {}" - -msgid "Create a new partition" -msgstr "புதிய பகிர்வை உருவாக்கவும்" - -msgid "Delete a partition" -msgstr "ஒரு பகிர்வை நீக்கவும்" - -msgid "Clear/Delete all partitions" -msgstr "அழிக்கவும்/நீக்கவும் அனைத்து பகிர்வுகளை" - -msgid "Assign mount-point for a partition" -msgstr "ஒரு பகிர்வுக்கு ஏற்ற-புள்ளியை ஒதுக்கவும்" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "குறி/குறிநீக்கு வடிவமைக்கப்பட வேண்டிய பகிர்வை (தரவை அழிக்கிறது)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "குறி/குறி நீக்கு ஒரு பகிர்வு மறைகுறியாக்கப்பட்டது" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "குறி/குறிநீக்கு ஒரு பகிர்வை துவக்கக்கூடியதாக(/boot க்கு தானியங்கு)" - -msgid "Set desired filesystem for a partition" -msgstr "ஒரு பகிர்வுக்கு தேவையான கோப்பு முறைமையை அமைக்கவும்" - -msgid "Abort" -msgstr "கைவிடு" - -msgid "Hostname" -msgstr "ஹோஸ்ட் பெயர்" - -msgid "Not configured, unavailable unless setup manually" -msgstr "உள்ளமைக்கப்படவில்லை, கைமுறையாக அமைக்கும் வரை கிடைக்காது" - -msgid "Timezone" -msgstr "நேரம் மண்டலம்" - -msgid "Set/Modify the below options" -msgstr "கீழே உள்ள விருப்பங்களை அமைக்கவும்/மாற்றவும்" - -msgid "Install" -msgstr "நிறுவு" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"தவிர்க்க ESC ஐப் பயன்படுத்தவும்\n" -"\n" - -msgid "Suggest partition layout" -msgstr "பகிர்வு தளவமைப்பை பரிந்துரைக்கவும்" - -msgid "Enter a password: " -msgstr "கடவுச்சொல்லை உள்ளிடவும்: " - -msgid "Enter a encryption password for {}" -msgstr "{} க்கான என்க்ரிப்ஷன் கடவுச்சொல்லை உள்ளிடவும்" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "வட்டு குறியாக்க கடவுச்சொல்லை உள்ளிடவும் (குறியாக்கம் இல்லாமல் இருப்பதற்கு காலியாக விடவும்): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "சூடோ சலுகைகளுடன் தேவையான சூப்பர் பயனரை உருவாக்கவும்: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "ரூட் கடவுச்சொல்லை உள்ளிடவும் (ரூட்டை முடக்க காலியாக விடவும்): " - -msgid "Password for user \"{}\": " -msgstr "\"{}\" பயனருக்கான கடவுச்சொல்: " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "கூடுதல் தொகுப்புகள் உள்ளனவா என்று சரிபார்க்கிறது (இதற்கு சில வினாடிகள் ஆகலாம்)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "இயல்புநிலை நேர சேவையகங்களுடன் தானியங்கி நேர ஒத்திசைவை (NTP) பயன்படுத்த விரும்புகிறீர்களா?\n" - -msgid "" -"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" -"For more information, please check the Arch wiki" -msgstr "" -"NTP வேலை செய்ய வன்பொருள் நேரம் மற்றும் பிற பிந்தைய கட்டமைப்பு படிகள் தேவைப்படலாம்.\n" -"மேலும் தகவலுக்கு, ஆர்ச் விக்கியைப் பார்க்கவும்" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "கூடுதல் பயனரை உருவாக்க பயனர்பெயரை உள்ளிடவும் (தவிர்க்க காலியாக விடவும்): " - -msgid "Use ESC to skip\n" -msgstr "தவிர்க்க ESC ஐப் பயன்படுத்தவும்\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -"பட்டியலிலிருந்து ஒரு பொருளைத் தேர்வுசெய்து, அதைச் செயல்படுத்த கிடைக்கக்கூடிய செயல்களில் ஒன்றைத் தேர்ந்தெடுக்கவும்" - -msgid "Cancel" -msgstr "ரத்து செய்" - -msgid "Confirm and exit" -msgstr "உறுதி செய்து வெளியேறவும்" - -msgid "Add" -msgstr "சேர்" - -msgid "Copy" -msgstr "நகல்" - -msgid "Edit" -msgstr "தொகு" - -msgid "Delete" -msgstr "அழி" - -msgid "Select an action for '{}'" -msgstr "'{}' க்கான செயலைத் தேர்ந்தெடுக்கவும்" - -msgid "Copy to new key:" -msgstr "புதிய விசைக்கு நகலெடு:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "அறியப்படாத nic வகை: {}. சாத்தியமான மதிப்புகள் {} ஆகும்" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"இது நீங்கள் தேர்ந்தெடுத்த கட்டமைப்பு:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "பேக்மேன் ஏற்கனவே இயங்கி வருகிறது, அது முடிவடைவதற்கு அதிகபட்சம் 10 நிமிடங்கள் காத்திருக்கிறது." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "முன்பே இருக்கும் பேக்மேன் பூட்டு ஒருபோதும் வெளியேறவில்லை. archinstall ஐப் பயன்படுத்துவதற்கு முன், ஏற்கனவே உள்ள பேக்மேன் அமர்வுகளை சுத்தம் செய்யவும்." - -msgid "Choose which optional additional repositories to enable" -msgstr "எந்த விருப்ப கூடுதல் களஞ்சியங்களை இயக்க வேண்டும் என்பதை தேர்வு செய்யவும்" - -msgid "Add a user" -msgstr "ஒரு பயனரைச் சேர்க்கவும்" - -msgid "Change password" -msgstr "கடவுச்சொல்லை மாற்று" - -msgid "Promote/Demote user" -msgstr "பயனரை உயர்த்து/பதவி இறக்கு" - -msgid "Delete User" -msgstr "பயனரை நீக்கு" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"புதிய பயனரை வரையறுக்கவும்\n" - -msgid "User Name : " -msgstr "பயனர் பெயர்: " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "{} ஒரு சூப்பர் யூசராக (sudoer) இருக்க வேண்டுமா?" - -msgid "Define users with sudo privilege: " -msgstr "சூடோ சிறப்புரிமை கொண்ட பயனர்களை வரையறுக்கவும்: " - -msgid "No network configuration" -msgstr "பிணைய கட்டமைப்பு இல்லை" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "ஒரு btrfs பகிர்வில் விரும்பிய துணை தொகுதிகளை அமைக்கவும்" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"எந்த பகிர்வில் துணைத்தொகுதிகளை அமைக்க வேண்டும் என்பதைத் தேர்ந்தெடுக்கவும்" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "தற்போதைய பகிர்வுக்கு btrfs துணை தொகுதிகளை நிர்வகிக்கவும்" - -msgid "No configuration" -msgstr "கட்டமைப்பு இல்லை" - -msgid "Save user configuration" -msgstr "பயனர் உள்ளமைவைச் சேமிக்கவும்" - -msgid "Save user credentials" -msgstr "பயனர் நற்சான்றிதழ்களைச் சேமிக்கவும்" - -msgid "Save disk layout" -msgstr "வட்டு அமைப்பைச் சேமிக்கவும்" - -msgid "Save all" -msgstr "அனைத்தையும் சேமிக்கவும்" - -msgid "Choose which configuration to save" -msgstr "எந்த அமைப்பைச் சேமிக்க வேண்டும் என்பதைத் தேர்ந்தெடுக்கவும்" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "உள்ளமைவு(களை) சேமிக்க ஒரு கோப்பகத்தை உள்ளிடவும்: " - -msgid "Not a valid directory: {}" -msgstr "சரியான கோப்பகம் இல்லை: {}" - -msgid "The password you are using seems to be weak," -msgstr "நீங்கள் பயன்படுத்தும் கடவுச்சொல் பலவீனமாக உள்ளது," - -msgid "are you sure you want to use it?" -msgstr "நீங்கள் நிச்சயமாக அதைப் பயன்படுத்த விரும்புகிறீர்களா?" - -msgid "Optional repositories" -msgstr "விருப்ப களஞ்சியங்கள்" - -msgid "Save configuration" -msgstr "உள்ளமைவைச் சேமிக்கவும்" - -msgid "Missing configurations:\n" -msgstr "விடுபட்ட கட்டமைப்புகள்:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "ரூட்-கடவுச்சொல் அல்லது குறைந்தபட்சம் 1 சூப்பர் யூசர் குறிப்பிடப்பட வேண்டும்" - -msgid "Manage superuser accounts: " -msgstr "சூப்பர் யூசர் கணக்குகளை நிர்வகிக்கவும்: " - -msgid "Manage ordinary user accounts: " -msgstr "சாதாரண பயனர் கணக்குகளை நிர்வகிக்கவும்: " - -msgid " Subvolume :{:16}" -msgstr " துணைத் தொகுதி :{:16}" - -msgid " mounted at {:16}" -msgstr " {:16} இல் ஏற்றப்பட்டது" - -msgid " with option {}" -msgstr " விருப்பம் உடன் {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -"புதிய துணைத்தொகுதிக்கு தேவையான மதிப்புகளை நிரப்பவும்\n" - -msgid "Subvolume name " -msgstr "துணைத்தொகுதி பெயர் " - -msgid "Subvolume mountpoint" -msgstr "துணை தொகுதி மவுண்ட்பாயிண்ட்" - -msgid "Subvolume options" -msgstr "துணை தொகுதி விருப்பங்கள்" - -msgid "Save" -msgstr "சேமிக்கவும்" - -msgid "Subvolume name :" -msgstr "துணைத்தொகுதி பெயர்:" - -msgid "Select a mount point :" -msgstr "மவுண்ட் பாயிண்ட்டைத் தேர்ந்தெடுக்கவும்:" - -msgid "Select the desired subvolume options " -msgstr "தேவையான துணை தொகுதி விருப்பங்களைத் தேர்ந்தெடுக்கவும் " - -msgid "Define users with sudo privilege, by username: " -msgstr "சூடோ சிறப்புரிமை கொண்ட பயனர்களை, பயனர் பெயரால் வரையறுக்கவும்: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] ஒரு பதிவு கோப்பு இங்கே உருவாக்கப்பட்டது: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "இயல்புநிலை கட்டமைப்புடன் BTRFS துணைத்தொகுதிகளைப் பயன்படுத்த விரும்புகிறீர்களா?" - -msgid "Would you like to use BTRFS compression?" -msgstr "BTRFS சுருக்கத்தைப் பயன்படுத்த விரும்புகிறீர்களா?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "/home க்கு தனி பகிர்வை உருவாக்க விரும்புகிறீர்களா?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "தேர்ந்தெடுக்கப்பட்ட டிரைவ்களில் தானியங்கி பரிந்துரைக்குத் தேவையான குறைந்தபட்ச திறன் இல்லை\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "/home பகிர்வுக்கான குறைந்த பட்ச கொள்ளளவு: {}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "ஆர்ச் லினக்ஸ் பகிர்வுக்கான குறைந்தபட்ச கொள்ளளவு: {}GB" - -msgid "Continue" -msgstr "தொடரவும்" - -msgid "yes" -msgstr "ஆமாம்" - -msgid "no" -msgstr "இல்லை" - -msgid "set: {}" -msgstr "அமை: {}" - -msgid "Manual configuration setting must be a list" -msgstr "கைமுறை உள்ளமைவு அமைப்பு கண்டிப்பாக ஒரு பட்டியலாக இருக்க வேண்டும்" - -msgid "No iface specified for manual configuration" -msgstr "கைமுறை உள்ளமைவுக்கு iface எதுவும் குறிப்பிடப்படவில்லை" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "தானியங்கு DHCP இல்லாத கைமுறையான nic கட்டமைப்பிற்கு IP முகவரி தேவை" - -msgid "Add interface" -msgstr "இடைமுகத்தைச் சேர்க்கவும்" - -msgid "Edit interface" -msgstr "இடைமுகத்தை திருத்தவும்" - -msgid "Delete interface" -msgstr "இடைமுகத்தை நீக்கு" - -msgid "Select interface to add" -msgstr "சேர்க்க இடைமுகத்தைத் தேர்ந்தெடுக்கவும்" - -msgid "Manual configuration" -msgstr "கைமுறை கட்டமைப்பு" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "ஒரு பகிர்வை சுருக்கப்பட்டதாகக் குறிக்கவும்/குறி நீக்கவும் (btrfs மட்டும்)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "நீங்கள் பயன்படுத்தும் கடவுச்சொல் பலவீனமாக இருப்பதாகத் தெரிகிறது, நிச்சயமாக அதைப் பயன்படுத்த விரும்புகிறீர்களா?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "டெஸ்க்டாப் சூழல்கள் மற்றும் டைலிங் சாளர மேலாளர்களின் தேர்வை வழங்குகிறது, எ.கா. gnome, kde, sway" - -msgid "Select your desired desktop environment" -msgstr "நீங்கள் விரும்பும் டெஸ்க்டாப் சூழலைத் தேர்ந்தெடுக்கவும்" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "ஆர்ச் லினக்ஸை நீங்கள் பொருத்தமாகத் தனிப்பயனாக்க அனுமதிக்கும் மிக அடிப்படையான நிறுவல்." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "நிறுவவும் இயக்கவும் பல்வேறு சர்வர் தொகுப்புகளின் தேர்வை வழங்குகிறது, எ.கா. httpd, nginx, mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "எந்த சேவையகங்களை நிறுவ வேண்டும் என்பதைத் தேர்வுசெய்யவும், எதுவும் இல்லை என்றால், குறைந்தபட்ச நிறுவல் செய்யப்படும்" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "குறைந்தபட்ச அமைப்பு மற்றும் xorg மற்றும் கிராபிக்ஸ் இயக்கிகளை நிறுவுகிறது." - -msgid "Press Enter to continue." -msgstr "தொடர Enter ஐ அழுத்தவும்." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "புதிதாக உருவாக்கப்பட்ட நிறுவலில் chroot செய்து, நிறுவலுக்குப் பிந்தைய உள்ளமைவைச் செய்ய விரும்புகிறீர்களா?" - -msgid "Are you sure you want to reset this setting?" -msgstr "இஇந்த அமைப்பை நிச்சயமாக மீட்டமைக்க வேண்டுமா?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "பயன்படுத்த மற்றும் கட்டமைக்க ஒன்று அல்லது அதற்கு மேற்பட்ட ஹார்டு டிரைவ்களைத் தேர்ந்தெடுக்கவும்\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "ஏற்கனவே உள்ள அமைப்பில் ஏதேனும் மாற்றங்கள் செய்தால் வட்டு தளவமைப்பை மீட்டமைக்கும்!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "நீங்கள் ஹார்ட் டிரைவ் தேர்வை மீட்டமைத்தால், இது தற்போதைய வட்டு அமைப்பையும் மீட்டமைக்கும். நீங்கள் உறுதியாக இருக்கிறீர்களா?" - -msgid "Save and exit" -msgstr "சேமித்து விட்டு வெளியேறவும்" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"வரிசைப்படுத்தப்பட்ட பகிர்வுகளைக் கொண்டுள்ளது, இது அவற்றை அகற்றும், நீங்கள் உறுதியாக இருக்கிறீர்களா?" - -msgid "No audio server" -msgstr "ஆடியோ சர்வர் இல்லை" - -msgid "(default)" -msgstr "(இயல்புநிலை)" - -msgid "Use ESC to skip" -msgstr "தவிர்க்க ESC ஐப் பயன்படுத்தவும்" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"தற்போதைய தேர்வை மீட்டமைக்க CTRL+C ஐப் பயன்படுத்தவும்\n" -"\n" - -msgid "Copy to: " -msgstr "இதற்கு நகலெடுக்கவும்: " - -msgid "Edit: " -msgstr "தொகு: " - -msgid "Key: " -msgstr "சாவி: " - -msgid "Edit {}: " -msgstr "தொகு {}: " - -msgid "Add: " -msgstr "சேர்: " - -msgid "Value: " -msgstr "மதிப்பு: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "நீங்கள் ஒரு இயக்கி மற்றும் பகிர்வைத் தேர்ந்தெடுப்பதைத் தவிர்க்கலாம் மற்றும் /mnt (பரிசோதனை) இல் ஏற்றப்பட்ட எந்த இயக்கி அமைப்பையும் பயன்படுத்தலாம்" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "வட்டுகளில் ஒன்றைத் தேர்ந்தெடுக்கவும் அல்லது தவிர்க்கவும் மற்றும் /mnt ஐ இயல்புநிலையாகப் பயன்படுத்தவும்" - -msgid "Select which partitions to mark for formatting:" -msgstr "வடிவமைப்பிற்காக எந்தப் பகிர்வுகளைக் குறிக்க வேண்டும் என்பதைத் தேர்ந்தெடுக்கவும்:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "மறைகுறியாக்கப்பட்ட இயக்ககத்தைத் திறக்க HSM ஐப் பயன்படுத்தவும்" - -msgid "Device" -msgstr "சாதனம்" - -msgid "Size" -msgstr "அளவு" - -msgid "Free space" -msgstr "பயன்படுத்தாத இடம்" - -msgid "Bus-type" -msgstr "பேருந்து-வகை" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "ரூட்-கடவுச்சொல் அல்லது குறைந்தபட்சம் 1 பயனர் சூடோ சிறப்புரிமைகளைக் குறிப்பிட வேண்டும்" - -msgid "Enter username (leave blank to skip): " -msgstr "பயனர்பெயரை உள்ளிடவும் (தவிர்க்க காலியாக விடவும்): " - -msgid "The username you entered is invalid. Try again" -msgstr "நீங்கள் உள்ளிட்ட பயனர்பெயர் தவறானது. மீண்டும் முயற்சிக்கவும்" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "\"{}\" ஒரு சூப்பர் யூசராக (sudo) இருக்க வேண்டுமா?" - -msgid "Select which partitions to encrypt" -msgstr "குறியாக்கம் செய்ய வேண்டிய பகிர்வுகளைத் தேர்ந்தெடுக்கவும்" - -msgid "very weak" -msgstr "மிகவும் பலவீனமானது" - -msgid "weak" -msgstr "பலவீனமான" - -msgid "moderate" -msgstr "மிதமான" - -msgid "strong" -msgstr "வலுவான" - -msgid "Add subvolume" -msgstr "துணைத்தொகுதியைச் சேர்க்கவும்" - -msgid "Edit subvolume" -msgstr "துணைத்தொகுதியைத் திருத்தவும்" - -msgid "Delete subvolume" -msgstr "துணைத்தொகுதியை நீக்கவும்" - -msgid "Configured {} interfaces" -msgstr "கட்டமைக்கப்பட்ட {} இடைமுகங்கள்" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "இந்த விருப்பம் நிறுவலின் போது நிகழக்கூடிய இணையான பதிவிறக்கங்களின் எண்ணிக்கையை செயல்படுத்துகிறது" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"இயக்கப்பட வேண்டிய இணையான பதிவிறக்கங்களின் எண்ணிக்கையை உள்ளிடவும்.\n" -" (1 முதல் {} வரையிலான மதிப்பை உள்ளிடவும்)\n" -"குறிப்பு:" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - அதிகபட்ச மதிப்பு : {} ( {} இணையான பதிவிறக்கங்களை அனுமதிக்கிறது, ஒரே நேரத்தில் {} பதிவிறக்கங்களை அனுமதிக்கிறது )" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - குறைந்தபட்ச மதிப்பு : 1 (1 இணை பதிவிறக்கத்தை அனுமதிக்கிறது, ஒரு நேரத்தில் 2 பதிவிறக்கங்களை அனுமதிக்கிறது )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - முடக்கு/இயல்புநிலை: 0 (இணை பதிவிறக்கத்தை முடக்குகிறது, ஒரு நேரத்தில் 1 பதிவிறக்கத்தை மட்டுமே அனுமதிக்கிறது )" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "தவறான உள்ளீடு! சரியான உள்ளீட்டில் [1 முதல் {max_downloads} வரை அல்லது முடக்க 0 வரை] மீண்டும் முயற்சிக்கவும்" - -msgid "Parallel Downloads" -msgstr "இணையான பதிவிறக்கங்கள்" - -msgid "ESC to skip" -msgstr "தவிர்க்க ESC" - -msgid "CTRL+C to reset" -msgstr "மீட்டமைக்க CTRL+C" - -msgid "TAB to select" -msgstr "தேர்ந்தெடுக்க TAB" - -msgid "[Default value: 0] > " -msgstr "[இயல்புநிலை மதிப்பு: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "இந்த மொழிபெயர்ப்பைப் பயன்படுத்த, மொழியை ஆதரிக்கும் எழுத்துருவை கைமுறையாக நிறுவவும்." - -msgid "The font should be stored as {}" -msgstr "எழுத்துரு {} ஆக சேமிக்கப்பட வேண்டும்" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "Archinstall ஐ இயக்க ரூட் சிறப்புரிமைகள் தேவை. மேலும் பார்க்க --help." - -msgid "Select an execution mode" -msgstr "செயல்படுத்தும் பயன்முறையைத் தேர்ந்தெடுக்கவும்" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "குறிப்பிட்ட url இலிருந்து சுயவிவரத்தைப் பெற முடியவில்லை: {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "சுயவிவரங்கள் தனிப்பட்ட பெயரைக் கொண்டிருக்க வேண்டும், ஆனால் நகல் பெயருடன் சுயவிவர வரையறைகள் காணப்படுகின்றன: {}" - -msgid "Select one or more devices to use and configure" -msgstr "பயன்படுத்த மற்றும் கட்டமைக்க ஒன்று அல்லது அதற்கு மேற்பட்ட சாதனங்களைத் தேர்ந்தெடுக்கவும்" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "சாதனத் தேர்வை மீட்டமைத்தால், இது தற்போதைய வட்டு அமைப்பையும் மீட்டமைக்கும். நீங்கள் உறுதியாக இருக்கிறீர்களா?" - -msgid "Existing Partitions" -msgstr "ஏற்கனவே உள்ள பகிர்வுகள்" - -msgid "Select a partitioning option" -msgstr "பகிர்வு விருப்பத்தைத் தேர்ந்தெடுக்கவும்" - -msgid "Enter the root directory of the mounted devices: " -msgstr "ஏற்றப்பட்ட சாதனங்களின் ரூட் கோப்பகத்தை உள்ளிடவும்: " - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "" -"/home பகிர்வுக்கான குறைந்தபட்ச கொள்ளளவு: {}GiB\n" -"\n" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "ஆர்ச் லினக்ஸ் பகிர்வுக்கான குறைந்தபட்ச கொள்ளளவு: {}GiB" - -msgid "This is a list of pre-programmed profiles_bck, they might make it easier to install things like desktop environments" -msgstr "இது முன்-திட்டமிடப்பட்ட profiles_bck இன் பட்டியல், அவை டெஸ்க்டாப் சூழல்கள் போன்றவற்றை நிறுவுவதை எளிதாக்கலாம்" - -msgid "Current profile selection" -msgstr "தற்போதைய சுயவிவரத் தேர்வு" - -msgid "Remove all newly added partitions" -msgstr "புதிதாக சேர்க்கப்பட்ட அனைத்து பகிர்வுகளையும் அகற்றவும்" - -msgid "Assign mountpoint" -msgstr "பகிர்வுக்கு ஏற்ற-புள்ளியை ஒதுக்கவும்" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "வடிவமைக்கப்பட வேண்டியவையை குறி/குறிநீக்கு (தரவை அழிக்கிறது)" - -msgid "Mark/Unmark as bootable" -msgstr "துவக்கக்கூடியதாகக் குறி/குறிநீக்கு" - -msgid "Change filesystem" -msgstr "கோப்பு முறைமையை மாற்றவும்" - -msgid "Mark/Unmark as compressed" -msgstr "சுருக்கப்பட்டதாகக் குறி/குறிநீக்கு" - -msgid "Set subvolumes" -msgstr "துணைத் தொகுதிகளை அமைக்கவும்" - -msgid "Delete partition" -msgstr "பகிர்வை நீக்கு" - -msgid "Partition" -msgstr "பகிர்வு" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "இந்த பகிர்வு தற்போது குறியாக்கம் செய்யப்பட்டுள்ளது, அதை வடிவமைக்க ஒரு கோப்பு முறைமை குறிப்பிடப்பட வேண்டும்" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "பகிர்வு மவுண்ட்-பாயிண்ட்கள் நிறுவலின் உள்ளே தொடர்புடையவை, துவக்கம் /boot எடுத்துக்காட்டாக இருக்கும்." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "மவுண்ட்பாயிண்ட் /boot அமைக்கப்பட்டால், பகிர்வு துவக்கக்கூடியதாகக் குறிக்கப்படும்." - -msgid "Mountpoint: " -msgstr "மவுண்ட்பாயிண்ட்: " - -msgid "Current free sectors on device {}:" -msgstr "{} சாதனத்தில் தற்போதைய இலவசப் பிரிவுகள்:" - -msgid "Total sectors: {}" -msgstr "மொத்த பிரிவுகள்: {}" - -msgid "Enter the start sector (default: {}): " -msgstr "தொடக்கப் பிரிவை உள்ளிடவும் (இயல்புநிலை: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "பகிர்வின் இறுதிப் பகுதியை உள்ளிடவும் (சதவீதம் அல்லது தொகுதி எண், இயல்புநிலை: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "இது புதிதாக சேர்க்கப்பட்ட அனைத்து பகிர்வுகளையும் அகற்றும், தொடரவா?" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "பகிர்வு மேலாண்மை: {}" - -#, python-brace-format -msgid "Total length: {}" -msgstr "முழு நீளம்: {}" - -msgid "Encryption type" -msgstr "குறியாக்க வகை" - -msgid "Iteration time" -msgstr "" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "" - -msgid "Higher values increase security but slow down boot time" -msgstr "" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "" - -msgid "Iteration time cannot be empty" -msgstr "" - -msgid "Iteration time must be at least 100ms" -msgstr "" - -msgid "Iteration time must be at most 120000ms" -msgstr "" - -msgid "Please enter a valid number" -msgstr "" - -msgid "Partitions" -msgstr "பகிர்வுகள்" - -msgid "No HSM devices available" -msgstr "HSM சாதனங்கள் எதுவும் இல்லை" - -msgid "Partitions to be encrypted" -msgstr "குறியாக்கம் செய்யப்பட வேண்டிய பகிர்வுகள்" - -msgid "Select disk encryption option" -msgstr "வட்டு குறியாக்க விருப்பத்தைத் தேர்ந்தெடுக்கவும்" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "HSM க்கு பயன்படுத்த FIDO2 சாதனத்தைத் தேர்ந்தெடுக்கவும்" - -msgid "Use a best-effort default partition layout" -msgstr "சிறந்த முயற்சி இயல்புநிலை பகிர்வு தளவமைப்பைப் பயன்படுத்தவும்" - -msgid "Manual Partitioning" -msgstr "கைமுறை பகிர்வு" - -msgid "Pre-mounted configuration" -msgstr "முன்-ஏற்றப்பட்ட கட்டமைப்பு" - -msgid "Unknown" -msgstr "தெரியவில்லை/தெரியாதது" - -msgid "Partition encryption" -msgstr "பகிர்வு குறியாக்கம்" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr " ! வடிவமைத்தல் {} உள்ள " - -msgid "← Back" -msgstr "← பின்" - -msgid "Disk encryption" -msgstr "வட்டு குறியாக்கம்" - -msgid "Configuration" -msgstr "கட்டமைப்பு" - -msgid "Password" -msgstr "கடவுச்சொல்" - -msgid "All settings will be reset, are you sure?" -msgstr "எல்லா அமைப்புகளும் மீட்டமைக்கப்படும், உறுதியாக இருக்கிறீர்களா?" - -msgid "Back" -msgstr "திரும்பவும்" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "தேர்ந்தெடுக்கப்பட்ட சுயவிவரங்களுக்கு எந்த வாழ்த்துரை நிறுவ வேண்டும் என்பதைத் தேர்வுசெய்யவும்: {}" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "சுற்றுச்சூழல் வகை: {}" - -msgid "The proprietary Nvidia driver is not supported by Sway. It is likely that you will run into issues, are you okay with that?" -msgstr "தனியுரிம Nvidia இயக்கி ஸ்வே ஆல் ஆதரிக்கப்படவில்லை. நீங்கள் சிக்கலில் சிக்க வாய்ப்புள்ளது, உனக்கு அது சரியா?" - -msgid "Installed packages" -msgstr "நிறுவப்பட்ட தொகுப்புகள்" - -msgid "Add profile" -msgstr "சுயவிவரத்தைச் சேர்க்கவும்" - -msgid "Edit profile" -msgstr "சுயவிவரத்தைத் திருத்தவும்" - -msgid "Delete profile" -msgstr "சுயவிவரத்தை நீக்கு" - -msgid "Profile name: " -msgstr "சுயவிவரப் பெயர்: " - -msgid "The profile name you entered is already in use. Try again" -msgstr "நீங்கள் உள்ளிட்ட சுயவிவரப் பெயர் ஏற்கனவே பயன்பாட்டில் உள்ளது. மீண்டும் முயற்சிக்கவும்" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "இந்த சுயவிவரத்துடன் நிறுவப்பட வேண்டிய தொகுப்புகள் (இடம் பிரிக்கப்பட்டது, தவிர்க்க காலியாக விடவும்): " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "இந்தச் சுயவிவரத்துடன் இயக்கப்பட வேண்டிய சேவைகள் (இடம் பிரிக்கப்பட்டது, தவிர்க்க காலியாக விடவும்): " - -msgid "Should this profile be enabled for installation?" -msgstr "நிறுவலுக்கு இந்த சுயவிவரம் இயக்கப்பட வேண்டுமா?" - -msgid "Create your own" -msgstr "சொந்தமாக உருவாக்கவும்" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"அனைத்து திறந்த மூல இயக்கிகளையும் நிறுவ வரைகலை இயக்கிகளை தேர்ந்தெடுக்கவும் அல்லது காலியாக விடவும்" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "ஸ்வேக்கு உங்கள் இருக்கைக்கான அணுகல் தேவை (வன்பொருள் சாதனங்களின் சேகரிப்பு அதாவது விசைப்பலகை, சுட்டி போன்றவை)" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"உங்கள் வன்பொருளுக்கான அணுகலை வழங்குவதற்கான விருப்பத்தைத் தேர்வுசெய்யவும்" - -msgid "Graphics driver" -msgstr "வரைகலை இயக்கி" - -msgid "Greeter" -msgstr "வாழ்த்துபவர்" - -msgid "Please chose which greeter to install" -msgstr "எந்த வாழ்த்துரை நிறுவ வேண்டும் என்பதைத் தேர்வுசெய்யவும்" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "இது முன்-திட்டமிடப்பட்ட default_profiles பட்டியல்" - -msgid "Disk configuration" -msgstr "வட்டு கட்டமைப்பு" - -msgid "Profiles" -msgstr "சுயவிவரங்கள்" - -msgid "Finding possible directories to save configuration files ..." -msgstr "உள்ளமைவு கோப்புகளைச் சேமிக்க சாத்தியமான கோப்பகங்களைக் கண்டறிதல் ..." - -msgid "Select directory (or directories) for saving configuration files" -msgstr "உள்ளமைவு கோப்புகளை சேமிக்க கோப்பகத்தை (அல்லது கோப்பகங்களை) தேர்ந்தெடுக்கவும்" - -msgid "Add a custom mirror" -msgstr "தனிப்பயன் கண்ணாடியைச் சேர்க்கவும்" - -msgid "Change custom mirror" -msgstr "தனிப்பயன் கண்ணாடியை மாற்றவும்" - -msgid "Delete custom mirror" -msgstr "தனிப்பயன் கண்ணாடியை நீக்கு" - -msgid "Enter name (leave blank to skip): " -msgstr "பெயரை உள்ளிடவும் (தவிர்க்க காலியாக விடவும்): " - -msgid "Enter url (leave blank to skip): " -msgstr "URL ஐ உள்ளிடவும் (தவிர்க்க காலியாக விடவும்): " - -msgid "Select signature check option" -msgstr "கையொப்ப சரிபார்ப்பு விருப்பத்தைத் தேர்ந்தெடுக்கவும்" - -msgid "Select signature option" -msgstr "கையெழுத்து விருப்பத்தைத் தேர்ந்தெடுக்கவும்" - -msgid "Custom mirrors" -msgstr "தனிப்பயன் கண்ணாடிகள்" - -msgid "Defined" -msgstr "வரையறுக்கப்பட்டது" - -msgid "Save user configuration (including disk layout)" -msgstr "பயனர் உள்ளமைவைச் சேமிக்கவும் (வட்டு தளவமைப்பு உட்பட)" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"உள்ளமைவு(களை) சேமிக்கப்படுவதற்கான கோப்பகத்தை உள்ளிடவும் (தாவல் நிறைவு இயக்கப்பட்டது)\n" -"கோப்பகத்தை சேமி: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"பின்வரும் இடத்தில் {} உள்ளமைவுக் கோப்பை(களை) சேமிக்க விரும்புகிறீர்களா?\n" -"\n" -"{}" - -msgid "Saving {} configuration files to {}" -msgstr "{} உள்ளமைவு கோப்புகளை {} இல் சேமிக்கிறது" - -msgid "Mirrors" -msgstr "கண்ணாடிகள்" - -msgid "Mirror regions" -msgstr "கண்ணாடிப் பகுதிகள்" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - அதிகபட்ச மதிப்பு : {} ( {} இணையான பதிவிறக்கங்களை அனுமதிக்கிறது, ஒரே நேரத்தில் {max_downloads+1} பதிவிறக்கங்களை அனுமதிக்கிறது )" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "தவறான உள்ளீடு! சரியான உள்ளீட்டில் [1 முதல் {} வரை அல்லது முடக்க 0 வரை] மீண்டும் முயற்சிக்கவும்" - -msgid "Locales" -msgstr "மொழி குறியீடுகள்" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "NetworkManager ஐப் பயன்படுத்தவும் (GNOME மற்றும் KDE இல் இணையத்தை வரைகலை முறையில் கட்டமைக்க அவசியம்)" - -msgid "Total: {} / {}" -msgstr "மொத்தம்: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "உள்ளிடப்பட்ட அனைத்து மதிப்புகளையும் ஒரு அலகுடன் பின்னொட்டு இடலாம்: B, KB, KiB, MB, MiB..." - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "அலகு வழங்கப்படவில்லை எனில், மதிப்பு பிரிவுகளாக விளக்கப்படும்" - -msgid "Enter start (default: sector {}): " -msgstr "தொடக்கத்தை உள்ளிடவும் (இயல்பு: sector {}): " - -msgid "Enter end (default: {}): " -msgstr "முடிவை உள்ளிடவும் (இயல்பு: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "தீர்மானிக்க முடியவில்லை fido2 சாதனங்களை. libfido2 நிறுவப்பட்டுள்ளதா?" - -msgid "Path" -msgstr "பாதை" - -msgid "Manufacturer" -msgstr "உற்பத்தியாளர்" - -msgid "Product" -msgstr "தயாரிப்பு" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "தவறான கட்டமைப்பு: {error}" - -msgid "Type" -msgstr "வகை" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "தொகுப்பு பதிவிறக்கங்களின் போது ஏற்படும் இணையான பதிவிறக்கங்களின் எண்ணிக்கையை இந்த விருப்பம் செயல்படுத்துகிறது" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"இயக்கப்பட வேண்டிய இணையான பதிவிறக்கங்களின் எண்ணிக்கையை உள்ளிடவும்.\n" -"\n" -"குறிப்பு:\n" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - பரிந்துரைக்கப்பட்ட அதிகபட்ச மதிப்பு: {} (ஒரு நேரத்தில் {} இணையான பதிவிறக்கங்களை அனுமதிக்கிறது)" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - முடக்கு/இயல்புநிலை: 0 (இணை பதிவிறக்கத்தை முடக்குகிறது, ஒரு நேரத்தில் 1 பதிவிறக்கத்தை மட்டுமே அனுமதிக்கிறது)\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "தவறான உள்ளீடு! சரியான உள்ளீட்டுடன் மீண்டும் முயற்சிக்கவும் [அல்லது முடக்க 0]" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Hyprland க்கு உங்கள் இருக்கைக்கான அணுகல் தேவை (வன்பொருள் சாதனங்களின் சேகரிப்பு அதாவது விசைப்பலகை, சுட்டி போன்றவை)" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"உங்கள் வன்பொருளுக்கு Hypland அணுகலை வழங்குவதற்கான விருப்பத்தைத் தேர்வு செய்யவும்" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "உள்ளிடப்பட்ட அனைத்து மதிப்புகளையும் ஒரு அலகுடன் பின்னொட்டு இடலாம்: %, B, KB, KiB, MB, MiB..." - -msgid "Would you like to use unified kernel images?" -msgstr "ஒருங்கிணைந்த கர்னல் படங்களைப் பயன்படுத்த விரும்புகிறீர்களா?" - -msgid "Unified kernel images" -msgstr "ஒருங்கிணைந்த கர்னல் படங்கள்" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "நேர ஒத்திசைவு (timedatectl show) முடிவடைவதற்காகக் காத்திருக்கிறது." - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "நேர ஒத்திசைவு முடிவடையவில்லை, நீங்கள் காத்திருக்கும் போது - தீர்வுக்கான ஆவணங்களைச் சரிபார்க்கவும்: https://archinstall.readthedocs.io/" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "தானியங்கி நேர ஒத்திசைவுக்காக காத்திருப்பதைத் தவிர்த்தல் (நிறுவலின் போது நேரம் ஒத்திசைக்கப்படாவிட்டால் இது சிக்கல்களை ஏற்படுத்தும்)" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "ஆர்ச் லினக்ஸ் கீரிங் ஒத்திசைவு (archlinux-keyring-wkd-sync) முடிவடைவதற்குக் காத்திருக்கிறது." - -msgid "Selected profiles: " -msgstr "தேர்ந்தெடுக்கப்பட்ட சுயவிவரங்கள்: " - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "நேரம் ஒத்திசைவு முடிவடையவில்லை, நீங்கள் காத்திருக்கும் போது - தீர்வுகளுக்கான ஆவணங்களைச் சரிபார்க்கவும்: https://archinstall.readthedocs.io/" - -msgid "Mark/Unmark as nodatacow" -msgstr "nodatacow குறி/குறிநீக்கு" - -msgid "Would you like to use compression or disable CoW?" -msgstr "நீங்கள் சுருக்கத்தைப் பயன்படுத்த விரும்புகிறீர்களா அல்லது CoW ஐ முடக்க விரும்புகிறீர்களா?" - -msgid "Use compression" -msgstr "சுருக்கத்தைப் பயன்படுத்தவும்" - -msgid "Disable Copy-on-Write" -msgstr "எழுத்தில் நகலை (CoW) முடக்கு" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "டெஸ்க்டாப் சூழல்கள் மற்றும் டைலிங் சாளர மேலாளர்களின் தேர்வை வழங்குகிறது, எ.கா. GNOME, KDE Plasma, Sway" - -#, python-brace-format -msgid "Configuration type: {}" -msgstr "உள்ளமைவு வகை: {}" - -msgid "LVM configuration type" -msgstr "LVM கட்டமைப்பு வகை" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "2க்கும் மேற்பட்ட பகிர்வுகளைக் கொண்ட LVM வட்டு குறியாக்கம் தற்போது ஆதரிக்கப்படவில்லை" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "NetworkManager ஐப் பயன்படுத்தவும் (GNOME மற்றும் KDE Plasma இணையத்தை வரைகலை முறையில் கட்டமைக்க அவசியம்)" - -msgid "Select a LVM option" -msgstr "LVM விருப்பத்தைத் தேர்ந்தெடுக்கவும்" - -msgid "Partitioning" -msgstr "பிரித்தல்" - -msgid "Logical Volume Management (LVM)" -msgstr "தருக்க தொகுதி மேலாண்மை (LVM)" - -msgid "Physical volumes" -msgstr "இயற்பியல் தொகுதிகள்" - -msgid "Volumes" -msgstr "தொகுதிகள்" - -msgid "LVM volumes" -msgstr "LVM தொகுதிகள்" - -msgid "LVM volumes to be encrypted" -msgstr "LVM தொகுதிகள் குறியாக்கம் செய்யப்பட வேண்டும்" - -msgid "Select which LVM volumes to encrypt" -msgstr "எந்த LVM தொகுதிகளை குறியாக்கம் செய்ய வேண்டும் என்பதைத் தேர்ந்தெடுக்கவும்" - -msgid "Default layout" -msgstr "இயல்புநிலை தளவமைப்பு" - -msgid "No Encryption" -msgstr "குறியாக்கம் இல்லை" - -msgid "LUKS" -msgstr "LUKS" - -msgid "LVM on LUKS" -msgstr "LUKS இல் LVM" - -msgid "LUKS on LVM" -msgstr "LVM இல் LUKS" - -msgid "Yes" -msgstr "ஆமாம்" - -msgid "No" -msgstr "இல்லை" - -msgid "Archinstall help" -msgstr "Archinstall உதவி" - -msgid " (default)" -msgstr "(இயல்புநிலை)" - -msgid "Press Ctrl+h for help" -msgstr "உதவிக்கு Ctrl+h ஐ அழுத்தவும்" - -#, fuzzy -msgid "Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"உங்கள் வன்பொருளுக்கான அணுகலை வழங்குவதற்கான விருப்பத்தைத் தேர்வுசெய்யவும்" - -msgid "Seat access" -msgstr "" - -#, fuzzy -msgid "Mountpoint" -msgstr "மவுண்ட்பாயிண்ட்: " - -msgid "HSM" -msgstr "" - -#, fuzzy -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "வட்டு குறியாக்க கடவுச்சொல்லை உள்ளிடவும் (குறியாக்கம் இல்லாமல் இருப்பதற்கு காலியாக விடவும்): " - -#, fuzzy -msgid "Disk encryption password" -msgstr "குறியாக்கம் கடவுச்சொல்" - -#, fuzzy -msgid "Partition - New" -msgstr "பகிர்வு" - -#, fuzzy -msgid "Filesystem" -msgstr "கோப்பு முறைமையை மாற்றவும்" - -msgid "Invalid size" -msgstr "" - -#, fuzzy -msgid "Start (default: sector {}): " -msgstr "தொடக்கத்தை உள்ளிடவும் (இயல்பு: sector {}): " - -#, fuzzy -msgid "End (default: {}): " -msgstr "முடிவை உள்ளிடவும் (இயல்பு: {}): " - -#, fuzzy -msgid "Subvolume name" -msgstr "துணைத்தொகுதி பெயர் " - -#, fuzzy -msgid "Disk configuration type" -msgstr "வட்டு கட்டமைப்பு" - -msgid "Root mount directory" -msgstr "" - -#, fuzzy -msgid "Select language" -msgstr "லோகேல் மொழி" - -#, fuzzy -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "நிறுவ கூடுதல் தொகுப்புகளை எழுதவும் (இடம் பிரிக்கப்பட்டது, தவிர்க்க காலியாக விடவும்): " - -msgid "Invalid download number" -msgstr "" - -msgid "Number downloads" -msgstr "" - -#, fuzzy -msgid "The username you entered is invalid" -msgstr "நீங்கள் உள்ளிட்ட பயனர்பெயர் தவறானது. மீண்டும் முயற்சிக்கவும்" - -#, fuzzy -msgid "Username" -msgstr "பயனர் பெயர்: " - -#, fuzzy, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "\"{}\" ஒரு சூப்பர் யூசராக (sudo) இருக்க வேண்டுமா?" - -#, fuzzy -msgid "Interfaces" -msgstr "இடைமுகத்தைச் சேர்க்கவும்" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "" - -msgid "Modes" -msgstr "" - -msgid "IP address" -msgstr "" - -#, fuzzy -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "உங்கள் நுழைவாயில் (திசைவி) IP முகவரியை உள்ளிடவும் அல்லது எதற்கும் காலியாக விடவும்: " - -msgid "Gateway address" -msgstr "" - -#, fuzzy -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "உங்கள் DNS சேவையகங்களை உள்ளிடவும் (இடம் பிரிக்கப்பட்டது, எதற்கும் காலியாக இல்லை): " - -#, fuzzy -msgid "DNS servers" -msgstr "ஆடியோ சர்வர் இல்லை" - -#, fuzzy -msgid "Configure interfaces" -msgstr "கட்டமைக்கப்பட்ட {} இடைமுகங்கள்" - -#, fuzzy -msgid "Kernel" -msgstr "கர்னல்கள்" - -msgid "UEFI is not detected and some options are disabled" -msgstr "" - -msgid "Info" -msgstr "" - -#, fuzzy -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "தனியுரிம Nvidia இயக்கி ஸ்வே ஆல் ஆதரிக்கப்படவில்லை. நீங்கள் சிக்கலில் சிக்க வாய்ப்புள்ளது, உனக்கு அது சரியா?" - -#, fuzzy -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "தனியுரிம Nvidia இயக்கி ஸ்வே ஆல் ஆதரிக்கப்படவில்லை. நீங்கள் சிக்கலில் சிக்க வாய்ப்புள்ளது, உனக்கு அது சரியா?" - -#, fuzzy -msgid "Main profile" -msgstr "சுயவிவரத்தைத் திருத்தவும்" - -#, fuzzy -msgid "Confirm password" -msgstr "கடவுச்சொல்லை மாற்று" - -msgid "The confirmation password did not match, please try again" -msgstr "" - -#, fuzzy -msgid "Not a valid directory" -msgstr "சரியான கோப்பகம் இல்லை: {}" - -#, fuzzy -msgid "Would you like to continue?" -msgstr "BTRFS சுருக்கத்தைப் பயன்படுத்த விரும்புகிறீர்களா?" - -msgid "Directory" -msgstr "" - -#, fuzzy -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "" -"உள்ளமைவு(களை) சேமிக்கப்படுவதற்கான கோப்பகத்தை உள்ளிடவும் (தாவல் நிறைவு இயக்கப்பட்டது)\n" -"கோப்பகத்தை சேமி: " - -#, fuzzy, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "" -"பின்வரும் இடத்தில் {} உள்ளமைவுக் கோப்பை(களை) சேமிக்க விரும்புகிறீர்களா?\n" -"\n" -"{}" - -msgid "Enabled" -msgstr "" - -msgid "Disabled" -msgstr "" - -#, fuzzy -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " இந்த சிக்கல் (மற்றும் கோப்பை) https://github.com/archlinux/archinstall/issues க்கு சமர்ப்பிக்கவும்" - -#, fuzzy -msgid "Mirror name" -msgstr "மிரர் பிராந்தியம்" - -msgid "Url" -msgstr "" - -#, fuzzy -msgid "Select signature check" -msgstr "கையொப்ப சரிபார்ப்பு விருப்பத்தைத் தேர்ந்தெடுக்கவும்" - -#, fuzzy -msgid "Select execution mode" -msgstr "செயல்படுத்தும் பயன்முறையைத் தேர்ந்தெடுக்கவும்" - -#, fuzzy -msgid "Press ? for help" -msgstr "உதவிக்கு Ctrl+h ஐ அழுத்தவும்" - -#, fuzzy -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"உங்கள் வன்பொருளுக்கு Hypland அணுகலை வழங்குவதற்கான விருப்பத்தைத் தேர்வு செய்யவும்" - -#, fuzzy -msgid "Additional repositories" -msgstr "விருப்ப களஞ்சியங்கள்" - -msgid "NTP" -msgstr "" - -msgid "Swap on zram" -msgstr "" - -msgid "Name" -msgstr "" - -#, fuzzy -msgid "Signature check" -msgstr "கையொப்ப சரிபார்ப்பு விருப்பத்தைத் தேர்ந்தெடுக்கவும்" - -#, fuzzy, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "{} சாதனத்தில் தற்போதைய இலவசப் பிரிவுகள்:" - -#, fuzzy, python-brace-format -msgid "Size: {} / {}" -msgstr "மொத்தம்: {} / {}" - -#, fuzzy, python-brace-format -msgid "Size (default: {}): " -msgstr "முடிவை உள்ளிடவும் (இயல்பு: {}): " - -#, fuzzy -msgid "HSM device" -msgstr "சாதனம்" - -msgid "Some packages could not be found in the repository" -msgstr "" - -#, fuzzy -msgid "User" -msgstr "பயனர் பெயர்: " - -msgid "The specified configuration will be applied" -msgstr "" - -msgid "Wipe" -msgstr "" - -#, fuzzy -msgid "Mark/Unmark as XBOOTLDR" -msgstr "துவக்கக்கூடியதாகக் குறி/குறிநீக்கு" - -#, fuzzy -msgid "Loading packages..." -msgstr "கூடுதல் தொகுப்புகள்" - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "" - -#, fuzzy -msgid "Add a custom repository" -msgstr "தனிப்பயன் கண்ணாடியைச் சேர்க்கவும்" - -#, fuzzy -msgid "Change custom repository" -msgstr "தனிப்பயன் கண்ணாடியை மாற்றவும்" - -#, fuzzy -msgid "Delete custom repository" -msgstr "தனிப்பயன் கண்ணாடியை நீக்கு" - -#, fuzzy -msgid "Repository name" -msgstr "மிரர் பிராந்தியம்" - -#, fuzzy -msgid "Add a custom server" -msgstr "தனிப்பயன் கண்ணாடியைச் சேர்க்கவும்" - -#, fuzzy -msgid "Change custom server" -msgstr "தனிப்பயன் கண்ணாடியை மாற்றவும்" - -#, fuzzy -msgid "Delete custom server" -msgstr "தனிப்பயன் கண்ணாடியை நீக்கு" - -msgid "Server url" -msgstr "" - -#, fuzzy -msgid "Select regions" -msgstr "கையெழுத்து விருப்பத்தைத் தேர்ந்தெடுக்கவும்" - -#, fuzzy -msgid "Add custom servers" -msgstr "தனிப்பயன் கண்ணாடியைச் சேர்க்கவும்" - -#, fuzzy -msgid "Add custom repository" -msgstr "தனிப்பயன் கண்ணாடியைச் சேர்க்கவும்" - -#, fuzzy -msgid "Loading mirror regions..." -msgstr "கண்ணாடிப் பகுதிகள்" - -#, fuzzy -msgid "Mirrors and repositories" -msgstr "விருப்ப களஞ்சியங்கள்" - -#, fuzzy -msgid "Selected mirror regions" -msgstr "கண்ணாடிப் பகுதிகள்" - -#, fuzzy -msgid "Custom servers" -msgstr "தனிப்பயன் கண்ணாடிகள்" - -#, fuzzy -msgid "Custom repositories" -msgstr "விருப்ப களஞ்சியங்கள்" - -msgid "Only ASCII characters are supported" -msgstr "" - -msgid "Show help" -msgstr "" - -msgid "Exit help" -msgstr "" - -msgid "Preview scroll up" -msgstr "" - -msgid "Preview scroll down" -msgstr "" - -msgid "Move up" -msgstr "" - -msgid "Move down" -msgstr "" - -msgid "Move right" -msgstr "" - -msgid "Move left" -msgstr "" - -msgid "Jump to entry" -msgstr "" - -msgid "Skip selection (if available)" -msgstr "" - -msgid "Reset selection (if available)" -msgstr "" - -#, fuzzy -msgid "Select on single select" -msgstr "கையொப்ப சரிபார்ப்பு விருப்பத்தைத் தேர்ந்தெடுக்கவும்" - -#, fuzzy -msgid "Select on multi select" -msgstr "நேர மண்டலத்தைத் தேர்ந்தெடுக்கவும்" - -msgid "Reset" -msgstr "" - -#, fuzzy -msgid "Skip selection menu" -msgstr "செயல்படுத்தும் பயன்முறையைத் தேர்ந்தெடுக்கவும்" - -msgid "Start search mode" -msgstr "" - -msgid "Exit search mode" -msgstr "" - -#, fuzzy -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "ஸ்வேக்கு உங்கள் இருக்கைக்கான அணுகல் தேவை (வன்பொருள் சாதனங்களின் சேகரிப்பு அதாவது விசைப்பலகை, சுட்டி போன்றவை)" - -#, fuzzy -msgid "Choose an option to give labwc access to your hardware" -msgstr "" -"\n" -"\n" -"உங்கள் வன்பொருளுக்கான அணுகலை வழங்குவதற்கான விருப்பத்தைத் தேர்வுசெய்யவும்" - -#, fuzzy -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "ஸ்வேக்கு உங்கள் இருக்கைக்கான அணுகல் தேவை (வன்பொருள் சாதனங்களின் சேகரிப்பு அதாவது விசைப்பலகை, சுட்டி போன்றவை)" - -#, fuzzy -msgid "Choose an option to give niri access to your hardware" -msgstr "" -"\n" -"\n" -"உங்கள் வன்பொருளுக்கான அணுகலை வழங்குவதற்கான விருப்பத்தைத் தேர்வுசெய்யவும்" - -#, fuzzy -msgid "Mark/Unmark as ESP" -msgstr "துவக்கக்கூடியதாகக் குறி/குறிநீக்கு" - -msgid "Package group:" -msgstr "" - -#, fuzzy -msgid "Exit archinstall" -msgstr "Archinstall உதவி" - -#, fuzzy -msgid "Reboot system" -msgstr "கோப்பு முறைமையை மாற்றவும்" - -#, fuzzy -msgid "chroot into installation for post-installation configurations" -msgstr "புதிதாக உருவாக்கப்பட்ட நிறுவலில் chroot செய்து, நிறுவலுக்குப் பிந்தைய உள்ளமைவைச் செய்ய விரும்புகிறீர்களா?" - -msgid "Installation completed" -msgstr "" - -#, fuzzy -msgid "What would you like to do next?" -msgstr "BTRFS சுருக்கத்தைப் பயன்படுத்த விரும்புகிறீர்களா?" - -#, fuzzy, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "எந்த பயன்முறையை \"{}\" உள்ளமைக்க வேண்டும் என்பதைத் தேர்ந்தெடுக்கவும் அல்லது இயல்புநிலை பயன்முறை \"{}\" ஐப் பயன்படுத்த தவிர்க்கவும்" - -#, fuzzy -msgid "Incorrect credentials file decryption password" -msgstr "குறியாக்கம் கடவுச்சொல்" - -#, fuzzy -msgid "Incorrect password" -msgstr "ரூட் கடவுச்சொல்" - -#, fuzzy -msgid "Credentials file decryption password" -msgstr "குறியாக்கம் கடவுச்சொல்" - -#, fuzzy -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "" -"பின்வரும் இடத்தில் {} உள்ளமைவுக் கோப்பை(களை) சேமிக்க விரும்புகிறீர்களா?\n" -"\n" -"{}" - -#, fuzzy -msgid "Credentials file encryption password" -msgstr "குறியாக்கம் கடவுச்சொல்" - -#, fuzzy, python-brace-format -msgid "Repositories: {}" -msgstr "மிரர் பிராந்தியம்" - -#, fuzzy -msgid "New version available" -msgstr "HSM சாதனங்கள் எதுவும் இல்லை" - -#, fuzzy -msgid "Passwordless login" -msgstr "கடவுச்சொல்" - -msgid "Second factor login" -msgstr "" - -msgid "Bluetooth" -msgstr "" - -#, fuzzy -msgid "Would you like to configure Bluetooth?" -msgstr "BTRFS சுருக்கத்தைப் பயன்படுத்த விரும்புகிறீர்களா?" - -msgid "Authentication" -msgstr "" - -msgid "Applications" -msgstr "" - -msgid "U2F login method: " -msgstr "" - -msgid "Passwordless sudo: " -msgstr "" - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "" - -msgid "Syncing the system..." -msgstr "" - -msgid "Value cannot be empty" -msgstr "" - -msgid "Snapshot type" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Snapshot type: {}" -msgstr "சுற்றுச்சூழல் வகை: {}" - -msgid "U2F login setup" -msgstr "" - -msgid "No U2F devices found" -msgstr "" - -msgid "U2F Login Method" -msgstr "" - -#, fuzzy -msgid "Enable passwordless sudo?" -msgstr "கடவுச்சொல்லை உள்ளிடவும்: " - -#, fuzzy, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "HSM க்கு பயன்படுத்த FIDO2 சாதனத்தைத் தேர்ந்தெடுக்கவும்" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "" - -msgid "Starting device modifications in " -msgstr "" - -#, fuzzy -msgid "No network connection found" -msgstr "பிணைய கட்டமைப்பு இல்லை" - -#, fuzzy -msgid "Would you like to connect to a Wifi?" -msgstr "BTRFS சுருக்கத்தைப் பயன்படுத்த விரும்புகிறீர்களா?" - -#, fuzzy -msgid "No wifi interface found" -msgstr "கட்டமைக்கப்பட்ட {} இடைமுகங்கள்" - -#, fuzzy -msgid "Select wifi network to connect to" -msgstr "கட்டமைக்க ஒரு பிணைய இடைமுகத்தைத் தேர்ந்தெடுக்கவும்" - -msgid "Scanning wifi networks..." -msgstr "" - -#, fuzzy -msgid "No wifi networks found" -msgstr "பிணைய கட்டமைப்பு இல்லை" - -msgid "Failed setting up wifi" -msgstr "" - -#, fuzzy -msgid "Enter wifi password" -msgstr "கடவுச்சொல்லை உள்ளிடவும்: " - -msgid "Ok" -msgstr "" diff --git a/examples/archinstall/archinstall/locales/tr/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/tr/LC_MESSAGES/base.mo deleted file mode 100644 index e2c4fed..0000000 Binary files a/examples/archinstall/archinstall/locales/tr/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/tr/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/tr/LC_MESSAGES/base.po deleted file mode 100644 index ebbae3f..0000000 --- a/examples/archinstall/archinstall/locales/tr/LC_MESSAGES/base.po +++ /dev/null @@ -1,1824 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: 21.05.2022\n" -"PO-Revision-Date: 2025-06-15 16:12+0300\n" -"Last-Translator: Serdar Sağlam \n" -"Language-Team: Turkish\n" -"Language: tr\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.6\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] Burada bir günlük dosyası oluşturuldu: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Lütfen bu sorunu (ve dosyayı) https://github.com/archlinux/archinstall/issues adresine gönderin" - -msgid "Do you really want to abort?" -msgstr "Gerçekten iptal etmek istiyor musunuz?" - -msgid "And one more time for verification: " -msgstr "Ve doğrulama için bir kez daha: " - -msgid "Would you like to use swap on zram?" -msgstr "Zram üzerinde swap kullanmak ister misiniz?" - -msgid "Desired hostname for the installation: " -msgstr "Kurulum için istenilen ana bilgisayar adı: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "Sudo ayrıcalıklarına sahip gerekli süper kullanıcı için kullanıcı adı: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "Ek olarak kurulacak kullanıcılar var mı (kullanıcı yoksa boş bırakın): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "Bu kullanıcı bir süper kullanıcı (sudoer) olmalı mı?" - -msgid "Select a timezone" -msgstr "Bir zaman dilimi seç" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "Önyükleyici olarak systemd-boot yerine GRUB kullanmak ister misiniz?" - -msgid "Choose a bootloader" -msgstr "Bir ön yükleyici seç" - -msgid "Choose an audio server" -msgstr "Bir ses sunucusu seç" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Yalnızca base, base-devel, linux, linux-firmware, efibootmgr ve isteğe bağlı profil paketleri gibi paketler yüklenir." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "Firefox veya Chromium gibi bir web tarayıcısı isterseniz, sıradaki ekranda belirtebilirsiniz." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "Kurulacak ek paketleri yazınız (paketleri boşlukla ayırın, geçmek için boş bırakın): " - -msgid "Copy ISO network configuration to installation" -msgstr "ISO ağ yapılandırmasını kuruluma kopyala" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "NetworkManager kullan (GNOME ve KDE ile interneti grafiksel olarak yapılandırmak için gerekli)" - -msgid "Select one network interface to configure" -msgstr "Yapılandırmak için bir ağ arayüzü seçin" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "\"{}\"i yapılandırmak için bir yöntem seçin ya da varsayılan yöntemi \"{}\" kullanmak için atlayın" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "{} için IP ve altağ (subnet) girin (örnek: 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "Ağ geçidi (yönlendirici) IP adresini girin ya da yoksa veya kullanılmayacak ise boş bırakın: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "DNS sunucularını girin (boşlukla ayrılmış, yoksa veya kullanılmayacak ise boş bırakın): " - -msgid "Select which filesystem your main partition should use" -msgstr "Ana diskinizde kullanılması gereken dosya sistemini seçin" - -msgid "Current partition layout" -msgstr "Mevcut disk bölümü düzeni" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"{}\n" -"ile ne yapılması gerektiğini seçin" - -msgid "Enter a desired filesystem type for the partition" -msgstr "Disk bölümü için arzu edilen bir dosya sistemi tipi girin" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "Başlangıç konumunu girin (bölümlendirilen birimlerinde: s, GB, %, vb. ; default: {}): " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "Bitiş konumunu girin (bölümlendirilen birimlerinde: s, GB, %, vb. ; ex: {}): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} bekleyen disk bölümleri bulunduruyor, bu işlem onları kaldıracak, bundan emin misiniz?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"Dizinden hangi disk bölümlerinin silineceğini seçin" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"Dizinden hangi disk bölümünün nereye bağlanacağını (mount) seçin" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * Disk bölümü bağlantı (mount) noktaları iç kurulumla ilişkilidir, örnek olarak önyükleme, /boot olacaktır." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "Disk bölümünün nereye bağlanacağını (mount) seçin (bağlantı (mount) noktasını kaldırmak için boş bırakın): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"Biçimlendirme için hangi disk bölümünün maskeleneceğini seçin" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"Hangi disk bölümünün şifrelenmiş olarak işaretleneceğini seçin" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"Hangi disk bölümünün önyüklenebilir (bootable) olarak işaretleneceğini seçin" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"Hangi disk bölümüne dosya sistemi kurulacağını seçin" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "Disk bölümü için arzu edilen bir dosya sistemi tipi girin: " - -msgid "Archinstall language" -msgstr "Archinstall dili" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Seçilmiş bütün diskleri temizle ve mümkün olan en iyi varsayılan disk bölümü düzenini kullan" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Her bir disk ile ne yapılacağını seçin (disk bölümü kullanımı ile takip edilir)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "Seçili blok cihazları ile ne yapmak istediğinizi seçin" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "Bu ön-programlanmış profillerin bir listesidir, bunlar masaüstü ortamları gibi şeyleri kurmayı kolaylaştırabilir" - -msgid "Select keyboard layout" -msgstr "Klavye düzeni seçin" - -msgid "Select one of the regions to download packages from" -msgstr "Paketleri indirmek için bölgelerden birini seçin" - -msgid "Select one or more hard drives to use and configure" -msgstr "Kullanmak ve yapılandırmak için bir veya daha fazla disk seçin" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "AMD donanımınızla en iyi uyumluluk için, tam açık-kaynak ya da AMD / ATI ayarlarından birini kullanmak isteyebilirsiniz." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "Intel donanımınızla en iyi uyumluluk için, tam açık-kaynak ya da Intel ayarlarından birini kullanmak isteyebilirsiniz.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Nvidia donanımınızla en iyi uyumluluk için, Nvidia kapalı kaynaklı sürücüyü kullanmak isteyebilirsiniz.\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Bir grafik sürücüsü seçin ya da bütün açık-kaynak sürücüleri kurmak için boş bırakın" - -msgid "All open-source (default)" -msgstr "Tüm açık-kaynaklar (varsayılan)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "Hangi çekirdeklerin kullanılacağını seçin veya varsayılan \"{}\" için boş bırakın" - -msgid "Choose which locale language to use" -msgstr "Hangi yerel dilin kullanılacağını seçin" - -msgid "Choose which locale encoding to use" -msgstr "Hangi yerel kodlamanın kullanılacağını seçin" - -msgid "Select one of the values shown below: " -msgstr "Aşağıda gösterilen değerlerden birini seçin: " - -msgid "Select one or more of the options below: " -msgstr "Aşağıdaki seçeneklerden bir ya da daha fazlasını seçin: " - -msgid "Adding partition...." -msgstr "Bölüm ekleniyor...." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "Devam etmek için geçerli bir fs-type girmeniz gerekir. Geçerli fs-type için `man parted`'a bakın." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Hata: Bağlantı \"{}\"daki profilleri listeleme şöyle sonuçlandı:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "Hata: \"{}\" sonucu JSON olarak çözülemedi:" - -msgid "Keyboard layout" -msgstr "Klavye düzeni" - -msgid "Mirror region" -msgstr "Ayna bölgesi" - -msgid "Locale language" -msgstr "Yerel dil" - -msgid "Locale encoding" -msgstr "Yerel kodlama" - -msgid "Drive(s)" -msgstr "Diskler" - -msgid "Disk layout" -msgstr "Disk düzeni" - -msgid "Encryption password" -msgstr "Şifreleme parolası" - -msgid "Swap" -msgstr "Swap" - -msgid "Bootloader" -msgstr "Önyükleyici" - -msgid "Root password" -msgstr "Root parolası" - -msgid "Superuser account" -msgstr "Süper kullanıcı hesabı" - -msgid "User account" -msgstr "Kullanıcı hesabı" - -msgid "Profile" -msgstr "Profil" - -msgid "Audio" -msgstr "Ses" - -msgid "Kernels" -msgstr "Çekirdekler" - -msgid "Additional packages" -msgstr "Ek paketler" - -msgid "Network configuration" -msgstr "Ağ yapılandırması" - -msgid "Automatic time sync (NTP)" -msgstr "Otomatik zaman eşitlemesi (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "Kur ({} adet yapılandırma eksik)" - -msgid "" -"You decided to skip harddrive selection\n" -"and will use whatever drive-setup is mounted at {} (experimental)\n" -"WARNING: Archinstall won't check the suitability of this setup\n" -"Do you wish to continue?" -msgstr "" -"Sabit disk seçimini atlamaya karar verdiniz ve\n" -"{}'e ne bağlanmışsa (mount) onu kullanacaksınız (deneysel)\n" -"UYARI: Archinstall bu kurulumun uygunluğunu kontrol etmeyecek\n" -"Devam etmek istiyor musunuz?" - -msgid "Re-using partition instance: {}" -msgstr "Disk bölümü örneği yeniden kullanılıyor: {}" - -msgid "Create a new partition" -msgstr "Yeni disk bölümü oluştur" - -msgid "Delete a partition" -msgstr "Disk bölümü sil" - -msgid "Clear/Delete all partitions" -msgstr "Tüm disk bölümlerini Temizle/Sil" - -msgid "Assign mount-point for a partition" -msgstr "Bir disk bölümü için mount (bağlantı) noktası ata" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "Bir disk bölümünü biçimlendirilmek üzere işaretle/işareti kaldır (veriyi temizler)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "Bir disk bölümünü şifrelenmiş olarak işaretle/işareti kaldır" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "Bir disk bölümünü önyüklenebilir olarak işaretle/işareti kaldır (/boot için otomatik)" - -msgid "Set desired filesystem for a partition" -msgstr "Bir disk bölümü için istenilen dosya sistemini ayarla" - -msgid "Abort" -msgstr "Vazgeç" - -msgid "Hostname" -msgstr "Ana bilgisayar adı" - -msgid "Not configured, unavailable unless setup manually" -msgstr "Yapılandırılmamış, el ile kurulmadığı sürece kullanılamaz" - -msgid "Timezone" -msgstr "Zaman dilimi" - -msgid "Set/Modify the below options" -msgstr "Aşağıdaki seçenekleri Ayarla/Değiştir" - -msgid "Install" -msgstr "Kur" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"Geçmek için ESC kullan\n" -"\n" - -msgid "Suggest partition layout" -msgstr "Disk bölümü şeması öner" - -msgid "Enter a password: " -msgstr "Bir parola gir: " - -msgid "Enter a encryption password for {}" -msgstr "{} için bir şifreleme parolası girin" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "Disk şifreleme parolası girin (şifreleme olmaması için boş bırakın): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "Sudo ayrıcalıklarına sahip gerekli bir süper kullanıcı oluştur: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "Root parolası gir (root devre dışı bırakmak için boş bırak): " - -msgid "Password for user \"{}\": " -msgstr "\"{}\" kullanıcısı için şifre: " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "Ek paketlerin varlığı doğrulanıyor (bu bir kaç saniye alabilir)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "Varsayılan zaman sunucularıyla otomatik zaman eş zamanlama (NTP) kullanmak ister misiniz?\n" - -msgid "" -"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" -"For more information, please check the Arch wiki" -msgstr "" -"NTP çalışması için donanım zamanı ve diğer yapılandırma sonrası adımlar gerekebilir.\n" -"Daha fazla bilgi için, lütfen Arch wikiye göz atın" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "Ek kullanıcı oluşturmak için bir kullanıcı adı girin (geçmek için boş bırakın): " - -msgid "Use ESC to skip\n" -msgstr "Geçmek için ESC kullan\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -"Listeden bir obje seçin ve çalıştırılmak üzere mevcut eylemlerden birini seçin" - -msgid "Cancel" -msgstr "İptal" - -msgid "Confirm and exit" -msgstr "Onayla ve çık" - -msgid "Add" -msgstr "Ekle" - -msgid "Copy" -msgstr "Kopyala" - -msgid "Edit" -msgstr "Düzenle" - -msgid "Delete" -msgstr "Sil" - -msgid "Select an action for '{}'" -msgstr "'{}' için bir eylem seç" - -msgid "Copy to new key:" -msgstr "Yeni anahtara kopyala:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "Bilinmeyen nic türü: {}. Olası değerler {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"Bu sizin seçilmiş yapılandırmanız:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Pacman hâlihazırda çalışıyor, işlemin sonlandırılması için en fazla 10 dakika beklenecek." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "Önceden var olan pacman kilidi çıkış yapmadı. Lütfen archinstall'u kullanmadan önce mevcut olan pacman oturumlarını temizleyin." - -msgid "Choose which optional additional repositories to enable" -msgstr "Hangi tercihi ek depoların (repositorylerin) aktifleştirileceğini seçin" - -msgid "Add a user" -msgstr "Kullanıcı ekle" - -msgid "Change password" -msgstr "Parola değiştir" - -msgid "Promote/Demote user" -msgstr "Kullanıcıyı terfi et/indirge" - -msgid "Delete User" -msgstr "Kullanıcıyı Sil" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"Yeni bir kullanıcı tanımla\n" - -msgid "User Name : " -msgstr "Kullanıcı Adı : " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "{} bir süper kullanıcı (sudoer) mı olmalı?" - -msgid "Define users with sudo privilege: " -msgstr "Sudo yetkilerine sahip kullanıcıları tanımlayın: " - -msgid "No network configuration" -msgstr "Ağ yapılandırması yok" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "Btrfs disk bölümünde istenilen alt disk bölümülerini ayarlayın" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"Alt disk bölümlerinin hangi disk bölümüne ayarlanacağını seçin" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "Mevcut disk bölümü için btrfs alt disk bölümlerini yönet" - -msgid "No configuration" -msgstr "Yapılandırma yok" - -msgid "Save user configuration" -msgstr "Kullanıcı yapılandırmasını kaydet" - -msgid "Save user credentials" -msgstr "Kullanıcı bilgilerini kaydet" - -msgid "Save disk layout" -msgstr "Disk düzenini kaydet" - -msgid "Save all" -msgstr "Tümünü kaydet" - -msgid "Choose which configuration to save" -msgstr "Hangi yapılandırmanın kaydedileceğini seçin" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "Yapılandırmaların kaydedilmesi için bir dizin girin: " - -msgid "Not a valid directory: {}" -msgstr "Geçerli bir dizin değil: {}" - -msgid "The password you are using seems to be weak," -msgstr "Kullandığınız parola zayıf görünüyor," - -msgid "are you sure you want to use it?" -msgstr "kullanmak istediğinize emin misiniz?" - -msgid "Optional repositories" -msgstr "İsteğe bağlı depolar" - -msgid "Save configuration" -msgstr "Yapılandırmayı kaydet" - -msgid "Missing configurations:\n" -msgstr "Eksik yapılandırmalar:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "Ya root parolası ya da en az 1 süper kullanıcı belirtilmelidir" - -msgid "Manage superuser accounts: " -msgstr "Süper kullanıcı hesaplarını yönet: " - -msgid "Manage ordinary user accounts: " -msgstr "Normal kullanıcı hesaplarını yönet: " - -msgid " Subvolume :{:16}" -msgstr " Alt disk bölümü :{:16}" - -msgid " mounted at {:16}" -msgstr " {:16}'da monte edildi" - -msgid " with option {}" -msgstr " {} seçeneğiyle" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -"Yeni bir alt disk bölümü için istenilen değerleri doldurun\n" - -msgid "Subvolume name " -msgstr "Alt disk bölümü ismi " - -msgid "Subvolume mountpoint" -msgstr "Alt disk bölümü bağlantı noktası" - -msgid "Subvolume options" -msgstr "Alt disk bölümü seçenekleri" - -msgid "Save" -msgstr "Kaydet" - -msgid "Subvolume name :" -msgstr "Alt disk bölümü ismi :" - -msgid "Select a mount point :" -msgstr "Bir bağlantı noktası seçin :" - -msgid "Select the desired subvolume options " -msgstr "İstenilen alt disk bölümü ayarlarını seçin " - -msgid "Define users with sudo privilege, by username: " -msgstr "Süper-kullanıcı yetkilerine sahip kullanıcıları tanımlayın, kullanıcı adı ile: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] Burada bir günlük dosyası oluşturuldu: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "BTRFS alt disk bölümlerini varsayılan yapıyla kullanmak ister misiniz?" - -msgid "Would you like to use BTRFS compression?" -msgstr "BTRFS sıkıştırmasını kullanmak ister misiniz?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "/home dizini için ayrı bir disk bölümü oluşturmak ister misiniz?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "Seçilmiş diskler otomatik öneriler için gerekli minimum kapasiteye sahip değil\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "/home disk bölümü için minimum kapasite: {}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Arch Linux disk bölümü için minimum kapasite: {}GB" - -msgid "Continue" -msgstr "Devam" - -msgid "yes" -msgstr "evet" - -msgid "no" -msgstr "hayır" - -msgid "set: {}" -msgstr "ayarla: {}" - -msgid "Manual configuration setting must be a list" -msgstr "El ile yapılandırma ayarı bir liste olmalıdır" - -msgid "No iface specified for manual configuration" -msgstr "El ile yapılandırma için iface belirtilmemiş" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "Otomatik DHCP olmayan manuel nic yapılandırması IP adresi gerektirir" - -msgid "Add interface" -msgstr "Arayüz ekle" - -msgid "Edit interface" -msgstr "Arayüzü düzenle" - -msgid "Delete interface" -msgstr "Arayüzü sil" - -msgid "Select interface to add" -msgstr "Eklemek için arayüz seçin" - -msgid "Manual configuration" -msgstr "El ile yapılandırma" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "Bir disk bölümünü sıkıştırılmış olarak işaretle/işareti kaldır (sadece btrfs)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "Kullandığınız şifre zayıf görünüyor, kullanmak istediğinize emin misiniz?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "Masaüstü ortamları ve otomatik döşemeli pencere yöneticilerine bir seçenek sunar, örnek olarak gnome, kde, sway" - -msgid "Select your desired desktop environment" -msgstr "İstediğiniz masaüstü ortamını seçin" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "Arch Linux'u uygun gördüğünüz şekilde özelleştirmenize olanak tanıyan çok basit bir kurulum." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "Kurmak ve aktif etmek için bazı seçilmiş çeşitli sunucu paketleri sunar, örnek olarak httpd, nginx, mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "Hangi sunucuların kurulacağını seçin, eğer hiçbiri seçilmezse minimal bir kurulum gerçekleştirilecektir" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "Xorg ve grafik sürücüleri ile minimal bir sistem kurar." - -msgid "Press Enter to continue." -msgstr "Devam etmek için Enter'a basın." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "Yeni oluşturulan kuruluma chroot ile girmek ve kurulum sonrası yapılandırmayı gerçekleştirmek ister misiniz?" - -msgid "Are you sure you want to reset this setting?" -msgstr "Bu ayarı sıfırlamak istediğinize emin misiniz?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "Kullanmak ve yapılandırmak için bir ya da daha fazla sabit disk seçin\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "Mevcut ayarda yapılacak herhangi bir değişiklik disk düzenini sıfırlayacaktır!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "Eğer sabit disk seçimini sıfırlarsanız bu ayrıca mevcut disk şemasını da sıfırlayacaktır. Emin misiniz?" - -msgid "Save and exit" -msgstr "Kaydet ve çık" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"işlem sırasında bekleyen disk bölümleri bulunduruyor, bu onları kaldıracak, emin misiniz?" - -msgid "No audio server" -msgstr "Ses sunucusu yok" - -msgid "(default)" -msgstr "(varsayılan)" - -msgid "Use ESC to skip" -msgstr "Atlamak için ESC kullan" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"Mevcut seçimi sıfırlamak için CTRL+C kullan\n" -"\n" - -msgid "Copy to: " -msgstr "Şuraya kopyala: " - -msgid "Edit: " -msgstr "Düzenle: " - -msgid "Key: " -msgstr "Anahtar: " - -msgid "Edit {}: " -msgstr "Düzenle {}: " - -msgid "Add: " -msgstr "Ekle: " - -msgid "Value: " -msgstr "Değer: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "Bir disk seçmeyi ve bölümlemeyi atlayabilir ve /mnt adresinde bağlı olan disk konfigürasyonunu kullanabilirsiniz (deneysel)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "Disklerden birini seçin ya da atlayın ve /mnt dizinini varsayılan olarak kullanın" - -msgid "Select which partitions to mark for formatting:" -msgstr "Biçimlendirme için işaretlenecek disk bölümlerini seçin:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "Şifrelenmiş diskin kilidini açmak için HSM kullan" - -msgid "Device" -msgstr "Cihaz" - -msgid "Size" -msgstr "Boyut" - -msgid "Free space" -msgstr "Boş alan" - -msgid "Bus-type" -msgstr "Veri yolu türü" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "Ya root parolası ya da sudo yetkilerine sahip en az 1 kullanıcı belirtilmelidir" - -msgid "Enter username (leave blank to skip): " -msgstr "Kullanıcı adını girin (atlamak için boş bırakın): " - -msgid "The username you entered is invalid. Try again" -msgstr "Girdiğiniz kullanıcı adı geçersiz. Tekrar deneyin" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "{} bir süper kullanıcı (sudo) olmalı mı?" - -msgid "Select which partitions to encrypt" -msgstr "Hangi disk bölümlerinin şifreleneceğini seçin" - -msgid "very weak" -msgstr "çok zayıf" - -msgid "weak" -msgstr "zayıf" - -msgid "moderate" -msgstr "ortalama" - -msgid "strong" -msgstr "güçlü" - -msgid "Add subvolume" -msgstr "Alt disk bölümü ekle" - -msgid "Edit subvolume" -msgstr "Alt disk bölümünü düzenle" - -msgid "Delete subvolume" -msgstr "Alt disk bölümünü sil" - -msgid "Configured {} interfaces" -msgstr "Yapılandırılmış {} arayüzler" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "Bu seçenek, yükleme sırasında meydana gelebilecek paralel indirme sayısını etkinleştirir" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"Etkinleştirilecek paralel indirme sayısını girin.\n" -" (1 ile {max_downloads} arasında bir değer girin)\n" -"Not:" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - En yüksek değer : {} ( {} paralel indirmeye (tek seferde {} indirmeye) izin verir)" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - Asgari değer : 1 ( 1 paralel indirmeye (bir seferde 2 indirmeye) izin verir)" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - Devre Dışı Bırak/Varsayılan : 0 (Paralel indirmeyi devre dışı bırakır, aynı anda yalnızca 1 indirmeye izin verir)" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "Geçersiz girdi! Geçerli bir girdiyle tekrar deneyin [{max_downloads} için 1, veya devre dışı bırakmak için 0]" - -msgid "Parallel Downloads" -msgstr "Paralel İndirmeler" - -msgid "ESC to skip" -msgstr "Atlamak için ESC" - -msgid "CTRL+C to reset" -msgstr "Sıfırlamak için CTRL+C" - -msgid "TAB to select" -msgstr "Seçmek için TAB" - -msgid "[Default value: 0] > " -msgstr "[Varsayılan değer: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "Bu çeviriyi kullanabilmek için lütfen dili destekleyen bir yazı tipini manuel olarak yükleyin." - -msgid "The font should be stored as {}" -msgstr "Yazı tipi {} olarak saklanmalıdır." - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "Archinstall çalışması için root ayrıcalıkları gerekir. Daha fazlası için --help bölümüne bak." - -msgid "Select an execution mode" -msgstr "Bir çalıştırma modu seçin" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "Belirtilen web adresinden profil getirilemiyor: {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "Profiller benzersiz ada sahip olmalıdır, ancak yinelenen ada sahip profiller bulundu: {}" - -msgid "Select one or more devices to use and configure" -msgstr "Kullanılacak ve yapılandırılacak bir veya daha fazla cihaz seçin" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "Aygıt seçimini sıfırlarsanız, bu aynı zamanda geçerli disk düzenini de sıfırlayacaktır. Emin misiniz?" - -msgid "Existing Partitions" -msgstr "Mevcut Bölmeler" - -msgid "Select a partitioning option" -msgstr "Bir bölümleme seçeneği belirleyin" - -msgid "Enter the root directory of the mounted devices: " -msgstr "Takılı aygıtların kök dizinini girin: " - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "/home disk bölümü için asgari kapasite: {}GiB\n" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "Arch Linux disk bölümü için asgari kapasite: {}GiB" - -msgid "This is a list of pre-programmed profiles_bck, they might make it easier to install things like desktop environments" -msgstr "Bu, önceden programlanmış profiles_bck listesidir, masaüstü ortamları gibi şeyleri yüklemeyi kolaylaştırabilirler" - -msgid "Current profile selection" -msgstr "Mevcut disk bölümü düzeni" - -msgid "Remove all newly added partitions" -msgstr "Yeni eklenen tüm disk bölümleri kaldır" - -msgid "Assign mountpoint" -msgstr "Bağlama noktası ata" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "Biçimlendirilmek üzere işaretle/işareti kaldır (verileri siler)" - -msgid "Mark/Unmark as bootable" -msgstr "Önyüklenebilir olarak işaretle/işareti kaldır" - -msgid "Change filesystem" -msgstr "Dosya sistemini değiştir" - -msgid "Mark/Unmark as compressed" -msgstr "Sıkıştırıldı olarak işaretle/işareti kaldır" - -msgid "Set subvolumes" -msgstr "Alt disk bölümü ayarla" - -msgid "Delete partition" -msgstr "Disk bölümü sil" - -msgid "Partition" -msgstr "Disk bölümü" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "Bu disk bölümü şu anda şifrelenmiştir, biçimlendirmek için bir dosya sistemi belirtilmelidir" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "Bölüm bağlama noktaları kurulumun içine görelidir, örnek olarak önyükleme /boot olacaktır." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "Mountpoint /boot ayarlanmışsa, bölüm de önyüklenebilir olarak işaretlenecektir." - -msgid "Mountpoint: " -msgstr "Bağlantı noktası: " - -msgid "Current free sectors on device {}:" -msgstr "{} cihazındaki mevcut boş sektörler:" - -msgid "Total sectors: {}" -msgstr "Toplam sektörler: {}" - -msgid "Enter the start sector (default: {}): " -msgstr "Başlangıç sektörünü girin (varsayılan: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "Bölümün bitiş sektörünü girin (yüzde veya blok numarası, varsayılan: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "Bu işlem yeni eklenmiş tüm bölümleri kaldıracaktır, devam edilsin mi?" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "Bölüm yönetimi: {}" - -#, python-brace-format -msgid "Total length: {}" -msgstr "Toplam uzunluk: {}" - -msgid "Encryption type" -msgstr "Şifreleme türü" - -msgid "Iteration time" -msgstr "" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "" - -msgid "Higher values increase security but slow down boot time" -msgstr "" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "" - -msgid "Iteration time cannot be empty" -msgstr "" - -msgid "Iteration time must be at least 100ms" -msgstr "" - -msgid "Iteration time must be at most 120000ms" -msgstr "" - -msgid "Please enter a valid number" -msgstr "" - -msgid "Partitions" -msgstr "Bölümler" - -msgid "No HSM devices available" -msgstr "Kullanılabilir HSM cihazı yok" - -msgid "Partitions to be encrypted" -msgstr "Şifrelenecek bölümler" - -msgid "Select disk encryption option" -msgstr "Disk şifreleme seçeneğini seçin" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "HSM için kullanılacak bir FIDO2 cihazı seçin" - -msgid "Use a best-effort default partition layout" -msgstr "Olabilecek en iyi varsayılan bölüm düzeni kullan" - -msgid "Manual Partitioning" -msgstr "El İle Bölümlendir" - -msgid "Pre-mounted configuration" -msgstr "Önceden bağlanmış yapılandırma" - -msgid "Unknown" -msgstr "Bilinmeyen" - -msgid "Partition encryption" -msgstr "Disk bölümü şifrelemesi" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr " ! {} biçimlendiriliyor " - -msgid "← Back" -msgstr "← Geri" - -msgid "Disk encryption" -msgstr "Disk şifrelemesi" - -msgid "Configuration" -msgstr "Yapılandırma" - -msgid "Password" -msgstr "Parola" - -msgid "All settings will be reset, are you sure?" -msgstr "Tüm ayarlar sıfırlanacak, emin misiniz?" - -msgid "Back" -msgstr "Geri" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "Lütfen seçilen profiller için hangi karşılayıcının kurulacağını seçin: {}" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "Ortam türü: {}" - -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 "Tescilli Nvidia sürücüsü Sway tarafından desteklenmiyor. Sorunlarla karşılaşmanız muhtemeldir, bu sizin için uygun mu?" - -msgid "Installed packages" -msgstr "Kurulu paketler" - -msgid "Add profile" -msgstr "Profil ekle" - -msgid "Edit profile" -msgstr "Profil düzenle" - -msgid "Delete profile" -msgstr "Profil sil" - -msgid "Profile name: " -msgstr "Profil ismi: " - -msgid "The profile name you entered is already in use. Try again" -msgstr "Girdiğiniz profil adı zaten kullanılıyor. Tekrar deneyin" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "Kurulacak ek paketleri yazınız (boşlukla ayrılmış, geçmek için boş bırakın): " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "Bu profille etkinleştirilecek hizmetler (boşluk bırakılmış, atlamak için boş bırakın): " - -msgid "Should this profile be enabled for installation?" -msgstr "Bu profil kurulum için etkinleştirilmeli mi?" - -msgid "Create your own" -msgstr "Kendinizinkini oluşturun" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"Bir grafik sürücüsü seçin veya tüm açık kaynak sürücülerini yüklemek için boş bırakın" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway'in seat'e erişmesi gerekir (klavye, fare vb. donanım aygıtlarının tanınması)" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Sway'in donanımınıza erişmesine izin vermek için bir seçenek belirleyin" - -msgid "Graphics driver" -msgstr "Grafik sürücüsü" - -msgid "Greeter" -msgstr "Karşılayıcı (greeter)" - -msgid "Please chose which greeter to install" -msgstr "Lütfen hangi karşılayıcının (greeter) kurulacağını seçin" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "Bu, önceden programlanmış default_profiles listesidir" - -msgid "Disk configuration" -msgstr "Disk yapılandırması" - -msgid "Profiles" -msgstr "Profiller" - -msgid "Finding possible directories to save configuration files ..." -msgstr "Yapılandırma dosyalarını kaydetmek için olası dizinler aranıyor..." - -msgid "Select directory (or directories) for saving configuration files" -msgstr "Yapılandırma dosyalarını kaydetmek için dizin (veya dizinler) seçin" - -msgid "Add a custom mirror" -msgstr "Özel indirme sunucusu ekleyin" - -msgid "Change custom mirror" -msgstr "Özel indirme sunucusunu değiştirin" - -msgid "Delete custom mirror" -msgstr "Özel indirme sunucusunu silin" - -msgid "Enter name (leave blank to skip): " -msgstr "İsim girin (geçmek için boş bırakın): " - -msgid "Enter url (leave blank to skip): " -msgstr "Url girin (geçmek için boş bırakın): " - -msgid "Select signature check option" -msgstr "İmza kontrolü seçeneğini seçin" - -msgid "Select signature option" -msgstr "İmza seçeneğini seçin" - -msgid "Custom mirrors" -msgstr "Kişisel depo aynası" - -msgid "Defined" -msgstr "Tanımlı" - -msgid "Save user configuration (including disk layout)" -msgstr "Kullanıcı konfigürasyonunu kaydet (Disk düzeni ile birlikte)" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"Kaydedilecek yapılandırma(lar) için bir dizin girin (sekme tamamlama etkin)\n" -"Dizini kaydet: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "{} konfigürasyon dosya(lar)ını gösterilen konuma kaydetmek ister miydiniz?" - -msgid "Saving {} configuration files to {}" -msgstr "{} konfigürasyon dosyaları {} konumuna kaydediliyor" - -msgid "Mirrors" -msgstr "Ayna sunucular" - -msgid "Mirror regions" -msgstr "Ayna sunucusu bölgesi" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " Maximum değer : {} ( {} paralel indirmelerine izin verir, Tek seferde {max_download+1} indirmeye izin verir.)" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "Geçersiz girdi! Geçerli bir girdiyle tekrar deneyin [1 ila {} veya devre dışı bırakmak için 0]" - -msgid "Locales" -msgstr "Yerel Ayarlar" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "NetworkManager'ı kullan (GNOME ya da KDE'de interneti grafik olarak yapılandırmak için gerekli)" - -msgid "Total: {} / {}" -msgstr "Toplam: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "Girilen tüm değerlerin sonuna bir birim eklenebilir: B, KB, KiB, MB, MiB…" - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "Herhangi bir birim belirtilmezse, değer sektörler olarak yorumlanır" - -msgid "Enter start (default: sector {}): " -msgstr "Başlangıç girin (varsayılan: sektör {}): " - -msgid "Enter end (default: {}): " -msgstr "Bitiş girin (varsayılan: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "Fido2 cihazları belirlenemiyor. libfido2 yüklü mü?" - -msgid "Path" -msgstr "Yol/Konum" - -msgid "Manufacturer" -msgstr "Üretici firma" - -msgid "Product" -msgstr "Ürün" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "Geçersiz yapılandırma: {error}" - -msgid "Type" -msgstr "Tür" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "Bu seçenek, paket indirmeleri sırasında oluşabilecek paralel indirme sayısını etkinleştirir" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"Etkinleştirilecek paralel indirme sayısını girin.\n" -"\n" -"Not:\n" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - Önerilen maksimum değer : {} ( Bir seferde {} paralel indirmeye izin verir )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - Devre Dışı / Varsayılan : 0 (Paralel indirmeyi devre dışı bırakır, bir seferde yalnızca 1 indirmeye izin verir)\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "Geçersiz girdi! Geçerli bir girişle [veya devre dışı bırakmak için 0 ile] tekrar deneyin" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Hyprland’in donanımlarınıza erişmesi gerekir (klavye, fare vb. donanım aygıtlarının tanınması)" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Hyprland’e donanımınıza erişim izni vermek için bir seçenek belirleyin" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "Girilen tüm değerlerin sonuna bir birim eklenebilir: %, B, KB, KiB, MB, MiB…" - -msgid "Would you like to use unified kernel images?" -msgstr "Birleştirilmiş çekirdek görüntülerini (Unified kernel) kullanmak ister misiniz?" - -msgid "Unified kernel images" -msgstr "Birleşik çekirdek görüntüleri (Unified kernels)" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "Zaman senkronizasyonunun (timedatectl show) tamamlanması bekleniyor." - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Siz beklerken zaman senkronizasyonu tamamlanmıyor - geçici çözümler için dokümanları kontrol edin: https://archinstall.readthedocs.io/" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "Otomatik zaman senkronizasyonunu beklemenin atlanması (kurulum sırasında zamanın senkronize olmaması durumunda bu durum sorunlara neden olabilir)" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "Arch Linux anahtarlık senkronizasyonunun (archlinux-keyring-wkd-sync) tamamlanması bekleniyor." - -msgid "Selected profiles: " -msgstr "Seçilmiş profiller: " - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Siz beklerken zaman senkronizasyonu tamamlanamıyor - geçici çözümler için dokümanları kontrol edin: https://archinstall.readthedocs.io/" - -msgid "Mark/Unmark as nodatacow" -msgstr "Nodatacow (Yazarken Kopyala/ma) olarak işaretle/işaretini kaldır" - -msgid "Would you like to use compression or disable CoW?" -msgstr "Sıkıştırma kullanmak veya CoW'u (Yazarken Kopyalayı) devre dışı bırakmak ister misiniz?" - -msgid "Use compression" -msgstr "Sıkıştırma kullan" - -msgid "Disable Copy-on-Write" -msgstr "Copy-on-write'ı (Yazarken kopyala) devre dışı bırak" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "GNOME, KDE Plasma, Sway gibi çeşitli masaüstü ortamları ve döşeme pencere yöneticileri sağlar" - -#, python-brace-format -msgid "Configuration type: {}" -msgstr "Yapılandırma türü: {}" - -msgid "LVM configuration type" -msgstr "LVM yapılandırma türü" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "2'den fazla bölüm içeren LVM disk şifrelemesi şu anda desteklenmemektedir" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "NetworkManager kullanın (GNOME ve KDE Plasma'da interneti grafiksel olarak yapılandırmak için gereklidir)" - -msgid "Select a LVM option" -msgstr "Bir LVM seçeneği belirleyin" - -msgid "Partitioning" -msgstr "Disk bölümleme" - -msgid "Logical Volume Management (LVM)" -msgstr "Mantıksal Hacim Yönetimi (LVM)" - -msgid "Physical volumes" -msgstr "Fiziksel birimler" - -msgid "Volumes" -msgstr "Birimler" - -msgid "LVM volumes" -msgstr "LVM birimleri" - -msgid "LVM volumes to be encrypted" -msgstr "LVM şifrelenecek birimleri" - -msgid "Select which LVM volumes to encrypt" -msgstr "Hangi LVM bölümlerinin şifreleneceğini seçin" - -msgid "Default layout" -msgstr "Varsayılan düzen" - -msgid "No Encryption" -msgstr "Şifreleme Yok" - -msgid "LUKS" -msgstr "LUKS" - -msgid "LVM on LUKS" -msgstr "LUKS üzerinde LVM" - -msgid "LUKS on LVM" -msgstr "LVM üzerinde LUKS" - -msgid "Yes" -msgstr "Evet" - -msgid "No" -msgstr "Hayır" - -msgid "Archinstall help" -msgstr "Archinstall yardım" - -msgid " (default)" -msgstr " (varsayılan)" - -msgid "Press Ctrl+h for help" -msgstr "Yardım için Ctrl+h tuşlarına basın" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "Sway'e donanımınıza erişim izni vermek için bir seçenek belirleyin" - -msgid "Seat access" -msgstr "Seat (?) erişimi" - -msgid "Mountpoint" -msgstr "Mountpoint" - -msgid "HSM" -msgstr "HSM" - -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "Disk şifreleme parolası girin (şifreleme olmaması için boş bırakın):" - -msgid "Disk encryption password" -msgstr "Disk şifreleme parolası" - -msgid "Partition - New" -msgstr "Bölüm - Yeni" - -msgid "Filesystem" -msgstr "Dosya Sistemi" - -msgid "Invalid size" -msgstr "Geçersiz boyut" - -msgid "Start (default: sector {}): " -msgstr "Başlangıç (varsayılan: sektör {}): " - -msgid "End (default: {}): " -msgstr "Bitiş (varsayılan: {}): " - -msgid "Subvolume name" -msgstr "Alt disk bölümü ismi" - -msgid "Disk configuration type" -msgstr "Disk yapılandırması tipi" - -msgid "Root mount directory" -msgstr "Kök (/) bağlama dizini" - -msgid "Select language" -msgstr "Dil seç" - -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "Kurulacak ek paketleri yazınız (paketleri boşlukla ayırın, geçmek için boş bırakın):" - -msgid "Invalid download number" -msgstr "Geçersiz indirme sayısı" - -msgid "Number downloads" -msgstr "İndirme sayısı" - -msgid "The username you entered is invalid" -msgstr "Girdiğiniz kullanıcı adı geçersiz" - -msgid "Username" -msgstr "Kullanıcı Adı" - -#, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "\"{}\" bir süper kullanıcı (sudo) olmalı mı?\n" - -msgid "Interfaces" -msgstr "Arayüz" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "IP-config modunda geçerli bir IP girmeniz gerekir" - -msgid "Modes" -msgstr "Modlar" - -msgid "IP address" -msgstr "IP adresi" - -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "Ağ geçidinizin (yönlendirici) IP adresini girin (hiçbiri için boş bırak)" - -msgid "Gateway address" -msgstr "Ağ geçidi adresi" - -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "DNS sunucularını girin (boşlukla ayrılmış, yoksa veya kullanılmayacak ise boş bırakın):" - -msgid "DNS servers" -msgstr "DNS sunucuları" - -msgid "Configure interfaces" -msgstr "Arayüzleri yapılandır" - -msgid "Kernel" -msgstr "Çekirdek" - -msgid "UEFI is not detected and some options are disabled" -msgstr "UEFI algılanamadı ve bazı seçenekler devre dışı bırakıldı" - -msgid "Info" -msgstr "Bilgi" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "Kapalı kaynak Nvidia sürücüsü Sway tarafından desteklenmemektedir." - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "Muhtemelen sorunlarla karşılaşacaksınız, bunu kabul ediyor musunuz?" - -msgid "Main profile" -msgstr "Ana profil" - -msgid "Confirm password" -msgstr "Parolayı onayla" - -msgid "The confirmation password did not match, please try again" -msgstr "Onay parolası eşleşmedi, lütfen tekrar deneyin" - -msgid "Not a valid directory" -msgstr "Geçerli bir dizin değil" - -msgid "Would you like to continue?" -msgstr "Devam etmek ister misiniz?" - -msgid "Directory" -msgstr "Dizin" - -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "Kaydedilecek yapılandırma(lar) için bir dizin girin (sekme tamamlama etkin)" - -#, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "Yapılandırma dosya(lar)ını {}'a kaydetmek istiyor musunuz?" - -msgid "Enabled" -msgstr "Etkin" - -msgid "Disabled" -msgstr "Devre dışı" - -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "Lütfen bu sorunu (ve dosyayı) https://github.com/archlinux/archinstall/issues adresine gönderin" - -msgid "Mirror name" -msgstr "Yansıma adı" - -msgid "Url" -msgstr "Url" - -msgid "Select signature check" -msgstr "İmza kontrolünü seç" - -msgid "Select execution mode" -msgstr "Çalıştırma modunu seç" - -msgid "Press ? for help" -msgstr "Yardım için ? tuşuna basın" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "Hyprland donanımınıza erişim izni vermek için bir seçenek belirleyin" - -msgid "Additional repositories" -msgstr "Ek depolar" - -msgid "NTP" -msgstr "NTP" - -msgid "Swap on zram" -msgstr "Zram üzerinde swap" - -msgid "Name" -msgstr "İsim" - -msgid "Signature check" -msgstr "İmza kontrolü" - -#, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "Cihaz üzerinde seçilen boş alan segmenti {}:" - -#, python-brace-format -msgid "Size: {} / {}" -msgstr "Boyut: {} / {}" - -#, python-brace-format -msgid "Size (default: {}): " -msgstr "Boyut (varsayılan: {}): " - -msgid "HSM device" -msgstr "HSM cihazı" - -msgid "Some packages could not be found in the repository" -msgstr "Depoda bazı paketler bulunamadı" - -msgid "User" -msgstr "Kullanıcı" - -msgid "The specified configuration will be applied" -msgstr "Belirtilen yapılandırma uygulanacaktır" - -msgid "Wipe" -msgstr "Süpür" - -msgid "Mark/Unmark as XBOOTLDR" -msgstr "XBOOTLDR olarak İşaretle/İşareti Kaldır" - -msgid "Loading packages..." -msgstr "Paketler yükleniyor..." - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "Aşağıdaki listeden ek olarak kurulması gereken paketleri seçin" - -msgid "Add a custom repository" -msgstr "Özel bir depo ekle" - -msgid "Change custom repository" -msgstr "Özel depoyu değiştir" - -msgid "Delete custom repository" -msgstr "Özel depoyu sil" - -msgid "Repository name" -msgstr "Depo adı" - -msgid "Add a custom server" -msgstr "Özel bir sunucu ekle" - -msgid "Change custom server" -msgstr "Özel sunucuyu değiştir" - -msgid "Delete custom server" -msgstr "Özel sunucuyu sil" - -msgid "Server url" -msgstr "Sunucu adresi" - -msgid "Select regions" -msgstr "Bölge seç" - -msgid "Add custom servers" -msgstr "Özel sunucu ekle" - -msgid "Add custom repository" -msgstr "Özel depo ekle" - -msgid "Loading mirror regions..." -msgstr "Ayna bölgeleri yükleniyor..." - -msgid "Mirrors and repositories" -msgstr "Aynalar ve depolar" - -msgid "Selected mirror regions" -msgstr "Seçilmiş ayna bölgeleri" - -msgid "Custom servers" -msgstr "Özel sunucular" - -msgid "Custom repositories" -msgstr "Özel depolar" - -msgid "Only ASCII characters are supported" -msgstr "Sadece ASCII karakterleri desteklenir" - -msgid "Show help" -msgstr "Yardım göster" - -msgid "Exit help" -msgstr "Yardımdan çık" - -msgid "Preview scroll up" -msgstr "Önizlemeyi yukarı kaydır" - -msgid "Preview scroll down" -msgstr "Önizlemeyi aşağı kaydır" - -msgid "Move up" -msgstr "Yukarı taşı" - -msgid "Move down" -msgstr "Aşağı taşı" - -msgid "Move right" -msgstr "Sağa taşı" - -msgid "Move left" -msgstr "Sola taşı" - -msgid "Jump to entry" -msgstr "Girişe atla" - -msgid "Skip selection (if available)" -msgstr "Seçimi atla (eğer varsa)" - -msgid "Reset selection (if available)" -msgstr "Seçimi sıfırla (eğer varsa)" - -msgid "Select on single select" -msgstr "Tek seçimde seç" - -msgid "Select on multi select" -msgstr "Çoklu seçimde seç" - -msgid "Reset" -msgstr "Sıfırla" - -msgid "Skip selection menu" -msgstr "Seçim menüsünü atla" - -msgid "Start search mode" -msgstr "Arama modunu başlat" - -msgid "Exit search mode" -msgstr "Arama modundan çık" - -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Labwc cihazlarınıza erişmesi gerekir (klavye, fare vb. donanım cihazları koleksiyonu)" - -msgid "Choose an option to give labwc access to your hardware" -msgstr "Labwc donanımınıza erişim izni vermek için bir seçenek belirleyin" - -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Niri cihazlarınıza erişmesi gerekir (klavye, fare vb. donanım cihazları koleksiyonu)" - -msgid "Choose an option to give niri access to your hardware" -msgstr "Niri donanımınıza erişim izni vermek için bir seçenek belirleyin" - -msgid "Mark/Unmark as ESP" -msgstr "ESP olarak İşaretle/İşareti Kaldır" - -msgid "Package group:" -msgstr "Paket grubu:" - -msgid "Exit archinstall" -msgstr "Archinstall çıkış" - -msgid "Reboot system" -msgstr "Sistemi yeniden başlat" - -msgid "chroot into installation for post-installation configurations" -msgstr "Kurulum sonrası yapılandırmalar için kuruluma chroot ekleyin" - -msgid "Installation completed" -msgstr "Kurulum tamamlandı" - -msgid "What would you like to do next?" -msgstr "Bundan sonra ne yapmak istersiniz?" - -#, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "Hangi mod için yapılandırma yapılacağını seç \"{}\"" - -msgid "Incorrect credentials file decryption password" -msgstr "Hatalı kimlik bilgisi dosyası şifre çözme parolası" - -msgid "Incorrect password" -msgstr "Yanlış parola" - -msgid "Credentials file decryption password" -msgstr "Kimlik bilgileri dosyası şifre çözme parolası" - -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "user_credentials.json dosyasını şifrelemek istiyor musunuz?" - -msgid "Credentials file encryption password" -msgstr "Kimlik bilgileri dosyası şifreleme parolası" - -#, python-brace-format -msgid "Repositories: {}" -msgstr "Depolar: {}" - -#, fuzzy -msgid "New version available" -msgstr "Kullanılabilir HSM cihazı yok" - -#, fuzzy -msgid "Passwordless login" -msgstr "Parola" - -msgid "Second factor login" -msgstr "" - -msgid "Bluetooth" -msgstr "" - -#, fuzzy -msgid "Would you like to configure Bluetooth?" -msgstr "Devam etmek ister misiniz?" - -msgid "Authentication" -msgstr "" - -msgid "Applications" -msgstr "" - -msgid "U2F login method: " -msgstr "" - -msgid "Passwordless sudo: " -msgstr "" - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "" - -msgid "Syncing the system..." -msgstr "" - -msgid "Value cannot be empty" -msgstr "" - -msgid "Snapshot type" -msgstr "" - -#, fuzzy, python-brace-format -msgid "Snapshot type: {}" -msgstr "Ortam türü: {}" - -msgid "U2F login setup" -msgstr "" - -msgid "No U2F devices found" -msgstr "" - -msgid "U2F Login Method" -msgstr "" - -#, fuzzy -msgid "Enable passwordless sudo?" -msgstr "Bir parola gir: " - -#, fuzzy, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "HSM için kullanılacak bir FIDO2 cihazı seçin" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "" - -msgid "Starting device modifications in " -msgstr "" - -#, fuzzy -msgid "No network connection found" -msgstr "Ağ yapılandırması yok" - -#, fuzzy -msgid "Would you like to connect to a Wifi?" -msgstr "Devam etmek ister misiniz?" - -#, fuzzy -msgid "No wifi interface found" -msgstr "Arayüzleri yapılandır" - -#, fuzzy -msgid "Select wifi network to connect to" -msgstr "Yapılandırmak için bir ağ arayüzü seçin" - -msgid "Scanning wifi networks..." -msgstr "" - -#, fuzzy -msgid "No wifi networks found" -msgstr "Ağ yapılandırması yok" - -msgid "Failed setting up wifi" -msgstr "" - -#, fuzzy -msgid "Enter wifi password" -msgstr "Bir parola gir: " - -msgid "Ok" -msgstr "" - -#~ msgid "Desktop" -#~ msgstr "Masaüstü" - -#~ msgid "Minimal" -#~ msgstr "Hafif" diff --git a/examples/archinstall/archinstall/locales/uk/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/uk/LC_MESSAGES/base.mo deleted file mode 100644 index 8e27621..0000000 Binary files a/examples/archinstall/archinstall/locales/uk/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/uk/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/uk/LC_MESSAGES/base.po deleted file mode 100644 index 8d70f14..0000000 --- a/examples/archinstall/archinstall/locales/uk/LC_MESSAGES/base.po +++ /dev/null @@ -1,1816 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: TSEPLNK\n" -"Language-Team: \n" -"Language: uk\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.6\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] Тут було створено файл журналу: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Будь ласка, надішліть цю проблему (та файл) за адресою https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "Ви дійсно хочете припинити?" - -msgid "And one more time for verification: " -msgstr "І ще раз для перевірки: " - -msgid "Would you like to use swap on zram?" -msgstr "Бажаєте використовувати підкачку на zram?" - -msgid "Desired hostname for the installation: " -msgstr "Бажане ім'я хоста: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "Ім’я користувача для необхідного суперкористувача з правами sudo: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "Будь-які додаткові користувачі для встановлення (залиште порожнім, щоб не було користувачів): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "Чи має цей користувач бути суперкористувачем (sudoer)?" - -msgid "Select a timezone" -msgstr "Оберіть часовий пояс" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "Чи бажаєте ви використовувати GRUB як завантажувач замість systemd-boot?" - -msgid "Choose a bootloader" -msgstr "Оберіть завантажувач" - -msgid "Choose an audio server" -msgstr "Оберіть звуковий сервер" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Встановлюються лише такі пакети, як base, base-devel, linux, linux-firmware, efibootmgr і додаткові пакети профілів." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "Якщо вам потрібен веб-браузер, наприклад firefox або chromium, ви можете вказати його в наступному запиті." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "Напишіть додаткові пакети для інсталяції (розділені пробілами, залиште порожнім, щоб пропустити): " - -msgid "Copy ISO network configuration to installation" -msgstr "Скопіюйте конфігурацію мережі ISO для встановлення" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "Використовувати NetworkManager (необхідний для графічного налаштування Інтернету в GNOME та KDE)" - -msgid "Select one network interface to configure" -msgstr "Оберіть один мережевий інтерфейс для налаштування" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "Виберіть, режим для налаштування \"{}\" або пропустіть, щоб використовувати режим за замовчуванням \"{}\"" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "Введіть IP-адресу та підмережу для {} (наприклад: 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "Введіть IP-адресу свого шлюзу (маршрутизатора) або залиште поле порожнім, якщо немає: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "Введіть ваші DNS-сервери (розділені пробілами, залиште порожнім якщо їх немає): " - -msgid "Select which filesystem your main partition should use" -msgstr "Оберіть файлову систему яку має використовувати основний розділ" - -msgid "Current partition layout" -msgstr "Поточна схема розмітки розділу" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"Оберіть що робити з\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "Введіть бажаний тип файлової системи для розділу" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "Введіть початкове місце (у розділених одиницях: s, GB, %, тощо; за замовчуванням: {}): " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "Введіть кінцеве місце (в одиницях parted: s, GB, %, тощо; наприклад: {}): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} містить розділи в черзі, це видалить їх, ви впевнені?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"Оберіть за індексом, які розділи потрібно видалити" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"Оберіть за індексом, який розділ куди монтувати" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * Точки монтування розділів відносяться до внутрішньої інсталяції, наприклад, завантажувач буде /boot." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "Оберіть місце монтування розділу (залиште порожнім, щоб видалити точку монтування): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"Виберіть, який розділ маскувати для форматування" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"Виберіть, який розділ позначити як зашифрований" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"Виберіть, який розділ позначити як завантажувальний" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"Виберіть, на якому розділі встановити файлову систему" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "Введіть бажаний тип файлової системи для розділу: " - -msgid "Archinstall language" -msgstr "Мова Archinstall" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Стерти усі вибрані диски та використовувати отпимальну схему розмітки розділів за замовчуванням" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Оберіть, що робити з кожним окремим диском (з наступним використанням розділу)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "Виберіть, що ви хочете зробити з вибраними блоковими пристроями" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "Це список попередньо запрограмованих профілів, вони можуть спростити встановлення таких речей, як середовища робочого столу" - -msgid "Select keyboard layout" -msgstr "Виберіть розкладку клавіатури" - -msgid "Select one of the regions to download packages from" -msgstr "Виберіть один із регіонів для завантаження пакетів" - -msgid "Select one or more hard drives to use and configure" -msgstr "Оберіть один або кілька жорстких дисків для використання та налаштування" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "Для найкращої сумісності з апаратним забезпеченням AMD ви можете використовувати варіанти з відкритим вихідним кодом або AMD / ATI." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "Для найкращої сумісності з вашим апаратним забезпеченням Intel ви можете використовувати варіанти з відкритим вихідним кодом або Intel.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Для найкращої сумісності з вашим апаратним забезпеченням Nvidia ви можете використовувати пропрієтарний драйвер Nvidia.\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Оберіть графічний драйвер або залиште поле пустим, щоб установити всі драйвери з відкритим вихідним кодом" - -msgid "All open-source (default)" -msgstr "Усі з відкритим вихідним кодом (за умовчанням)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "Виберіть, які ядра використовувати, або залиште порожнім для стандартного \"{}\"" - -msgid "Choose which locale language to use" -msgstr "Виберіть мову для використання" - -msgid "Choose which locale encoding to use" -msgstr "Виберіть, яке кодування мови використовувати" - -msgid "Select one of the values shown below: " -msgstr "Виберіть одне з наведених нижче значень: " - -msgid "Select one or more of the options below: " -msgstr "Виберіть один або кілька варіантів нижче: " - -msgid "Adding partition...." -msgstr "Додавання розділу...." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "Вам потрібно ввести валідний тип файлової систем, щоб продовжити. Перегляньте `man parted` щоб дізнатися можливі типи файлових систем." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Помилка: перелік профілів за URL-адресою \"{}\" призвело до:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "Помилка: не вдалося декодувати результат \"{}\" як JSON:" - -msgid "Keyboard layout" -msgstr "Розкладка клавіатури" - -msgid "Mirror region" -msgstr "Регіон дзеркала" - -msgid "Locale language" -msgstr "Мова локалізації" - -msgid "Locale encoding" -msgstr "Кодування локалізації" - -msgid "Drive(s)" -msgstr "Диск(и)" - -msgid "Disk layout" -msgstr "Схема розмітки диска" - -msgid "Encryption password" -msgstr "Пароль шифрування" - -msgid "Swap" -msgstr "Підкачка" - -msgid "Bootloader" -msgstr "Завантажувач" - -msgid "Root password" -msgstr "Пароль root" - -msgid "Superuser account" -msgstr "Обліковий запис суперкористувача" - -msgid "User account" -msgstr "Обліковий запис користувача" - -msgid "Profile" -msgstr "Профіль" - -msgid "Audio" -msgstr "Аудіо" - -msgid "Kernels" -msgstr "Ядра" - -msgid "Additional packages" -msgstr "Додаткові пакунки" - -msgid "Network configuration" -msgstr "Конфігурація мережі" - -msgid "Automatic time sync (NTP)" -msgstr "Автоматична синхронізація часу (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "Встановити ({} відсутні конфігурації)" - -msgid "" -"You decided to skip harddrive selection\n" -"and will use whatever drive-setup is mounted at {} (experimental)\n" -"WARNING: Archinstall won't check the suitability of this setup\n" -"Do you wish to continue?" -msgstr "" -"Ви вирішили пропустити вибір жорсткого диска\n" -"і буде використовувати будь-який диск, змонтований в {} (експериментально)\n" -"ПОПЕРЕДЖЕННЯ: Archinstall не перевіряє придатність цього налаштування\n" -"Ви бажаєте продовжити?" - -msgid "Re-using partition instance: {}" -msgstr "Повторне використання екземпляра розділу: {}" - -msgid "Create a new partition" -msgstr "Створіть новий розділ" - -msgid "Delete a partition" -msgstr "Видалити розділ" - -msgid "Clear/Delete all partitions" -msgstr "Очистити/Видалити всі розділи" - -msgid "Assign mount-point for a partition" -msgstr "Призначити точку монтування для розділу" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "Позначити/зняти позначку з розділу для форматування (видалить дані)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "Позначити/зняти позначку розділу як зашифрованого" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "Позначити/зняти позначку розділу як завантажувального (автоматично для /boot)" - -msgid "Set desired filesystem for a partition" -msgstr "Встановіть бажану файлову систему для розділу" - -msgid "Abort" -msgstr "Перервати" - -msgid "Hostname" -msgstr "Ім'я хоста" - -msgid "Not configured, unavailable unless setup manually" -msgstr "Не налаштовано, недоступно, якщо не налаштувати вручну" - -msgid "Timezone" -msgstr "Часовий пояс" - -msgid "Set/Modify the below options" -msgstr "Встановіть/змініть параметри нижче" - -msgid "Install" -msgstr "Встановити" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"Щоб пропустити, використовуйте ESC\n" -"\n" - -msgid "Suggest partition layout" -msgstr "Запропонувати розмітку розділів" - -msgid "Enter a password: " -msgstr "Введіть пароль: " - -msgid "Enter a encryption password for {}" -msgstr "Введіть пароль шифрування для {}" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "Введіть пароль шифрування диска (залиште порожнім, щоб шифрування не було): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "Створіть необхідного суперкористувача з правами sudo: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "Введіть пароль root (залиште порожнім, щоб вимкнути root): " - -msgid "Password for user \"{}\": " -msgstr "Пароль для користувача \"{}\": " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "Перевірка наявності додаткових пакетів (це може зайняти кілька секунд)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "Бажаєте використовувати автоматичну синхронізацію часу (NTP) із серверами часу за замовчуванням?\n" - -msgid "" -"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" -"For more information, please check the Arch wiki" -msgstr "" -"Щоб NTP працював, може знадобитися апаратний час та інші кроки після налаштування.\n" -"Для отримання додаткової інформації, будь ласка, перегляньте Arch wiki" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "Введіть ім’я користувача, щоб створити додаткового користувача (залиште поле порожнім, щоб пропустити): " - -msgid "Use ESC to skip\n" -msgstr "Щоб пропустити, використовуйте ESC\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -" Оберіть об’єкт зі списку та виберіть одну з доступних дій для його виконання" - -msgid "Cancel" -msgstr "Скасувати" - -msgid "Confirm and exit" -msgstr "Підтвердити та вийти" - -msgid "Add" -msgstr "Додати" - -msgid "Copy" -msgstr "Копіювати" - -msgid "Edit" -msgstr "Редагувати" - -msgid "Delete" -msgstr "Видалити" - -msgid "Select an action for '{}'" -msgstr "Оберіть дію для \"{}\"" - -msgid "Copy to new key:" -msgstr "Копіювати в новий ключ:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "Невідомий тип nic: {}. Можливі значення: {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"Ось конфігурація, яку ви обрали:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Pacman вже запущено, чекаємо максимум 10 хвилин, поки він завершиться." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "Попереднє блокування pacman не завершено. Будь ласка, очистіть усі наявні сеанси pacman перед використанням archinstall." - -msgid "Choose which optional additional repositories to enable" -msgstr "Виберіть, які додаткові репозиторії потрібно ввімкнути" - -msgid "Add a user" -msgstr "Додати користувача" - -msgid "Change password" -msgstr "Змінити пароль" - -msgid "Promote/Demote user" -msgstr "Підвищити/понизити користувача" - -msgid "Delete User" -msgstr "Видалити користувача" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"Вкажіть нового користувача\n" - -msgid "User Name : " -msgstr "Ім'я користувача : " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "Чи має {} бути суперкористувачем (sudoer)?" - -msgid "Define users with sudo privilege: " -msgstr "Визначте користувачів із привілеєм sudo: " - -msgid "No network configuration" -msgstr "Відсутня конфігурація мережі" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "Встановіть потрібні підтома на розділі btrfs" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"Оберіть, на якому розділі встановити підтома" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "Керування підтомами btrfs для поточного розділу" - -msgid "No configuration" -msgstr "Конфігурація відсутня" - -msgid "Save user configuration" -msgstr "Зберегти конфігурацію користувача" - -msgid "Save user credentials" -msgstr "Зберегти облікові дані користувача" - -msgid "Save disk layout" -msgstr "Зберегти схему розмітки диска" - -msgid "Save all" -msgstr "Зберегти все" - -msgid "Choose which configuration to save" -msgstr "Оберіть, яку конфігурацію зберегти" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "Введіть каталог для конфігурацій, які потрібно зберегти: " - -msgid "Not a valid directory: {}" -msgstr "Недійсний каталог: {}" - -msgid "The password you are using seems to be weak," -msgstr "Пароль, який ви використовуєте, здається слабким," - -msgid "are you sure you want to use it?" -msgstr "ви впевнені, що хочете використовувати його?" - -msgid "Optional repositories" -msgstr "Необов'язкові репозиторії" - -msgid "Save configuration" -msgstr "Зберегти конфігурацію" - -msgid "Missing configurations:\n" -msgstr "Відсутні конфігурації:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "Потрібно вказати або root-пароль, або принаймні 1 суперкористувача" - -msgid "Manage superuser accounts: " -msgstr "Керувати обліковими записами суперкористувачів: " - -msgid "Manage ordinary user accounts: " -msgstr "Керуйте обліковими записами звичайних користувачів: " - -msgid " Subvolume :{:16}" -msgstr " Підтом :{:16}" - -msgid " mounted at {:16}" -msgstr " змонтовано в {:16}" - -msgid " with option {}" -msgstr " з опцією {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -" Заповніть потрібні значення для нового підтому \n" - -msgid "Subvolume name " -msgstr "Назва підтому " - -msgid "Subvolume mountpoint" -msgstr "Точка монтування підтому" - -msgid "Subvolume options" -msgstr "Опції підтому" - -msgid "Save" -msgstr "Зберегти" - -msgid "Subvolume name :" -msgstr "Назва підтому :" - -msgid "Select a mount point :" -msgstr "Оберіть точку монтування :" - -msgid "Select the desired subvolume options " -msgstr "Оберіть потрібні параметри підтому " - -msgid "Define users with sudo privilege, by username: " -msgstr "Визначте користувачів із привілеєм sudo за іменем користувача: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] Файл журналу було створено тут: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "Чи бажаєте ви використовувати підтоми BTRFS зі структурою за замовчуванням?" - -msgid "Would you like to use BTRFS compression?" -msgstr "Бажаєте використовувати стиснення BTRFS?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "Бажаєте створити окремий розділ для /home?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "Вибрані диски не мають мінімальної ємності, необхідної для автоматичної пропозиції\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "Мінімальна ємність для розділу /home: {} Гб\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Мінімальна ємність для розділу Arch Linux: {} Гб" - -msgid "Continue" -msgstr "Продовжити" - -msgid "yes" -msgstr "так" - -msgid "no" -msgstr "ні" - -msgid "set: {}" -msgstr "обрано: {}" - -msgid "Manual configuration setting must be a list" -msgstr "Налаштування ручної конфігурації має бути списком" - -msgid "No iface specified for manual configuration" -msgstr "Не вказано iface для ручного налаштування" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "Ручна конфігурація nic без автоматичного DHCP вимагає IP-адреси" - -msgid "Add interface" -msgstr "Додати інтерфейс" - -msgid "Edit interface" -msgstr "Редагувати інтерфейс" - -msgid "Delete interface" -msgstr "Видалити інтерфейс" - -msgid "Select interface to add" -msgstr "Оберіть інтерфейс для додавання" - -msgid "Manual configuration" -msgstr "Ручне налаштування" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "Позначити/зняти позначку розділу як стисненого (лише btrfs)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "Пароль, який ви використовуєте, здається слабким. Ви впевнені, що бажаєте його використовувати?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "Надає вибір середовищ робочого столу та тайлінгових диспетчерів вікон, наприклад gnome, kde, sway" - -msgid "Select your desired desktop environment" -msgstr "Оберіть бажане середовище робочого столу" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "Дуже проста інсталяція, яка дозволяє вам налаштувати Arch Linux на свій розсуд." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "Надає вибір різних серверних пакетів для встановлення та ввімкнення, наприклад httpd, nginx, mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "Виберіть, які сервери встановити, якщо жодного, буде виконано мінімальну інсталяцію" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "Встановлює мінімальну систему, а також xorg і графічні драйвери." - -msgid "Press Enter to continue." -msgstr "Натисніть Enter, щоб продовжити." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "Бажаєте підключитися використовуючи chroot до новоствореної інсталяції та виконати додаткову конфігурацію після інсталяції?" - -msgid "Are you sure you want to reset this setting?" -msgstr "Ви впевнені, що бажаєте скинути це налаштування?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "Оберіть один або кілька жорстких дисків для використання та налаштування\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "Будь-які зміни до існуючих налаштувань призведуть до скидання схеми розмітки диска!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "Якщо ви скинете вибір жорсткого диска, це також скине поточну схему розмітки диска. Ви впевнені?" - -msgid "Save and exit" -msgstr "Зберегти та вийти" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"містить розділи в черзі, це видалить їх, ви впевнені?" - -msgid "No audio server" -msgstr "Аудіосервер відсутній" - -msgid "(default)" -msgstr "(типово)" - -msgid "Use ESC to skip" -msgstr "Щоб пропустити, використовуйте ESC" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"Використовуйте CTRL+C, щоб скинути поточний вибір\n" -"\n" - -msgid "Copy to: " -msgstr "Копіювати до: " - -msgid "Edit: " -msgstr "Редагувати: " - -msgid "Key: " -msgstr "Ключ: " - -msgid "Edit {}: " -msgstr "Редагувати {}: " - -msgid "Add: " -msgstr "Додати: " - -msgid "Value: " -msgstr "Значення: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "Ви можете пропустити вибір диска та розділення та скористатися будь-яким налаштуванням диска, змонтованим у /mnt (експериментально)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "Виберіть один із дисків або пропустіть і використовуйте /mnt за замовчуванням" - -msgid "Select which partitions to mark for formatting:" -msgstr "Виберіть, які розділи позначити для форматування:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "Використовуйте HSM, щоб розблокувати зашифрований диск" - -msgid "Device" -msgstr "Пристрій" - -msgid "Size" -msgstr "Розмір" - -msgid "Free space" -msgstr "Вільний простір" - -msgid "Bus-type" -msgstr "Тип шини" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "Потрібно вказати або root-пароль, або принаймні 1 користувача з правами sudo" - -msgid "Enter username (leave blank to skip): " -msgstr "Введіть ім'я користувача (залиште порожнім, щоб пропустити): " - -msgid "The username you entered is invalid. Try again" -msgstr "Введене вами ім'я користувача недійсне. Спробуйте знову" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "Чи має \"{}\" бути суперкористувачем (sudo)?" - -msgid "Select which partitions to encrypt" -msgstr "Виберіть розділи для шифрування" - -msgid "very weak" -msgstr "дуже слабкий" - -msgid "weak" -msgstr "слабкий" - -msgid "moderate" -msgstr "помірний" - -msgid "strong" -msgstr "сильний" - -msgid "Add subvolume" -msgstr "Додати підтом" - -msgid "Edit subvolume" -msgstr "Редагувати підтом" - -msgid "Delete subvolume" -msgstr "Видалити підтом" - -msgid "Configured {} interfaces" -msgstr "Налаштовані інтерфейси {}" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "Цей параметр вмикає кількість паралельних завантажень, які можуть відбуватися під час встановлення" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"Введіть кількість паралельних завантажень, які потрібно ввімкнути.\n" -" (Введіть значення від 1 до {})\n" -"Примітка:" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - Максимальне значення : {} ( Дозволяє {} паралельних завантажень, дозволяє {} завантажень за раз )" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - Мінімальне значення : 1 ( дозволяє 1 паралельне завантаження, дозволяє 2 завантаження одночасно )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - Вимкнути/Типово : 0 ( Вимикає паралельне завантаження, дозволяє лише 1 завантаження за раз )" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "Некоректне введення! Повторіть спробу з правильним введенням [від 1 до {max_downloads}, або 0 для вимкнення]" - -msgid "Parallel Downloads" -msgstr "Паралельні Завантаження" - -msgid "ESC to skip" -msgstr "ESC, щоб пропустити" - -msgid "CTRL+C to reset" -msgstr "CTRL+C для скидання" - -msgid "TAB to select" -msgstr "TAB для вибору" - -msgid "[Default value: 0] > " -msgstr "[Значення за замовчуванням: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "Щоб мати можливість використовувати цей переклад, будь ласка, вручну встановіть шрифт, який підтримує мову." - -msgid "The font should be stored as {}" -msgstr "Шрифт слід зберігати як {}" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "Archinstall потребує привілегії суперкористувача (Root). Скористайтеся --help для отримання додаткової інформації." - -msgid "Select an execution mode" -msgstr "Виберіть режим виконання" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "Не вдалося отримати профіль з вказаного URL: {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "Профілі повинні мати унікальні назви, але виявлено дублікати назв профілів: {}" - -msgid "Select one or more devices to use and configure" -msgstr "Оберіть один або кілька жорстких дисків для використання та налаштування" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "Якщо ви скинете вибір жорсткого диска, це також скине поточну схему розмітки диска. Ви впевнені?" - -msgid "Existing Partitions" -msgstr "Існуючі розділи" - -msgid "Select a partitioning option" -msgstr "Оберіть існуючу опцію" - -msgid "Enter the root directory of the mounted devices: " -msgstr "Введіть кореневий каталог змонтованих пристроїв: " - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "Мінімальна ємність для розділу /home: {} Гб\n" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "Мінімальна ємність для розділу Arch Linux: {} Гб" - -msgid "This is a list of pre-programmed profiles_bck, they might make it easier to install things like desktop environments" -msgstr "Це список попередньо запрограмованих профілів, вони можуть спростити встановлення таких речей, як середовища робочого столу" - -msgid "Current profile selection" -msgstr "Поточний вибір профілів" - -msgid "Remove all newly added partitions" -msgstr "Прибрати всі новостворені розділи" - -msgid "Assign mountpoint" -msgstr "Призначити точку монтування для розділу" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "Позначити/зняти позначку з розділу для форматування (видалить дані)" - -msgid "Mark/Unmark as bootable" -msgstr "Позначити/Зняти позначку завантажувального розділу" - -msgid "Change filesystem" -msgstr "Змінити файлову систему" - -msgid "Mark/Unmark as compressed" -msgstr "Позначити/зняти позначку розділу як стисненого (лише btrfs)" - -msgid "Set subvolumes" -msgstr "Налаштувати підтоми" - -msgid "Delete partition" -msgstr "Видалити розділ" - -msgid "Partition" -msgstr "Розділ" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "Цей розділ наразі зашифрований. Щоб його відформатувати, потрібно вказати файлову систему" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "Точки монтування розділів відносяться до внутрішньої інсталяції, наприклад, завантажувач буде знаходитись в /boot." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "Якщо вказано точку монтування /boot, цей розділ також буде позначено як завантажувальний." - -msgid "Mountpoint: " -msgstr "Точка монтування: " - -msgid "Current free sectors on device {}:" -msgstr "Вільні сектора на {}:" - -msgid "Total sectors: {}" -msgstr "Сектори: {}" - -msgid "Enter the start sector (default: {}): " -msgstr "Введіть початковий сектор (відсоток або номер блоку, за замовчуванням: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "Введіть кінцевий сектор розділу (відсоток або номер блоку, наприклад: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "Це видалить усі щойно додані розділи, продовжити?" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "Управління розділами: {}" - -#, python-brace-format -msgid "Total length: {}" -msgstr "Загальна довжина: {}" - -msgid "Encryption type" -msgstr "Тип шифрування" - -msgid "Iteration time" -msgstr "Час ітерації" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "Введіть час ітерації для шифрування LUKS (в мілісекундах)" - -msgid "Higher values increase security but slow down boot time" -msgstr "Вищі значення підвищують безпеку, але сповільнюють час запуску системи" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "Стандартно: 10000мс, Рекомендований діапазон - 1000-60000" - -msgid "Iteration time cannot be empty" -msgstr "Час ітерації не може бути порожнім" - -msgid "Iteration time must be at least 100ms" -msgstr "Час ітерації має бути щонайменше 100мс" - -msgid "Iteration time must be at most 120000ms" -msgstr "Час ітерації має бути не більше 120000мс" - -msgid "Please enter a valid number" -msgstr "Будь ласка, введіть дійсне число" - -msgid "Partitions" -msgstr "Розділи" - -msgid "No HSM devices available" -msgstr "Немає доступних пристроїв HSM" - -msgid "Partitions to be encrypted" -msgstr "Розділи, які потрібно зашифрувати" - -msgid "Select disk encryption option" -msgstr "Оберіть параметр шифрування диска" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "Оберіть пристрій FIDO2 для використання HSM" - -msgid "Use a best-effort default partition layout" -msgstr "Використовувати отпимальну схему розмітки розділів за замовчуванням" - -msgid "Manual Partitioning" -msgstr "Ручна розмітка розділів" - -msgid "Pre-mounted configuration" -msgstr "Попередньо змонтована конфігурація" - -msgid "Unknown" -msgstr "Невідомо" - -msgid "Partition encryption" -msgstr "Шифрування розділу" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr " ! Форматування {} в " - -msgid "← Back" -msgstr "← Назад" - -msgid "Disk encryption" -msgstr "Шифрування диску" - -msgid "Configuration" -msgstr "Конфігурація" - -msgid "Password" -msgstr "Пароль" - -msgid "All settings will be reset, are you sure?" -msgstr "Усі налаштування буде скинуто, ви впевнені?" - -msgid "Back" -msgstr "Назад" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "Будь ласка, виберіть, який вітальник встановити для обраних профілів: {}" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "Тип середовища: {}" - -msgid "The proprietary Nvidia driver is not supported by Sway. It is likely that you will run into issues, are you okay with that?" -msgstr "Пропрієтарні драйвера Nvidia не підтримуються Sway. Існує ймовірність виникнення проблем. Продовжити попри це?" - -msgid "Installed packages" -msgstr "Встановленні пакуни" - -msgid "Add profile" -msgstr "Додайте профіль" - -msgid "Edit profile" -msgstr "Налаштувати профіль" - -msgid "Delete profile" -msgstr "Видалити профіль" - -msgid "Profile name: " -msgstr "Назва профілю: " - -msgid "The profile name you entered is already in use. Try again" -msgstr "Введене вами ім'я користувача вже використовується. Спробуйте знов" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "Напишіть додаткові пакети для інсталяції (розділені пробілами, залиште порожнім, щоб пропустити): " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "Напишіть сервіси що увімкнути з цим профілем (розділені пробілами, залиште порожнім, щоб пропустити): " - -msgid "Should this profile be enabled for installation?" -msgstr "Чи повинен цей профіль бути увімкненим для встановлення?" - -msgid "Create your own" -msgstr "Створіть свій власний" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"Оберіть графічний драйвер або залиште поле пустим, щоб установити всі драйвери з відкритим вихідним кодом" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway потребує доступ до вашого обладнання" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Надайте Sway доступ до вашого обладнання" - -msgid "Graphics driver" -msgstr "Графічні драйвери" - -msgid "Greeter" -msgstr "Дисплейний менеджер" - -msgid "Please chose which greeter to install" -msgstr "Виберіть, який дисплейний менеджер встановлювати" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "Список попередньо налаштованих default_profiles" - -msgid "Disk configuration" -msgstr "Конфігурація диску" - -msgid "Profiles" -msgstr "Профіль" - -msgid "Finding possible directories to save configuration files ..." -msgstr "Пошук можливих тек для збереження файлів конфігурації ..." - -msgid "Select directory (or directories) for saving configuration files" -msgstr "Оберіть шлях (або шляхи) для збереження конфігураційних файлів" - -msgid "Add a custom mirror" -msgstr "Додати користувацьке дзеркало" - -msgid "Change custom mirror" -msgstr "Змінити користувацьке дзеркало" - -msgid "Delete custom mirror" -msgstr "Прибрати власне дзеркало" - -msgid "Enter name (leave blank to skip): " -msgstr "Введіть ім'я користувача (залиште порожнім, щоб пропустити): " - -msgid "Enter url (leave blank to skip): " -msgstr "Введіть URL (залиште порожнім, щоб пропустити): " - -msgid "Select signature check option" -msgstr "Оберіть варіант перевірки підпису шифрування" - -msgid "Select signature option" -msgstr "Оберіть параметр шифрування диска" - -msgid "Custom mirrors" -msgstr "Користувацькі дзеркала" - -msgid "Defined" -msgstr "Задано" - -msgid "Save user configuration (including disk layout)" -msgstr "Зберегти конфігурацію користувача (враховуючи поділ диску)" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"Введіть каталог для збереження конфігурацій (автодоповнення з Tab увімкнене)\n" -"Каталог для збереження: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"Чи хочете ви зберегти {} файл(и) конфігурацій до задоного місця?\n" -"\n" -"{}" - -msgid "Saving {} configuration files to {}" -msgstr "Зберегти {} файл(ів) конфігурацій до {}" - -msgid "Mirrors" -msgstr "Дзеркала" - -msgid "Mirror regions" -msgstr "Регіони дзеркал" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - Максимальне значення : {} ( Дозволяє {} паралельних завантажень, дозволяє {max_downloads+1} завантажень за раз )" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "Некоректне введення! Повторіть спробу з валідним введенням [від 1 до {} або 0 для вимкнення]" - -msgid "Locales" -msgstr "Локалізації" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "Використовувати NetworkManager (необхідний для графічного налаштування Інтернету в GNOME та KDE)" - -msgid "Total: {} / {}" -msgstr "Загалом: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "До всіх заданих значень можна дописати суфікс одиниці виміру: B, KB, KiB, MB, MiB..." - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "Якщо немає жодного суфіксу, значення вважається сектором" - -msgid "Enter start (default: sector {}): " -msgstr "Введіть початковий сектор (відсоток або номер блоку, за замовчуванням: {}): " - -msgid "Enter end (default: {}): " -msgstr "Введіть початковий сектор (відсоток або номер блоку, за замовчуванням: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "Неможливо визначити пристрої fido2. Чи встановлено libfido2?" - -msgid "Path" -msgstr "Шлях" - -msgid "Manufacturer" -msgstr "Виробник" - -msgid "Product" -msgstr "Модель" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "Неправильна конфігурація: {error}" - -msgid "Type" -msgstr "Тип" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "Цей параметр вмикає кількість паралельних завантажень, які можуть відбуватися під час встановлення" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"Введіть кількість паралельних завантажень, які потрібно ввімкнути.\n" -"\n" -"Примітка:\n" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - Максимальне рекомендоване значення : {} ( Дозволяє {} паралельних завантажень за раз )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - Вимкнути/Типово : 0 ( Вимикає паралельне завантаження, дозволяє лише 1 завантаження за раз )\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "Некоректне введення! Повторіть спробу з правильним введенням [від 1 до {} або 0 для вимкнення]" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Hyprland потребує доступу до інформації про ваше обладнання (клавіатура, миша, так далі)" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Надайте Hyprland доступ до вашого обладнання" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "Усі введені значення повинні мати суфікс з виміром: %, B, KB, KiB, MB, MiB..." - -msgid "Would you like to use unified kernel images?" -msgstr "Ви бажаєте використовувати об'єднані (уніфіковані) образи ядра?" - -msgid "Unified kernel images" -msgstr "Об'єднані (уніфіковані) образи ядра" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "Очікування на синхронізацію часу (timedatactl show) для продовження." - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Синхронізація часу не закінчується, поки ви чекаєте - перевірте документацію для можливих рішень: https://archinstall.readthedocs.io/" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "Пропуск очікування автоматичної синхронізації часу (це може спричинити проблеми, якщо час буде невірно синхронізований під час встановлення)" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "Очікування на синхронізацію ключів Arch Linux (archlinux-keyring-wkd-sync)." - -msgid "Selected profiles: " -msgstr "Вибрані профілі: " - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Синхронізація часу не закінчується, поки ви чекаєте - перевірте документацію для можливих рішень: https://archinstall.readthedocs.io/" - -msgid "Mark/Unmark as nodatacow" -msgstr "Позначити/зняти позначку nodatacow" - -msgid "Would you like to use compression or disable CoW?" -msgstr "Бажаєте ввімкнути стиснення або вимкнути CoW?" - -msgid "Use compression" -msgstr "Використовувати стиснення" - -msgid "Disable Copy-on-Write" -msgstr "Вимкнути Copy-on-Write" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "Надає вибір середовищ робочого столу та тайлінгових диспетчерів вікон, наприклад GNOME, KDE Plasma, Sway" - -#, python-brace-format -msgid "Configuration type: {}" -msgstr "Тип конфігурації: {}" - -msgid "LVM configuration type" -msgstr "Тип конфігурації LVM" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "Шифрування диска за допомогою LVM з більше ніж двома розділами наразі не підтримується" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "Використовувати NetworkManager (необхідний для графічного налаштування Інтернету в GNOME та KDE Plasma)" - -msgid "Select a LVM option" -msgstr "Оберіть опцію LVM" - -msgid "Partitioning" -msgstr "Розподіл" - -msgid "Logical Volume Management (LVM)" -msgstr "Logical Volume Management (LVM)" - -msgid "Physical volumes" -msgstr "Фізичні томи" - -msgid "Volumes" -msgstr "Томи" - -msgid "LVM volumes" -msgstr "Томи LVM" - -msgid "LVM volumes to be encrypted" -msgstr "Томи LVM, які потрібно зашифрувати" - -msgid "Select which LVM volumes to encrypt" -msgstr "Виберіть томи LVM для шифрування" - -msgid "Default layout" -msgstr "Типова структура" - -msgid "No Encryption" -msgstr "Без шифрування" - -msgid "LUKS" -msgstr "LUKS" - -msgid "LVM on LUKS" -msgstr "LVM на LUKS" - -msgid "LUKS on LVM" -msgstr "LUKS на LVM" - -msgid "Yes" -msgstr "Так" - -msgid "No" -msgstr "Ні" - -msgid "Archinstall help" -msgstr "Допомога з Archinstall" - -msgid " (default)" -msgstr " (типово)" - -msgid "Press Ctrl+h for help" -msgstr "Натисніть Ctrl+h для допомоги" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "Оберіть опцію для надання Sway доступ до вашого обладнання" - -msgid "Seat access" -msgstr "Доступ до місця" - -msgid "Mountpoint" -msgstr "Точка монтування" - -msgid "HSM" -msgstr "HSM" - -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "Введіть пароль шифрування диска (залиште порожнім, щоб шифрування не було):" - -msgid "Disk encryption password" -msgstr "Пароль шифрування" - -msgid "Partition - New" -msgstr "Розділ - Новий" - -msgid "Filesystem" -msgstr "Файлова система" - -msgid "Invalid size" -msgstr "Некорректний розмір" - -msgid "Start (default: sector {}): " -msgstr "Введіть початковий сектор (відсоток або номер блоку, за замовчуванням: {}): " - -msgid "End (default: {}): " -msgstr "Введіть кінцевий сектор (відсоток або номер блоку, за замовчуванням: {}): " - -msgid "Subvolume name" -msgstr "Назва підтому" - -msgid "Disk configuration type" -msgstr "Конфігурація диску" - -msgid "Root mount directory" -msgstr "Точка монтування Root" - -msgid "Select language" -msgstr "Мова локалізації" - -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "Напишіть додаткові пакети для інсталяції (розділені пробілами, залиште порожнім, щоб пропустити):" - -msgid "Invalid download number" -msgstr "Невірна кількість завантажень" - -msgid "Number downloads" -msgstr "Кількість завантажень" - -msgid "The username you entered is invalid" -msgstr "Введене вами ім'я користувача недійсне" - -msgid "Username" -msgstr "Ім'я користувача" - -#, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "Чи має \"{}\" бути суперкористувачем (sudo)?\n" - -msgid "Interfaces" -msgstr "Інтерфейси" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "Ви повинні ввести правильний IP-адрес в режимі конфігурації IP" - -msgid "Modes" -msgstr "Режими" - -msgid "IP address" -msgstr "IP-адреса" - -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "Введіть IP-адресу свого шлюзу (маршрутизатора) або залиште поле порожнім, якщо немає:" - -msgid "Gateway address" -msgstr "Адреса шлюзу" - -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "Введіть ваші DNS-сервери (розділені пробілами, залиште порожнім якщо їх немає):" - -msgid "DNS servers" -msgstr "DNS- сервера" - -msgid "Configure interfaces" -msgstr "Налаштування інтерфейсів" - -msgid "Kernel" -msgstr "Ядра" - -msgid "UEFI is not detected and some options are disabled" -msgstr "UEFI не виявлено, деякі параметри вимкнено" - -msgid "Info" -msgstr "Інформація" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "Пропрієтарні драйвера Nvidia не підтримуються Sway." - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "Існує ймовірність виникнення проблем. Продовжити попри це?" - -msgid "Main profile" -msgstr "Головний профіль" - -msgid "Confirm password" -msgstr "Підтвердити пароль" - -msgid "The confirmation password did not match, please try again" -msgstr "Паролі не співпадають, спробуйте знову" - -msgid "Not a valid directory" -msgstr "Недійсний каталог" - -msgid "Would you like to continue?" -msgstr "Бажаєте продовжити?" - -msgid "Directory" -msgstr "Каталог" - -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "Введіть каталог для конфігурацій, які потрібно зберегти:" - -#, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "Чи бажаєте зберегти файл (и) конфігурацій до {}?" - -msgid "Enabled" -msgstr "Увімкнено" - -msgid "Disabled" -msgstr "Вимкнено" - -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "Будь ласка, надішліть цю проблему (та файл) за адресою https://github.com/archlinux/archinstall/issues" - -msgid "Mirror name" -msgstr "Назва дзеркала" - -msgid "Url" -msgstr "URL" - -msgid "Select signature check" -msgstr "Оберіть варіант перевірки підпису шифрування" - -msgid "Select execution mode" -msgstr "Оберіть режим роботи" - -msgid "Press ? for help" -msgstr "Натисніть ? для допомоги" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "Надайте Hyprland доступ до вашого обладнання" - -msgid "Additional repositories" -msgstr "Додаткові репозиторії" - -msgid "NTP" -msgstr "NTP" - -msgid "Swap on zram" -msgstr "Файли підкачки на zram" - -msgid "Name" -msgstr "Назва" - -msgid "Signature check" -msgstr "Перевірка підпису шифрування" - -#, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "Обраний сегмент вільного місця на пристрої {}:" - -#, python-brace-format -msgid "Size: {} / {}" -msgstr "Розмір: {} / {}" - -#, python-brace-format -msgid "Size (default: {}): " -msgstr "Розмір (типово: {}): " - -msgid "HSM device" -msgstr "Пристрій HSM" - -msgid "Some packages could not be found in the repository" -msgstr "Деякі пакети можуть бути не знайдені в репозиторії" - -msgid "User" -msgstr "Ім'я користувача" - -msgid "The specified configuration will be applied" -msgstr "Обрана конфігурація буде використана" - -msgid "Wipe" -msgstr "Стерти" - -msgid "Mark/Unmark as XBOOTLDR" -msgstr "Позначити / Зняти позначку XBOOTLDR" - -msgid "Loading packages..." -msgstr "Завантажування пакетів..." - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "Виберіть будь-які пакети зі списку, які мають бути встановлені додатково" - -msgid "Add a custom repository" -msgstr "Додати користувацький репозиторій" - -msgid "Change custom repository" -msgstr "Змінити користувацький репозиторій" - -msgid "Delete custom repository" -msgstr "Видалити користувацький репозиторій" - -msgid "Repository name" -msgstr "Назва репозиторію" - -msgid "Add a custom server" -msgstr "Додати користувацький сервер" - -msgid "Change custom server" -msgstr "Оберіть користувацький сервер" - -msgid "Delete custom server" -msgstr "Видалити користувацький сервер" - -msgid "Server url" -msgstr "URL сервера" - -msgid "Select regions" -msgstr "Обрати регіони" - -msgid "Add custom servers" -msgstr "Додати користувацькі сервера" - -msgid "Add custom repository" -msgstr "Додати користувацький репозиторій" - -msgid "Loading mirror regions..." -msgstr "Завантаження регіонів дзеркал..." - -msgid "Mirrors and repositories" -msgstr "Дзеркала та репозиторії" - -msgid "Selected mirror regions" -msgstr "Обрані регіони дзеркал" - -msgid "Custom servers" -msgstr "Користувацькі сервера" - -msgid "Custom repositories" -msgstr "Користувацькі репозиторії" - -msgid "Only ASCII characters are supported" -msgstr "Підтримуються лише ASCII символи" - -msgid "Show help" -msgstr "Показати допомогу" - -msgid "Exit help" -msgstr "Вийти з допомоги" - -msgid "Preview scroll up" -msgstr "Прокрутка перегляду догори" - -msgid "Preview scroll down" -msgstr "Прокрутка перегляду вниз" - -msgid "Move up" -msgstr "Перейти догори" - -msgid "Move down" -msgstr "Перейти вниз" - -msgid "Move right" -msgstr "Повернути праворуч" - -msgid "Move left" -msgstr "Повернути ліворуч" - -msgid "Jump to entry" -msgstr "Перейти до елемента" - -msgid "Skip selection (if available)" -msgstr "Пропустити вибір (якщо можливо)" - -msgid "Reset selection (if available)" -msgstr "Скинути вибір (якщо можливо)" - -msgid "Select on single select" -msgstr "Вибір при одиночному виборі" - -msgid "Select on multi select" -msgstr "Вибір при множинному виборі" - -msgid "Reset" -msgstr "Скинути" - -msgid "Skip selection menu" -msgstr "Пропустити меню вибору" - -msgid "Start search mode" -msgstr "Запустити режим пошуку" - -msgid "Exit search mode" -msgstr "Вийти з режиму пошуку" - -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "labwc потребує доступ до вашого місця (набору апаратних пристроїв, таких як клавіатура, миша тощо)" - -msgid "Choose an option to give labwc access to your hardware" -msgstr "Оберіть опцію для надання labwc доступу до вашого обладнання" - -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "niri потребує доступ до вашого місця (набору апаратних пристроїв, таких як клавіатура, миша тощо)" - -msgid "Choose an option to give niri access to your hardware" -msgstr "Оберіть опцію для надання niri доступу до вашого обладнання" - -msgid "Mark/Unmark as ESP" -msgstr "Позначити/зняти позначку ESP розділу" - -msgid "Package group:" -msgstr "Група пакетів:" - -msgid "Exit archinstall" -msgstr "Покинути Archinstall" - -msgid "Reboot system" -msgstr "Перезавантажити систему" - -msgid "chroot into installation for post-installation configurations" -msgstr "бажаєте підключитися використовуючи chroot до новоствореної інсталяції та виконати додаткову конфігурацію" - -msgid "Installation completed" -msgstr "Встановлення завершено" - -msgid "What would you like to do next?" -msgstr "Що ви хочете зробити наступним?" - -#, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "Виберіть, режим для налаштування \"{}\"" - -msgid "Incorrect credentials file decryption password" -msgstr "Невірний пароль для розшифрування файлу облікових даних" - -msgid "Incorrect password" -msgstr "Неправильний пароль" - -msgid "Credentials file decryption password" -msgstr "Пароль розшифрування файлу облікових даних" - -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "Чи бажаєте зашифрувати user_credintials.json?" - -msgid "Credentials file encryption password" -msgstr "Пароль розшифрування файлу облікових даних" - -#, python-brace-format -msgid "Repositories: {}" -msgstr "Репоиторії: {}" - -msgid "New version available" -msgstr "Доступна нова версія" - -msgid "Passwordless login" -msgstr "Вхід без паролю" - -msgid "Second factor login" -msgstr "Другий фактор входу" - -msgid "Bluetooth" -msgstr "Bluetooth" - -msgid "Would you like to configure Bluetooth?" -msgstr "Бажаєте налаштувати Bluetooth?" - -msgid "Authentication" -msgstr "Автентифікація" - -msgid "Applications" -msgstr "Додатки" - -msgid "U2F login method: " -msgstr "Метод входу для пристрою двофакторної автентифікації: " - -msgid "Passwordless sudo: " -msgstr "Sudo без паролю: " - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "Тип знімку Btrfs: {}" - -msgid "Syncing the system..." -msgstr "Синхронізація системи..." - -msgid "Value cannot be empty" -msgstr "Значення не може бути пустим" - -msgid "Snapshot type" -msgstr "Тип знімку" - -#, python-brace-format -msgid "Snapshot type: {}" -msgstr "Тип знімку: {}" - -msgid "U2F login setup" -msgstr "Налаштування входу з пристроєм двофакторної авторизації" - -msgid "No U2F devices found" -msgstr "Не знайдено жодного пристрою двофакторної автентифікації" - -msgid "U2F Login Method" -msgstr "Метод входу для пристрою двофакторної автентифікації" - -msgid "Enable passwordless sudo?" -msgstr "Увімкнути sudo без паролю?" - -#, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "Налаштування пристроя двофакторної автентифікації для користувача: {}" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "Ви повинні написати PIN та потім торкнутися вашого пристрою двофакторної авторизації, щоб зареєструвати його" - -msgid "Starting device modifications in " -msgstr "" - -#, fuzzy -msgid "No network connection found" -msgstr "Відсутня конфігурація мережі" - -#, fuzzy -msgid "Would you like to connect to a Wifi?" -msgstr "Бажаєте продовжити?" - -#, fuzzy -msgid "No wifi interface found" -msgstr "Налаштування інтерфейсів" - -#, fuzzy -msgid "Select wifi network to connect to" -msgstr "Оберіть один мережевий інтерфейс для налаштування" - -msgid "Scanning wifi networks..." -msgstr "" - -#, fuzzy -msgid "No wifi networks found" -msgstr "Відсутня конфігурація мережі" - -msgid "Failed setting up wifi" -msgstr "" - -#, fuzzy -msgid "Enter wifi password" -msgstr "Введіть пароль: " - -msgid "Ok" -msgstr "" diff --git a/examples/archinstall/archinstall/locales/ur/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/ur/LC_MESSAGES/base.mo deleted file mode 100644 index 20cde15..0000000 Binary files a/examples/archinstall/archinstall/locales/ur/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/ur/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/ur/LC_MESSAGES/base.po deleted file mode 100644 index be346e3..0000000 --- a/examples/archinstall/archinstall/locales/ur/LC_MESSAGES/base.po +++ /dev/null @@ -1,1754 +0,0 @@ -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] Aik log file yahan bana di gai hai: {} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " Brah e meharbani is issue (aur file) ko https://github.com/archlinux/archinstall/issues par submit krein" - -msgid "Do you really want to abort?" -msgstr "Kia aap sach mein yeh band karna chahtay hein?" - -msgid "And one more time for verification: " -msgstr "Or aik bar or verification kay liay: " - -msgid "Would you like to use swap on zram?" -msgstr "Kia aap zram par swap istimal karna chahtay hein?" - -msgid "Desired hostname for the installation: " -msgstr "Installtion kay liay pasandida hostname: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "Superuser kay liay saraf chahiay sudo marat kay sath: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "Koi azafi sarafein install kay liay (Khali chod dein saraf na honay ki sorat mein):" - -msgid "Should this user be a superuser (sudoer)?" -msgstr "Kia yeh sarif superuser (sudoer) hona chahiye?" - -msgid "Select a timezone" -msgstr "Aik timezone ka intikhab krein" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "Kia aap GRUB ko bootloader kay taur par istimal karna chahtay hein, systemd-boot ki jaga'h?" - -msgid "Choose a bootloader" -msgstr "Bootloader ka intkhab" - -msgid "Choose an audio server" -msgstr "Audio server ka intkhab" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Sirf packages jaisa ke'h base, base-devel, linux, linux-firmware, efibootmgr aur ikhti'ari profile packages hi install hein." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "Agar aap web browser chahtay hein, jaise firefox ya chromium, to aap foori taur par kar saktay hein." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "Azafi packages jo install karnay hein (space se alag krein, khali chod de'n agar kuch nahi): " - -msgid "Copy ISO network configuration to installation" -msgstr "ISO network tarteb ko installation par copy krein" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "NetworkManager istimal krein (GNOME aur KDE mein internet ko graphically tarteb karnay kay liay zaruri)" - -msgid "Select one network interface to configure" -msgstr "tarteb karnay kay liay aik network interface ka intikhab krein" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "intikhab krein ke'h \"{}\" kay liay kon sa mode tarteb karna hay ya default mode \"{}\" istimal karnay kay liay skip krein" - -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "IP aur subnet {} kay liay dar'j krein (masal kay taur par: 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "A'pnay gateway (router) IP address dar'j krein ya kuch nahi chodain: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "A'pnay DNS servers dar'j krein (space se alag, khali chodain agar koi nahi): " - -msgid "Select which filesystem your main partition should use" -msgstr "Marka'zi partition kay liay kon sa filesystem istimal karna chahtay hein intikhab krein" - -msgid "Current partition layout" -msgstr "Halia'h partition ki tarteb " - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"Is kay sath kia karna hay, intikhab krein\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "Matlooba filesystem ki type partition kay liay dar'j krein" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "Shroa'at dar'j krein (parted aka'ion me'n: s, GB, %, etc. ; default: {}): " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "A'akhrat dar'j krein (parted aka'ion me'n: s, GB, %, etc. ; masal: {}): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} me'n partitions hein, yeh mita day ga, aap sach mein yeh karna chahtay hein?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"Index kay mutabi'q partitions ko hazif krein, intikhab krein" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"Index kay mutabi'q partition ko kahan mount krna hay, intikhab krein" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * Partition mount-points installation kay andar nisbatan hein, boot /boot ki masal hogi." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "intikhab krein, partition ko kahan mount karna hay (khali chodain agar mount point hata'na hay): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"Kis partition ko format karnay kay liay mask karna hay, intikhab krein" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"Kis partition ko encrypt karna hay, intikhab krein" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"Kis partition ko bootable karna hay, intikhab krein" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"Kis partition par filesystem karna hay, intikhab krein" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "Matlooba filesystem ki type partition kay liay dar'j krein: " - -msgid "Archinstall language" -msgstr "Archinstall ki zuban" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Tamam muntkh'b drives ko mita kar aik best-effort default partition layout istimal krein" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Har infaradi drive kay sath kia karna hay (partition usage kay sath), intikhab krein" - -msgid "Select what you wish to do with the selected block devices" -msgstr "Muntkh'b block devices kay sath kia karna chahtay hein, intikhab krein" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "yeh pre-programmed profiles kia fe'hrist hay, yeh asan bnati hein install karnay mein jaisa ke'h desktop environments" - -msgid "Select keyboard layout" -msgstr "Keyboard ka layout" - -msgid "Select one of the regions to download packages from" -msgstr "Aik jaga'h kay intikhab krein, packages ko download karnay kay liay" - -msgid "Select one or more hard drives to use and configure" -msgstr "Aik yah ziada hard drives ka intikhab krein istimal aur tarteb krein" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "AMD hardware ki achi mutab'qat kay liay, aap ya to tamam open-source ya AMD / ATI options ka istimal karna chahtay hein." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "Intel hardware ki achi mutab'qat kay liay, aap ya to tamam open-source ya Intel options ka istimal karna chahtay hein.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Nvidia hardware ki achi mutab'qat kay liay, aap ya to tamam Nvidia malki'ati driver istimal karna chahtay hein.\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Intkhab krein aik graphics driver ya khali chodain tamam open-source drivers install karnay kay liay" - -msgid "All open-source (default)" -msgstr "Tamam open-source (default)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "intkhab krein konsi kernels ko istimal karna hay ya default kay liay khali chodain \"{}\"" - -msgid "Choose which locale language to use" -msgstr "intkhab krein konsi locale zuban ko istimal karna hay" - -msgid "Choose which locale encoding to use" -msgstr "intkhab krein konsi locale encoding ko istimal karna hay" - -msgid "Select one of the values shown below: " -msgstr "intkhab krein neeche diye gaye options mein se ek ka: " - -msgid "Select one or more of the options below: " -msgstr "intkhab krein neeche diye gaye options mein se ek ya ziada ka: " - -msgid "Adding partition...." -msgstr "Partition shamil ho rhi hay...." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "aap ko dar'st fs-type dar'j karna hoga jari rakhne kay liay. `man parted` dekhein valid fs-type's kay liay." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Galti: URL \"{}\" par zare fehrist profiles ka natija: " - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "Galti: JSON kay tor par \"{}\" ka natija decode nahi kia ja saka: " - -msgid "Keyboard layout" -msgstr "Keyboard ka layout" - -msgid "Mirror region" -msgstr "Mirror ka ilaqa" - -msgid "Locale language" -msgstr "Locale language" - -msgid "Locale encoding" -msgstr "Locale encoding" - -msgid "Drive(s)" -msgstr "Drive(s)" - -msgid "Disk layout" -msgstr "Disk ka layout" - -msgid "Encryption password" -msgstr "Encryption ka password" - -msgid "Swap" -msgstr "Swap" - -msgid "Bootloader" -msgstr "Bootloader" - -msgid "Root password" -msgstr "Root ka password" - -msgid "Superuser account" -msgstr "Superuser ka account" - -msgid "User account" -msgstr "Saraf ka account" - -msgid "Profile" -msgstr "Profile" - -msgid "Audio" -msgstr "Audio" - -msgid "Kernels" -msgstr "Kernels" - -msgid "Additional packages" -msgstr "Azafi packages" - -msgid "Network configuration" -msgstr "Network ki tarteb" - -msgid "Automatic time sync (NTP)" -msgstr "Khudkar time sync (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "Install ({} tarteb mojod nahi)" - -#, fuzzy -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 "" -"Aap nay harddrive ka intikhab karna chod nay ka faisla kia.\n" -"Aur jo drive setup {} (tajurbati) par mount kia gia hay, iska istimal krein gay\n" -"Intba'h: Archinstall is setup ki muta'bqat ki janch nahi karay ga\n" -"Kia aap jari rakhna chahtay hein?" - -msgid "Re-using partition instance: {}" -msgstr "Partition instance ka dubara istimal: {}" - -msgid "Create a new partition" -msgstr "Nai partition banaein" - -msgid "Delete a partition" -msgstr "Aik artition hazif" - -msgid "Clear/Delete all partitions" -msgstr "Tamam partitions hazif/mata dein" - -msgid "Assign mount-point for a partition" -msgstr "Aik partition kay liay mount-point assign krein" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "Partition ko format karne ke liay mark/unmark kre (data ko mitadega)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "Encrypt karne k liay partition ko mark/unmark krein" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "Partition ko bootable kay liay mark/unmark krein (automatic /boot hay)" - -msgid "Set desired filesystem for a partition" -msgstr "Aik partition kay liay Matlooba filesystem darj krein" - -msgid "Abort" -msgstr "Khatam krein" - -msgid "Hostname" -msgstr "Hostname" - -msgid "Not configured, unavailable unless setup manually" -msgstr "tarteb shuda'h nahi, na dast'yab hay jab tak manually set na kia jaye" - -msgid "Timezone" -msgstr "Timezone" - -msgid "Set/Modify the below options" -msgstr "Zail kay ikhtiarat ko set/tarmim krein" - -msgid "Install" -msgstr "Install" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"Chodnay kay liay ESC ka istimal krein\n" -"\n" - -msgid "Suggest partition layout" -msgstr "Partition ka layout tajwiz krein" - -msgid "Enter a password: " -msgstr "Password darj krein: " - -msgid "Enter a encryption password for {}" -msgstr "Encryption ka password {} kay liay darj krein" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "Disk encryption ka password darj krein (encryption na karnay kay liay khali chodain): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "Sudo kay mara'at kay sath super-user banaye'n: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "Root ka password darj krein (root ko disable karnay kay liay khali chodain): " - -msgid "Password for user \"{}\": " -msgstr "\"{}\" sarif kay liay password: " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "Is baat ki tasdeeq ho rhi hay kay azafi package Mand hein (is mein kuch second lag saktay hein)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "Kia Aap time ki automatic muta'bqat (NTP) default time servers kay sath istimal karna chahtay hein?\n" - -msgid "" -"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" -"For more information, please check the Arch wiki" -msgstr "" -"NTP kay kam karnay kay liay hardware ka time aur dosri tertebe'n zarori ho sakti hein\n" -"Mazeed ma'ulomat kay liay, Arch wiki check krein" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "Azafi sarif banany kay liay username darj krein (chodnay kay liay khali chodain): " - -msgid "Use ESC to skip\n" -msgstr "ESC ka istimal krein chodnay kay liay\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -"Kisi aik cheez ko fe'hrist say muntkh'b krein, aur us kay liay m'ojud actions me'n se aik ko execute krein" - -msgid "Cancel" -msgstr "Manso'kh krein" - -msgid "Confirm and exit" -msgstr "Tasdeeq krein aur bahir niklain" - -msgid "Add" -msgstr "Add" - -msgid "Copy" -msgstr "Copy krein" - -msgid "Edit" -msgstr "Edit" - -msgid "Delete" -msgstr "Hazif" - -msgid "Select an action for '{}'" -msgstr "'{}' kay liay aik action muntkh'b krein" - -msgid "Copy to new key:" -msgstr "Aik na'i key ko copy krein" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "Na mau'lom nic type: {}. Mumkin values hein {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"Yeh aapki muntkh'b terateb hein:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Pacman pehlay hi chal rha hay, maximum 10 minutes intizar hay k woh khatam ho jay." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "Pehlay say m'ojud pacman lock khatam nahi huwa. Brah'e mehrbani archinstall ka istimal karnay say pehle kisi bhi m'ojude'h pacman session ko saaf krein." - -msgid "Choose which optional additional repositories to enable" -msgstr "Konsi ikhtiari azafi repositories ko enable karna chahtay hein, muntkh'b krein" - -msgid "Add a user" -msgstr "Aik sarif sham'il krein" - -msgid "Change password" -msgstr "Password badlein" - -msgid "Promote/Demote user" -msgstr "sarif ko promote/demote krein" - -msgid "Delete User" -msgstr "sarif hazif krein" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"Aik na'y sarif ki wazah't krein\n" - -msgid "User Name : " -msgstr "Saraf ka naam: " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "Kia {} ko superuser hona chahiay (sudoer)?" - -msgid "Define users with sudo privilege: " -msgstr "sar'feen sudo mara'at kay sath hein wazah't krein: " - -msgid "No network configuration" -msgstr "Network ki koi tarteb nahi" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "Btrfs partition par matlooba subvolumes set krein" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"Jis artition par subvolumes set karna chahtay hayn, muntkh'b krein" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "Halia partition kay liay btrfs subvolumes ko manage krein" - -msgid "No configuration" -msgstr "Koi tarteb nahi" - -msgid "Save user configuration" -msgstr "sarif ki tarteb mahfoz krein" - -msgid "Save user credentials" -msgstr "sarif ki asnaa'd mahfoz krein" - -msgid "Save disk layout" -msgstr "Disk layout mahfoz krein" - -msgid "Save all" -msgstr "Tamam mahfoz krein" - -msgid "Choose which configuration to save" -msgstr "Konsi tarteb mahfoz karni hay, muntkh'b krein" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "Aik directory darj krein tarteb(on) ko mahfoz karnay kay liay: " - -msgid "Not a valid directory: {}" -msgstr "Koi wazah directory nahi: {}" - -msgid "The password you are using seems to be weak," -msgstr "Aap istimal shuda password buhat kamzor lagta hai," - -msgid "are you sure you want to use it?" -msgstr "Kia aap pur yaqeen hein isay istimal karnay par?" - -msgid "Optional repositories" -msgstr "Ikhtiari repositories" - -msgid "Save configuration" -msgstr "tartebat mahfoz krein" - -msgid "Missing configurations:\n" -msgstr "Gum shuda'h tartebat:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "Ya tu root ka password ya kam az kam 1 superuser zaror bataein" - -msgid "Manage superuser accounts: " -msgstr "superuser kay accounts ko manage krein: " - -msgid "Manage ordinary user accounts: " -msgstr "A'am sarif kay accounts ko manage krein: " - -msgid " Subvolume :{:16}" -msgstr " Subvolume :{:16}" - -msgid " mounted at {:16}" -msgstr " mount hai {:16}" - -msgid " with option {}" -msgstr " kay ikhtiar {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -" Aik na'y subvolume kay liay matlooba values ko bharhein \n" - -msgid "Subvolume name " -msgstr "Subvolume ka naam" - -msgid "Subvolume mountpoint" -msgstr "Subvolume ka mountpoint" - -msgid "Subvolume options" -msgstr "Subvolume kay ikhtiar" - -msgid "Save" -msgstr "Save" - -msgid "Subvolume name :" -msgstr "Subvolume ka naam :" - -msgid "Select a mount point :" -msgstr "Aik mount point muntkh'b krein :" - -msgid "Select the desired subvolume options " -msgstr "Matlooba subvolume options ka in'tkhab krein " - -msgid "Define users with sudo privilege, by username: " -msgstr "Sar'feen sudo mara'at kay sath hein wazah't krein, username kay sath: " - -msgid "[!] A log file has been created here: {}" -msgstr "[!] Yahan log file banai ja chuki hai: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "Kia aap BTRFS subvolumes ko default dha'nchay kay sath istimal karna chahtay hein?" - -msgid "Would you like to use BTRFS compression?" -msgstr "Kia aap BTRFS compression ko istimal karna chahtay hein?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "Kia aap /home kay liay aik alag partition bana'n chahtay hein?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "Khudkar suggestion kay liay muntkhab drives ki minimum capacity zarori nahi\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "/home partition ki minimum capacity: {}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Arch Linux partition ki minimum capacity: {}GB" - -msgid "Continue" -msgstr "Jari rakhein" - -msgid "yes" -msgstr "haan" - -msgid "no" -msgstr "nahi" - -msgid "set: {}" -msgstr "krein: {}" - -msgid "Manual configuration setting must be a list" -msgstr "Manual tarteb ki setting ki aik list honi chahiye" - -msgid "No iface specified for manual configuration" -msgstr "Manual tarteb kay liay muntkh'b iface nahi hay" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "Bagir auto DHCP kay manual nic tarteb kay liay IP address zaruri hay" - -msgid "Add interface" -msgstr "Interface shamil krein" - -msgid "Edit interface" -msgstr "Interface edit krein" - -msgid "Delete interface" -msgstr "Interface delete krein" - -msgid "Select interface to add" -msgstr "Interface shamil karnay kay liay muntkh'b krein" - -msgid "Manual configuration" -msgstr "Manual tarteb" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "Partition ko compress karnay kay liay mark/unmark krein (sirf btrfs)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "aapka dia gia password kamzor lag raha hay, aap isko istimal kay liay par yaqeen hein?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "Desktop environments aur tiling window managers ki selection muhayya krein, jaisay kay gnome, kde, sway" - -msgid "Select your desired desktop environment" -msgstr "Apnay muntkh'b desktop environment ka intikhab" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "Aik nihay't bunyadi installation, jo Arch Linux ko aapki zarorat" - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "Mukhtalif server packages ki selection muhayya krein, jaisay kay httpd, nginx, mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "Konsay servers ko install karna chahiye intkhab krein, agar koi nahi to aik minimal installation hoga" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "Aik minimal system install ho ga aur sath sath xorg aur graphics drivers bhi." - -msgid "Press Enter to continue." -msgstr "Enter duba kar jari rakhein" - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "Kia aap aik nayi installation main chroot aur post-installation configuration tarteb karna chahtay hein?" - -msgid "Are you sure you want to reset this setting?" -msgstr "Is tarte'd ko reset karnay kay liay kia aap pur yaqeen hein?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "Aik ya ziada hard drive muntkh'b krein istimal aur tarteb kay liay\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "Tay shuda setting main koi rado badal disk layout ko reset kar day gi!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "Agar aap muntikhab hardrive ko reset kartay hein tu yeh mojoda disk layout bhi reset karay gi, aap pur yaqeen hein?" - -msgid "Save and exit" -msgstr "Save krein or nikalein" - -#, fuzzy -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"me'n partitions hein, yeh mita day ga, aap sach mein yeh karna chahtay hein?" - -msgid "No audio server" -msgstr "Koi audio server nahi" - -msgid "(default)" -msgstr "(default)" - -msgid "Use ESC to skip" -msgstr "ESC ka istimal krein chodnay kay liay" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"Mojoda tarteb ko reset kay liay CTRL+C ka istimal krein\n" -"\n" - -msgid "Copy to: " -msgstr "par copy krein: " - -msgid "Edit: " -msgstr "Edit: " - -msgid "Key: " -msgstr "Key: " - -msgid "Edit {}: " -msgstr "Edit {}: " - -msgid "Add: " -msgstr "Shamil krein: " - -msgid "Value: " -msgstr "Qadar: " - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "Drive kay intikhab aur partitioning ko chodnay aur jo bhi drive-setup /mnt mojod hai ko istimal krein (experimental)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "Aik disk muntkh'b krein ya chodnay aur /mnt ko default kay tor par istimal krein" - -msgid "Select which partitions to mark for formatting:" -msgstr "Mark krein format kay liay konsay partitions ka intikhab: " - -msgid "Use HSM to unlock encrypted drive" -msgstr "Encrypted drive ko unlock kay liay HSM ka istimal krein" - -msgid "Device" -msgstr "Device" - -msgid "Size" -msgstr "Size" - -msgid "Free space" -msgstr "Khali jagah" - -msgid "Bus-type" -msgstr "Bus-type" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "Ya tu root ka password ya kam az kam 1 superuser zaror bataein" - -msgid "Enter username (leave blank to skip): " -msgstr "Saraf ka naam darj krein (no honay ki sorat mein Khali chod dein): " - -msgid "The username you entered is invalid. Try again" -msgstr "Darj shuda username galat hai, dubara koshish krein" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "Kia \"{}\" ko aik superuser (sudo) hona chahiay?" - -msgid "Select which partitions to encrypt" -msgstr "Konsi partition ko encrypt krna hai select krein" - -msgid "very weak" -msgstr "Buhat kamzor" - -msgid "weak" -msgstr "Kamzor" - -msgid "moderate" -msgstr "Darmiyana" - -msgid "strong" -msgstr "Mazbot" - -msgid "Add subvolume" -msgstr "Subvolume shamil krein" - -msgid "Edit subvolume" -msgstr "Subvolume ko edit krein" - -msgid "Delete subvolume" -msgstr "Subvolume ko delete krein" - -msgid "Configured {} interfaces" -msgstr "Tateb shuda {} interfaces" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "yeh option installation kay duran parallel download ki number ko enable karta hai" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"Parallel download ki number daalain.\n" -" (1 se {} darmiyan daalain)\n" -"Yaa daasht:" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - Maximum value : {} ( {} Parallel downloads ki ajazat, {} downloads ki aik waqat main ajazat hai )" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - Minimum value : 1 ( 1 Parallel download ki ajazat, 2 downloads ki aik waqat main ajazat hai )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - Disable/Default : 0 ( Parallel download ko disable krnay kay liay, sirf 1 download ki aik waqat main ajazat hai )" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "Darj shuda galat hai! Dubara koshish krein sahi darj kar nay ki [1 say {max_downloads}, ya 0 disable kay liay]" - -msgid "Parallel Downloads" -msgstr "Parallel Downloads" - -msgid "ESC to skip" -msgstr "Skip kay liay ESC" - -msgid "CTRL+C to reset" -msgstr "Reset kay liay CTRL+C" - -msgid "TAB to select" -msgstr "Select kay liay TAB" - -msgid "[Default value: 0] > " -msgstr "[Default value: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "Is translation ko istimal kay liay, brah e meharbani aik font manuallly install krein jo is zuban ko suppport krta ho." - -msgid "The font should be stored as {}" -msgstr "Font is trah {} store hona chahiya" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "Archinstall ko chalanay kay liay root hona zarori hai. ziada kay liay --help daykhein." - -msgid "Select an execution mode" -msgstr "Excution mode ko select krein" - -msgid "Unable to fetch profile from specified url: {}" -msgstr "muntkh'b url: {} say profile hasil krna mumkin nahi" - -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "Profiles ka munfirad hona zarori hai, lakin profile ki tareef duhray namoo kay sath mili hai: {}" - -msgid "Select one or more devices to use and configure" -msgstr "Aik yah ziada devices ka intikhab krein istimal aur tarteb krein" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "Agar aap muntikhab device ko reset kartay hein tu yeh mojoda disk layout bhi reset ho ga, aap pur yaqeen hein?" - -msgid "Existing Partitions" -msgstr "Pehlay say m'ojud partitions" - -msgid "Select a partitioning option" -msgstr "Aik ikhti'ari partion ka intikhab krein" - -msgid "Enter the root directory of the mounted devices: " -msgstr "Mounted devices kay liay root directory ko darj krein" - -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "/home partition kay liay Minimum capacity: {}GiB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "Arch linux partion kay liay Minimum capacity: {}GiB" - -msgid "This is a list of pre-programmed profiles_bck, they might make it easier to install things like desktop environments" -msgstr "yeh pre-programmed profiles_bck ki fe'hrist hay, in say desktop environment jaisi cheezon ko install karnay main madad milti hai" - -msgid "Current profile selection" -msgstr "mojoda profile selection" - -msgid "Remove all newly added partitions" -msgstr "Nai shamil ki gai tamam partitions remove krein" - -msgid "Assign mountpoint" -msgstr "Mountpoint assign krein" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "Format (data hazaf) karnay kay liay mark/unmark krein" - -msgid "Mark/Unmark as bootable" -msgstr "Bootable bananay kay liay mark/unmark krein" - -msgid "Change filesystem" -msgstr "Filesystem badlain" - -msgid "Mark/Unmark as compressed" -msgstr "Compress kay liay mark/unmark krein" - -msgid "Set subvolumes" -msgstr "subvolumes darj krein" - -msgid "Delete partition" -msgstr "Partition hazif krein" - -msgid "Partition" -msgstr "Partition" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "yeh partition mojoda tor par encrypt hai, filesystem ka intkhab zarori hai is ko format karnay kay liay" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "Prtition kay mount points installation kay andar relative hein, masal kay tor par /boot boot kay liay hai." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "Agar /boot muntkh'b hua, to partition bootable kay liay bhi mark ho gi." - -msgid "Mountpoint: " -msgstr "Mountpoint: " - -msgid "Current free sectors on device {}:" -msgstr "mojoda khali sector is device par {}:" - -msgid "Total sectors: {}" -msgstr "Tamam mojoda sectors: {}" - -msgid "Enter the start sector (default: {}): " -msgstr "Sector ki shroa'at dar'j krein (default: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "Partition kay a'akhri sector ki dar'j krein (fisad ya block ka number, default: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "yeh nai shamil ki gai tamam partitions remove karay ga, jari rakhein?" - -msgid "Partition management: {}" -msgstr "Partiotion ki management: {}" - -msgid "Total length: {}" -msgstr "Total length: {}" - -msgid "Encryption type" -msgstr "Encryption ki type" - -msgid "Partitions" -msgstr "Partitons" - -msgid "No HSM devices available" -msgstr "Koi HSM device mojod nahi" - -msgid "Partitions to be encrypted" -msgstr "Partition ki encryption ho gi" - -msgid "Select disk encryption option" -msgstr "Disk ki encryption ka ikhti'ar select krein" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "HSM kay liay aik FIDO2 device ko select krein" - -msgid "Use a best-effort default partition layout" -msgstr "Mumkina best-effort default partition ka layout istimal krein" - -msgid "Manual Partitioning" -msgstr "Manual Partitioning" - -msgid "Pre-mounted configuration" -msgstr "Pre-mounted tarteb" - -msgid "Unknown" -msgstr "Maloom nahi" - -msgid "Partition encryption" -msgstr "Partition ki encryption" - -msgid " ! Formatting {} in " -msgstr " ! formatting {} main" - -#, fuzzy -msgid "← Back" -msgstr "← Back" - -msgid "Disk encryption" -msgstr "Desk ki encryption" - -msgid "Configuration" -msgstr "tarteb" - -msgid "Password" -msgstr "Password" - -msgid "All settings will be reset, are you sure?" -msgstr "Tamam tarteb reset ho jay gi, kia aap pur yaqeen hein" - -msgid "Back" -msgstr "Back" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "brah e meharbani muntkh'b profile kay liay greeter ko install kay liay select krein: {}" - -msgid "Environment type: {}" -msgstr "Environment ki type: {}" - -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 "Sway Nvidia kay proprietary driver ko support nahi karta. Buhat imkan hai k'eh aap ko issues hongay, Kia aap pur yaqeen hein?" - -msgid "Installed packages" -msgstr "Installed packages" - -msgid "Add profile" -msgstr "Profile shamil krein" - -msgid "Edit profile" -msgstr "Profile ko edit krein" - -msgid "Delete profile" -msgstr "Profile ko hazif krein" - -msgid "Profile name: " -msgstr "Profile ka naam: " - -msgid "The profile name you entered is already in use. Try again" -msgstr "Aap ka darj karda profile ka naam pehlay say mojod hai, dubara koshish krein" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "Is profile kay sath install honay walay packages (space se alag krein, khali chod de'n agar kuch nahi): " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "Is profile kay sath enable honay wali services (space se alag krein, khali chod de'n agar kuch nahi): " - -msgid "Should this profile be enabled for installation?" -msgstr "Kia is profile ko enable karna hai installation kay liay?" - -msgid "Create your own" -msgstr "Khud ki bana'en" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"Aik graphic driver ka intkh'b ya kahli chod de'n tamam open-source driver ko install kay liay" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway kay liay access zarori hai (hardware devices ki fe'hrst jaisa ke'h keyboard, mouse, etc)" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Sway ko apnay hardware tak rasai kay liay aik ka intkh'ab krein" - -msgid "Graphics driver" -msgstr "Graphic driver" - -msgid "Greeter" -msgstr "Greeter" - -msgid "Please chose which greeter to install" -msgstr "Kis greeter ko install karna hai muntkh'b krein" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "yeh f'ehrist hai pre-programmed default_profiles ki" - -msgid "Disk configuration" -msgstr "Disk ki tart'b" - -msgid "Profiles" -msgstr "Profiles" - -msgid "Finding possible directories to save configuration files ..." -msgstr "tarteb ki files ko save karnay kay liay mumkina directories ki talash" - -msgid "Select directory (or directories) for saving configuration files" -msgstr "tarteb ki files ko save karnay directory (ya directories) ko select krein" - -msgid "Add a custom mirror" -msgstr "Custom mirror ko shamil krein" - -msgid "Change custom mirror" -msgstr "Custom mirror ko change krein" - -msgid "Delete custom mirror" -msgstr "Custom mirror ko hazif krein" - -msgid "Enter name (leave blank to skip): " -msgstr "Naam darj krein (khali chod de'n agar kuch nahi): " - -msgid "Enter url (leave blank to skip): " -msgstr "Url ko darj krein (khali chod de'n agar kuch nahi): " - -msgid "Select signature check option" -msgstr "Signature kay check karnay kay liay ikhtiar ko select krein" - -msgid "Select signature option" -msgstr "Signature kay ikhtiar ko select krein" - -msgid "Custom mirrors" -msgstr "Custom mirrors" - -msgid "Defined" -msgstr "Tareef karda" - -msgid "Save user configuration (including disk layout)" -msgstr "Saraf ki tarteb save krein (disk layout kay sath)" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"Tarteb ko save karnay kay liay directory darj krein (pora karnay kay liay tab dubain)\n" -"Save kay liay directory: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"Kia aap mutloba jaga tarteb filon {} ko save karna chahtay hein?\n" -"\n" -"{}" - -msgid "Saving {} configuration files to {}" -msgstr "{} Tarteb ki filon {} par save kia ja rha hai" - -msgid "Mirrors" -msgstr "Mirrors" - -msgid "Mirror regions" -msgstr "Mirrors ka ilaqa" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - Maximum value : {} ( {} Parallel downloads ki ajazat, {max_downloads+1} downloads ki aik waqat main ajazat hai )" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "Darj shuda galat hai! Dubara koshish krein sahi darj kar nay ki [1 say {}, ya 0 disable kay liay]" - -msgid "Locales" -msgstr "Locales" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "NetworkManager ka istmal (GNOME or KDE main graphically internet ka tayun krnay kay liay zarori hai)" - -msgid "Total: {} / {}" -msgstr "Tamam: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "Tamam darj shuda miqdaron say pehlay aik unit: B, KB, KiB, MB, MiB..." - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "Agar unit na darj hua, tu miqdar ko sector taswar kia jayga" - -msgid "Enter start (default: sector {}): " -msgstr "Shroa'at dar'j krein (default: sector {}): " - -msgid "Enter end (default: {}): " -msgstr "A'akhrat dar'j krein (default: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "FIDO2 devices ka tayun nahi ho rha hai. Kia libfido2 install hai?" - -msgid "Path" -msgstr "Path" - -msgid "Manufacturer" -msgstr "Manufacturer" - -msgid "Product" -msgstr "Product" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "Darj shuda tarteb galat hai: {error}" - -msgid "Type" -msgstr "Type" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "Package download kay doran parallel downloads kay number ko qabil karnay kay liay ikhtiar krein" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"Parallel downloads kay number ko darj krein qabil karnay kay liay.\n" -"\n" -"Note:\n" - -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - Maximum safarish karda value : {} ( {} downloads ki aik waqat main ajazat hai )" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - Disable/Default : 0 ( Parallel download ko disable krnay kay liay, sirf 1 download ki aik waqat main ajazat hai )\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "Darj shuda galat hai! Dubara koshish krein sahi darj kar nay ki [ya 0 disable kay liay]" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Hyperland kay liay access zarori hai (hardware devices ki fe'hrst jaisa ke'h keyboard, mouse, etc)" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Hyperland ko apnay hardware tak rasai kay liay aik ka intkh'ab krein" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "Tamam darj shuda miqdaron say pehlay aik unit: B, KB, KiB, MB, MiB..." - -msgid "Would you like to use unified kernel images?" -msgstr "Kia aap unified kernel images kay istmal ko pasand krein gay?" - -msgid "Unified kernel images" -msgstr "Unified kernel images" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "Time sync (timedatectl show) kay mukamal honay ka intzar hai." - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Aap kay intzar kartay huay time ki syncroniztion pori nhi hui, docs ko check krein: https://archinstall.readthedocs.io/" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "Khud kar time sync kay intzar ko khatam krein (yeh issue bana sakta hai installation kay duran agar time sync say out hota hai)" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "Arch Linux keyring sync (archlinux-keyring-wkd-sync) kay mukamal honay ka intzar hai." - -msgid "Selected profiles: " -msgstr "Muntkhab Profiles: " - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Aap kay intzar kartay huay time ki syncroniztion pori nhi hui, docs ko check krein: https://archinstall.readthedocs.io/" - -msgid "Mark/Unmark as nodatacow" -msgstr "Nodatacow kay mark/unmark krein" - -msgid "Would you like to use compression or disable CoW?" -msgstr "Kia aap compression kay istmal ya CoW ko disable karna chahtay hein?" - -msgid "Use compression" -msgstr "Compression ka istmal" - -msgid "Disable Copy-on-Write" -msgstr "Copy-on-Write ko disable krein" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "Yeh desktop environments or tiling window managers ki feharist daita hai jaisa kay GNOME, KDE Plasma, Sway" - -#, fuzzy -msgid "Configuration type: {}" -msgstr "Tarteb ki type: {}" - -#, fuzzy -msgid "LVM configuration type" -msgstr "LVM tarteb ki type" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "2 ya ziada partition wali LVM disk encryption ko mojoda tor par support nahi hai" - -#, fuzzy -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "NetworkManager ka istmal (GNOME or KDE main graphically internet ka tayun krnay kay liay zarori hai)" - -#, fuzzy -msgid "Select a LVM option" -msgstr "Aik LVM ikhtiar ko select krein" - -#, fuzzy -msgid "Partitioning" -msgstr "Partitioning" - -msgid "Logical Volume Management (LVM)" -msgstr "Logical Volume Management (LVM)" - -msgid "Physical volumes" -msgstr "Physical volumes" - -msgid "Volumes" -msgstr "Volumes" - -#, fuzzy -msgid "LVM volumes" -msgstr "LVM volumes" - -#, fuzzy -msgid "LVM volumes to be encrypted" -msgstr "LVM volumes ko encrypt krna" - -#, fuzzy -msgid "Select which LVM volumes to encrypt" -msgstr "Konsay LVM volume ko encrypt krna hai select krein" - -#, fuzzy -msgid "Default layout" -msgstr "Default layout" - -#, fuzzy -msgid "No Encryption" -msgstr "Koi encryption nahi" - -msgid "LUKS" -msgstr "LUKS" - -msgid "LVM on LUKS" -msgstr "LUKS par LVM" - -msgid "LUKS on LVM" -msgstr "LVM par LUKS" - -msgid "Yes" -msgstr "Haan" - -msgid "No" -msgstr "Nahi" - -#, fuzzy -msgid "Archinstall help" -msgstr "Archinstall ki madad" - -msgid " (default)" -msgstr " (default)" - -msgid "Press Ctrl+h for help" -msgstr "Madad kay liay Ctrl+h dubaen" - -#, fuzzy -msgid "Choose an option to give Sway access to your hardware" -msgstr "Sway ko apnay hardware tak rasai kay liay aik ka intkh'ab krein" - -msgid "Seat access" -msgstr "Tak rasai" - -#, fuzzy -msgid "Mountpoint" -msgstr "Mountpoint" - -msgid "HSM" -msgstr "HSM" - -#, fuzzy -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "Disk encryption ka password darj krein (encryption na karnay kay liay khali chodain): " - -#, fuzzy -msgid "Disk encryption password" -msgstr "Encryption ka password" - -#, fuzzy -msgid "Partition - New" -msgstr "Nai - Partition" - -#, fuzzy -msgid "Filesystem" -msgstr "Filesystem" - -msgid "Invalid size" -msgstr "Size sahi nahi" - -#, fuzzy -msgid "Start (default: sector {}): " -msgstr "Shroa'at dar'j krein (default: sector {}): " - -#, fuzzy -msgid "End (default: {}): " -msgstr "A'akhrat dar'j krein (default: {}): " - -#, fuzzy -msgid "Subvolume name" -msgstr "Subvolume ka naam" - -#, fuzzy -msgid "Disk configuration type" -msgstr "Disk configuration ki type" - -msgid "Root mount directory" -msgstr "Root ki mount directory" - -#, fuzzy -msgid "Select language" -msgstr "Zuban ka intikhab" - -#, fuzzy -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "Azafi packages jo install karnay hein (space se alag krein, khali chod de'n agar kuch nahi): " - -msgid "Invalid download number" -msgstr "Download ka number sahi nahi" - -msgid "Number downloads" -msgstr "Downloads kay number" - -#, fuzzy -msgid "The username you entered is invalid" -msgstr "Darj shuda username galat hai, dubara koshish krein" - -#, fuzzy -msgid "Username" -msgstr "Saraf ka naam: " - -#, fuzzy -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "Kia \"{}\" ko aik superuser (sudo) hona chahiay?\n" - -#, fuzzy -msgid "Interfaces" -msgstr "Interfaces" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "IP-config mode main sahi IP ko aap darj krein" - -msgid "Modes" -msgstr "Modes" - -msgid "IP address" -msgstr "IP address" - -#, fuzzy -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "A'pnay gateway (router) IP address dar'j krein (khali chodain, na honay kay liay)" - -msgid "Gateway address" -msgstr "Gateway ka address" - -#, fuzzy -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "A'pnay DNS servers dar'j krein (space se alag, khali chodain agar koi nahi)" - -#, fuzzy -msgid "DNS servers" -msgstr "DNS servers" - -#, fuzzy -msgid "Configure interfaces" -msgstr "Tateb shuda interfaces" - -#, fuzzy -msgid "Kernel" -msgstr "Kernel" - -msgid "UEFI is not detected and some options are disabled" -msgstr "UEFI nahi hai or kuch ikhtiar band hain" - -msgid "Info" -msgstr "Info" - -#, fuzzy -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "Sway Nvidia kay proprietary driver ko support nahi karta." - -#, fuzzy -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "Buhat imkan hai k'eh aap ko issues hongay, Kia aap pur yaqeen hein?" - -#, fuzzy -msgid "Main profile" -msgstr "Mian Profile" - -#, fuzzy -msgid "Confirm password" -msgstr "Password ko confirm krein" - -msgid "The confirmation password did not match, please try again" -msgstr "Password ki confirmation nahi mil rhi, brah e maharbani dobara koshish krein" - -#, fuzzy -msgid "Not a valid directory" -msgstr "Sahi directory nahi hai" - -#, fuzzy -msgid "Would you like to continue?" -msgstr "Kia aap jari rakhna chatay hain?" - -msgid "Directory" -msgstr "Directory" - -#, fuzzy -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "Tartebon ko save karnay kay liay directory darj krein (pora karnay kay liay tab dubain)" - -#, fuzzy -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "Kia aap tarteb filon {} ko save karna chahtay hein?" - -msgid "Enabled" -msgstr "Enabled" - -msgid "Disabled" -msgstr "Disabled" - -#, fuzzy -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "Brah e meharbani is issue (aur file) ko https://github.com/archlinux/archinstall/issues par submit krein" - -#, fuzzy -msgid "Mirror name" -msgstr "Mirror ka naam" - -msgid "Url" -msgstr "Url" - -#, fuzzy -msgid "Select signature check" -msgstr "Signature kay check karnay kay liay, ko select krein" - -#, fuzzy -msgid "Select execution mode" -msgstr "Excution mode ko select krein" - -#, fuzzy -msgid "Press ? for help" -msgstr "Madad kay liay ? dubaen" - -#, fuzzy -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "Hyperland ko apnay hardware tak rasai kay liay aik ikhtiar ka intkh'ab krein" - -#, fuzzy -msgid "Additional repositories" -msgstr "Ikhtiari repositories" - -msgid "NTP" -msgstr "NTP" - -msgid "Swap on zram" -msgstr "Zram main Swap" - -msgid "Name" -msgstr "Naam" - -#, fuzzy -msgid "Signature check" -msgstr "Signature kay check" - -#, fuzzy -msgid "Selected free space segment on device {}:" -msgstr "Mojoda khali sector is device par {}:" - -#, fuzzy -msgid "Size: {} / {}" -msgstr "Size: {} / {}" - -#, fuzzy -msgid "Size (default: {}): " -msgstr "Size (default: {}): " - -#, fuzzy -msgid "HSM device" -msgstr "HSM device" - -msgid "Some packages could not be found in the repository" -msgstr "Kuch packages repository main nahi milay" - -msgid "User" -msgstr "Saraf" - -msgid "The specified configuration will be applied" -msgstr "Matloba tarteb ko apply kia jayga" - -msgid "Wipe" -msgstr "Mitana" - -#, fuzzy -msgid "Mark/Unmark as XBOOTLDR" -msgstr "XBOOTLDR kay liay mark/unmark krein" - -#, fuzzy -msgid "Loading packages..." -msgstr "Loading packages..." - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "koi bhi packages neechay wali feharast main say azafi tor par install karnay kay liay" - -#, fuzzy -msgid "Add a custom repository" -msgstr "Custom repository ko shamil krein" - -#, fuzzy -msgid "Change custom repository" -msgstr "Custom repository ko change krein" - -#, fuzzy -msgid "Delete custom repository" -msgstr "Custom repository ko hazif krein" - -#, fuzzy -msgid "Repository name" -msgstr "Repository ka naam" - -#, fuzzy -msgid "Add a custom server" -msgstr "Aik custom server ko shamil krein" - -#, fuzzy -msgid "Change custom server" -msgstr "Custom server ko change krein" - -#, fuzzy -msgid "Delete custom server" -msgstr "Custom server ko hazif krein" - -msgid "Server url" -msgstr "Server ka url" - -#, fuzzy -msgid "Select regions" -msgstr "Select regions" - -#, fuzzy -msgid "Add custom servers" -msgstr "Custom servers ko shamil krein" - -#, fuzzy -msgid "Add custom repository" -msgstr "Custom repository ko shamil krein" - -#, fuzzy -msgid "Loading mirror regions..." -msgstr "Loading mirrors ka ilaqa" - -#, fuzzy -msgid "Mirrors and repositories" -msgstr "Mirrors or repositories" - -#, fuzzy -msgid "Selected mirror regions" -msgstr "Muntkhab mirrors ka ilaqa" - -#, fuzzy -msgid "Custom servers" -msgstr "Custom servers" - -#, fuzzy -msgid "Custom repositories" -msgstr "Custom repositories" - -msgid "Only ASCII characters are supported" -msgstr "Sirf ASCII alfaz ko support hasil hai" - -msgid "Show help" -msgstr "Madad dikhain" - -msgid "Exit help" -msgstr "Madad say nikalein" - -msgid "Preview scroll up" -msgstr "Scroll up dikhain" - -msgid "Preview scroll down" -msgstr "Scroll down dikhain" - -msgid "Move up" -msgstr "Opar jain" - -msgid "Move down" -msgstr "Neechay jain" - -msgid "Move right" -msgstr "Right jain" - -msgid "Move left" -msgstr "Left jain" - -msgid "Jump to entry" -msgstr "Entry par jump krin" - -msgid "Skip selection (if available)" -msgstr "Intkhab skip krin (agar mujud ho)" - -msgid "Reset selection (if available)" -msgstr "Intkhab reset krin (agar mujud ho)" - -msgid "Select on single select" -msgstr "Sigle select ko muntikhab krein" - -#, fuzzy -msgid "Select on multi select" -msgstr "Multi select ka intikhab krein" - -msgid "Reset" -msgstr "Reset" - -msgid "Skip selection menu" -msgstr "Selection menu skip krein" - -msgid "Start search mode" -msgstr "Search mode shrou krein" - -msgid "Exit search mode" -msgstr "Search mode say nikalein" - -#, fuzzy -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "labwc ko apki rasai ki zrorat hai (hardware devices ki fe'hrst jaisa ke'h keyboard, mouse, etc)" - -#, fuzzy -msgid "Choose an option to give labwc access to your hardware" -msgstr "Labwc ko apnay hardware tak rasai kay liay aik ikhtiar ka intkh'ab krein" - -#, fuzzy -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "niri ko apki rasai ki zrorat hai (hardware devices ki fe'hrst jaisa ke'h keyboard, mouse, etc)" - -#, fuzzy -msgid "Choose an option to give niri access to your hardware" -msgstr "Niri ko apnay hardware tak rasai kay liay aik ikhtiar ka intkh'ab krein" - -#, fuzzy -msgid "Mark/Unmark as ESP" -msgstr "ESP kay liay mark/unmark krein" - -msgid "Package group:" -msgstr "Package ka group:" - -#, fuzzy -msgid "Exit archinstall" -msgstr "Archinstall say nikalein" - -msgid "Reboot system" -msgstr "System reboot krein" - -#, fuzzy -msgid "chroot into installation for post-installation configurations" -msgstr "Post-installation tartebon kay liay Installation main chroot krein" - -msgid "Installation completed" -msgstr "Installation makamil hoe" - -#, fuzzy -msgid "What would you like to do next?" -msgstr "Is say agay app kia krna chahay gay?" - -#, fuzzy -msgid "Select which mode to configure for \"{}\"" -msgstr "Kis mode ki tarteb \"{}\" yahan karni hai, intkhab krein" - -msgid "Incorrect credentials file decryption password" -msgstr "Decryption password kay galat isnaad ki file" - -#, fuzzy -msgid "Incorrect password" -msgstr "Galat password" - -#, fuzzy -msgid "Credentials file decryption password" -msgstr "Decryption password kay liay isnaad ki file" - -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "Kia aap user_credentials.json ki file ko encrypt krna chahtay hain?" - -#, fuzzy -msgid "Credentials file encryption password" -msgstr "Decryption password kay liay isnaad ki file" - -#, fuzzy -msgid "Repositories: {}" -msgstr "Repositories: {}" - -#~ msgid "" -#~ "{}\n" -#~ "Contains queued partitions, this will remove those, are you sure?" -#~ msgstr "" -#~ "{}\n" -#~ "Qatar main lagi partitions hein, is say wo khatam ho jay gi, aap pur yaqeen hein?" diff --git a/examples/archinstall/archinstall/locales/uz/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/uz/LC_MESSAGES/base.mo deleted file mode 100644 index 4c74be2..0000000 Binary files a/examples/archinstall/archinstall/locales/uz/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/uz/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/uz/LC_MESSAGES/base.po deleted file mode 100644 index 0b17e5c..0000000 --- a/examples/archinstall/archinstall/locales/uz/LC_MESSAGES/base.po +++ /dev/null @@ -1,1794 +0,0 @@ -# O'zbek tili tarjimasi - Arch Install -# Copyright (C) 2025 Arch Install Contributors -# This file is distributed under the same license as the archinstall package. -# Muhammadyoqub , 2025. -# -msgid "" -msgstr "" -"Project-Id-Version: archinstall\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-10-07 12:00+0500\n" -"PO-Revision-Date: 2025-10-07 12:00+0500\n" -"Last-Translator: Muhammadyoqub \n" -"Language-Team: Uzbek\n" -"Language: uz\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] Log fayl bu yerda yaratildi: {} {}" - -#, fuzzy -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "Iltimos, ushbu muammo (va fayl) haqida https://github.com/archlinux/archinstall/issues manziliga xabar bering" - -msgid "Do you really want to abort?" -msgstr "Haqiqatan ham to'xtatmoqchimisiz?" - -msgid "And one more time for verification: " -msgstr "Tekshirish uchun yana bir marta kiriting: " - -msgid "Would you like to use swap on zram?" -msgstr "Zram'da swap'dan foydalanmoqchimisiz?" - -msgid "Desired hostname for the installation: " -msgstr "O'rnatish uchun host nomini kiriting: " - -msgid "Username for required superuser with sudo privileges: " -msgstr "Sudo imtiyozlariga ega superuser uchun foydalanuvchi nomi: " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "Qo'shimcha foydalanuvchilar (kerak bo'lmasa, bo'sh qoldiring): " - -msgid "Should this user be a superuser (sudoer)?" -msgstr "Ushbu foydalanuvchi superuser (sudoer) bo'lishi kerakmi?" - -msgid "Select a timezone" -msgstr "Vaqt mintaqasini tanlang" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "Systemd-boot o'rniga GRUB bootloader'idan foydalanmoqchimisiz?" - -msgid "Choose a bootloader" -msgstr "Bootloader'ni tanlang" - -msgid "Choose an audio server" -msgstr "Audio serverni tanlang" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "Faqat base, base-devel, linux, linux-firmware, efibootmgr va ixtiyoriy profil paketlari o'rnatiladi." - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "Agar Firefox yoki Chromium kabi veb-brauzer kerak bo'lsa, uni keyingi qadamda belgilashingiz mumkin." - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "Qo'shimcha paketlarni probel bilan ajratib yozing (o'tkazib yuborish uchun bo'sh qoldiring): " - -msgid "Copy ISO network configuration to installation" -msgstr "ISO tarmoq konfiguratsiyasini o'rnatishga nusxalash" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "NetworkManager'dan foydalanish (GNOME va KDE'da internetni grafik interfeysda sozlash uchun zarur)" - -msgid "Select one network interface to configure" -msgstr "Sozlash uchun bitta tarmoq interfeysini tanlang" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "\"{}\" uchun qaysi rejimni sozlashni tanlang yoki standart \"{}\" rejimini ishlatish uchun o'tkazib yuboring" - -#, python-brace-format -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "{} uchun IP va quyi tarmoqni kiriting (masalan: 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "Shlyuz (router) IP manzilini kiriting yoki bo'sh qoldiring: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "DNS serverlarni kiriting (probel bilan ajrating, kerakmas bo'lsa bo'sh qoldiring): " - -msgid "Select which filesystem your main partition should use" -msgstr "Asosiy bo'lim uchun fayl tizimini tanlang" - -msgid "Current partition layout" -msgstr "Joriy bo'limlar sxemasi" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"Nima qilishni tanlang\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "Bo'lim uchun kerakli fayl tizimi turini kiriting" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "Boshlang'ich joylashuvni kiriting (birliklar: s, GB, %, va hk.; standart: {}): " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "Tugash joylashuvini kiriting (birliklar: s, GB, %, va hk.; masalan: {}): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} navbatga qo'yilgan bo'limlarni o'z ichiga oladi. Bu amallar bekor qilinadi, ishonchingiz komilmi?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"O'chiriladigan bo'limlarni indeks bo'yicha tanlang" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"Qaysi bo'limni qayerga biriktirishni indeks bo'yicha tanlang" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * Bo'limlarni biriktirish nuqtalari o'rnatilayotgan tizimga nisbatan olinadi, masalan, /boot." - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "Bo'limni biriktirish nuqtasini tanlang (o'chirish uchun bo'sh qoldiring): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"Formatlanadigan bo'limni tanlang" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"Shifrlanadigan bo'limni tanlang" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"Yuklanuvchi (bootable) deb belgilash uchun bo'limni tanlang" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"Qaysi bo'limga fayl tizimi o'rnatishni tanlang" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "Bo'lim uchun kerakli fayl tizimi turini kiriting: " - -msgid "Archinstall language" -msgstr "Archinstall tili" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "Barcha tanlangan disklarni tozalash va tavsiya etilgan standart bo'limlar sxemasini qo'llash" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "Har bir disk bilan nima qilishni tanlang (so'ngra bo'limlardan foydalanish)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "Tanlangan blokli qurilmalar bilan nima qilmoqchi ekaningizni tanlang" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "Bu oldindan dasturlashtirilgan profillar ro'yxati. Ular ish stoli muhitlari kabi narsalarni o'rnatishni osonlashtirishi mumkin" - -msgid "Select keyboard layout" -msgstr "Klaviatura tartibini tanlang" - -msgid "Select one of the regions to download packages from" -msgstr "Paketlarni yuklab olish uchun hududlardan birini tanlang" - -msgid "Select one or more hard drives to use and configure" -msgstr "Foydalanish va sozlash uchun bir yoki bir nechta qattiq diskni tanlang" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "AMD qurilmangiz bilan eng yaxshi moslik uchun to'liq ochiq kodli yoki AMD/ATI variantlaridan birini tanlashingiz tavsiya etiladi." - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "Intel qurilmangiz bilan eng yaxshi moslik uchun to'liq ochiq kodli yoki Intel variantlaridan birini tanlashingiz tavsiya etiladi.\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "Nvidia qurilmangiz bilan eng yaxshi moslik uchun Nvidia'ning mulkiy drayveridan foydalanishingiz tavsiya etiladi.\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"Grafik drayverni tanlang yoki barcha ochiq kodli drayverlarni o'rnatish uchun bo'sh qoldiring" - -msgid "All open-source (default)" -msgstr "Barcha ochiq kodli (standart)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "Qaysi yadrolardan foydalanishni tanlang yoki standart \"{}\" uchun bo'sh qoldiring" - -msgid "Choose which locale language to use" -msgstr "Lokal tilini tanlang" - -msgid "Choose which locale encoding to use" -msgstr "Lokal kodlashni tanlang" - -msgid "Select one of the values shown below: " -msgstr "Quyida ko'rsatilgan qiymatlardan birini tanlang: " - -msgid "Select one or more of the options below: " -msgstr "Quyidagi variantlardan birini yoki bir nechtasini tanlang: " - -msgid "Adding partition...." -msgstr "Bo'lim qo'shilmoqda..." - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "Davom etish uchun to'g'ri fayl tizimi turini (fs-type) kiritishingiz kerak. Mavjud turlar uchun `man parted` buyrug'iga qarang." - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "Xato: \"{}\" URL manzilidagi profillar ro'yxatini olishda xatolik yuz berdi:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "Xato: \"{}\" natijasini JSON formatida o'qib bo'lmadi:" - -msgid "Keyboard layout" -msgstr "Klaviatura tartibi" - -msgid "Mirror region" -msgstr "Ko'zgu hududi" - -msgid "Locale language" -msgstr "Lokal tili" - -msgid "Locale encoding" -msgstr "Lokal kodlash" - -msgid "Drive(s)" -msgstr "Disk(lar)" - -msgid "Disk layout" -msgstr "Disk sxemasi" - -msgid "Encryption password" -msgstr "Shifrlash paroli" - -msgid "Swap" -msgstr "Swap" - -msgid "Bootloader" -msgstr "Bootloader" - -msgid "Root password" -msgstr "Root paroli" - -msgid "Superuser account" -msgstr "Superuser hisobi" - -msgid "User account" -msgstr "Foydalanuvchi hisobi" - -msgid "Profile" -msgstr "Profil" - -msgid "Audio" -msgstr "Audio" - -msgid "Kernels" -msgstr "Yadrolar" - -msgid "Additional packages" -msgstr "Qo'shimcha paketlar" - -msgid "Network configuration" -msgstr "Tarmoq konfiguratsiyasi" - -msgid "Automatic time sync (NTP)" -msgstr "Vaqtni avtomatik sinxronlash (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "O'rnatish ({} ta konfiguratsiya yetishmayapti)" - -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 "" -"Siz qattiq disk tanlashni o'tkazib yubordingiz\n" -"va {} manziliga biriktirilgan mavjud disk sozlamalaridan foydalanasiz (eksperimental)\n" -"DIQQAT: Archinstall bu sozlamaning mosligini tekshirmaydi.\n" -"Davom etishni xohlaysizmi?" - -msgid "Re-using partition instance: {}" -msgstr "Mavjud bo'limdan qayta foydalanish: {}" - -msgid "Create a new partition" -msgstr "Yangi bo'lim yaratish" - -msgid "Delete a partition" -msgstr "Bo'limni o'chirish" - -msgid "Clear/Delete all partitions" -msgstr "Barcha bo'limlarni tozalash/o'chirish" - -msgid "Assign mount-point for a partition" -msgstr "Bo'lim uchun biriktirish nuqtasini belgilash" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "Bo'limni formatlash uchun belgilash/bekor qilish (ma'lumotlarni o'chiradi)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "Bo'limni shifrlangan deb belgilash/bekor qilish" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "Bo'limni yuklanuvchi deb belgilash/bekor qilish (/boot uchun avtomatik)" - -msgid "Set desired filesystem for a partition" -msgstr "Bo'lim uchun fayl tizimini o'rnatish" - -msgid "Abort" -msgstr "To'xtatish" - -msgid "Hostname" -msgstr "Host nomi" - -msgid "Not configured, unavailable unless setup manually" -msgstr "Sozlanmagan, qo'lda sozlanmaguncha mavjud emas" - -msgid "Timezone" -msgstr "Vaqt mintaqasi" - -msgid "Set/Modify the below options" -msgstr "Quyidagi parametrlarni o'rnatish/o'zgartirish" - -msgid "Install" -msgstr "O'rnatish" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"O'tkazib yuborish uchun ESC tugmasini bosing\n" -"\n" - -msgid "Suggest partition layout" -msgstr "Bo'limlar sxemasini taklif qilish" - -msgid "Enter a password: " -msgstr "Parolni kiriting: " - -msgid "Enter a encryption password for {}" -msgstr "{} uchun shifrlash parolini kiriting" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "Diskni shifrlash parolini kiriting (shifrlash kerak bo'lmasa, bo'sh qoldiring): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "Sudo imtiyozlariga ega superuser yarating: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "Root parolini kiriting (root hisobini o'chirish uchun bo'sh qoldiring): " - -msgid "Password for user \"{}\": " -msgstr "\"{}\" foydalanuvchisining paroli: " - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "Qo'shimcha paketlar mavjudligi tekshirilmoqda (bu bir necha soniya vaqt olishi mumkin)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "Standart vaqt serverlari yordamida vaqtni avtomatik sinxronlashdan (NTP) foydalanmoqchimisiz?\n" - -msgid "" -"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" -"For more information, please check the Arch wiki" -msgstr "" -"NTP to'g'ri ishlashi uchun qurilma vaqtini va boshqa qo'shimcha sozlamalarni to'g'rilash talab qilinishi mumkin.\n" -"Batafsil ma'lumot uchun Arch Wiki'ga qarang" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "Qo'shimcha foydalanuvchi yaratish uchun nom kiriting (o'tkazib yuborish uchun bo'sh qoldiring): " - -msgid "Use ESC to skip\n" -msgstr "O'tkazib yuborish uchun ESC tugmasini bosing\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -" Ro'yxatdan obyektni tanlang va u uchun mavjud amallardan birini bajaring" - -msgid "Cancel" -msgstr "Bekor qilish" - -msgid "Confirm and exit" -msgstr "Tasdiqlash va chiqish" - -msgid "Add" -msgstr "Qo'shish" - -msgid "Copy" -msgstr "Nusxalash" - -msgid "Edit" -msgstr "Tahrirlash" - -msgid "Delete" -msgstr "O'chirish" - -msgid "Select an action for '{}'" -msgstr "'{}' uchun amalni tanlang" - -msgid "Copy to new key:" -msgstr "Yangi kalitga nusxalash:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "Noma'lum tarmoq kartasi turi: {}. Mumkin bo'lgan qiymatlar: {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"Siz tanlagan konfiguratsiya:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Pacman allaqachon ishlamoqda. To'xtashi uchun maksimal 10 daqiqa kutiladi." - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "Oldindan mavjud bo'lgan pacman qulfi olib tashlanmadi. Archinstall'dan foydalanishdan oldin barcha pacman sessiyalarini tozalang." - -msgid "Choose which optional additional repositories to enable" -msgstr "Qo'shimcha (ixtiyoriy) repozitoriylardan qaysilarini yoqishni tanlang" - -msgid "Add a user" -msgstr "Foydalanuvchi qo'shish" - -msgid "Change password" -msgstr "Parolni o'zgartirish" - -msgid "Promote/Demote user" -msgstr "Foydalanuvchi maqomini o'zgartirish" - -msgid "Delete User" -msgstr "Foydalanuvchini o'chirish" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"Yangi foydalanuvchini belgilash\n" - -msgid "User Name : " -msgstr "Foydalanuvchi nomi: " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "{} superuser (sudoer) bo'lishi kerakmi?" - -msgid "Define users with sudo privilege: " -msgstr "Sudo imtiyoziga ega foydalanuvchilarni belgilang: " - -msgid "No network configuration" -msgstr "Tarmoq konfiguratsiyasi yo'q" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "Btrfs bo'limida kerakli subvolume'larni o'rnatish" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"Qaysi bo'limda subvolume'lar o'rnatishni tanlang" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "Joriy bo'lim uchun btrfs subvolume'larini boshqarish" - -msgid "No configuration" -msgstr "Konfiguratsiya yo'q" - -msgid "Save user configuration" -msgstr "Foydalanuvchi konfiguratsiyasini saqlash" - -msgid "Save user credentials" -msgstr "Foydalanuvchi hisob ma'lumotlarini saqlash" - -msgid "Save disk layout" -msgstr "Disk sxemasini saqlash" - -msgid "Save all" -msgstr "Barchasini saqlash" - -msgid "Choose which configuration to save" -msgstr "Qaysi konfiguratsiyani saqlashni tanlang" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "Konfiguratsiya(lar) saqlanadigan katalogni kiriting: " - -msgid "Not a valid directory: {}" -msgstr "Yaroqsiz katalog: {}" - -msgid "The password you are using seems to be weak," -msgstr "Siz kiritgan parol zaif ko'rinadi," - -msgid "are you sure you want to use it?" -msgstr "shunda ham uni ishlatmoqchimisiz?" - -msgid "Optional repositories" -msgstr "Ixtiyoriy repozitoriylar" - -msgid "Save configuration" -msgstr "Konfiguratsiyani saqlash" - -msgid "Missing configurations:\n" -msgstr "Yetishmayotgan konfiguratsiyalar:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "Root paroli yoki kamida 1 ta superuser ko'rsatilishi shart" - -msgid "Manage superuser accounts: " -msgstr "Superuser hisoblarini boshqarish: " - -msgid "Manage ordinary user accounts: " -msgstr "Oddiy foydalanuvchi hisoblarini boshqarish: " - -msgid " Subvolume :{:16}" -msgstr " Subvolume :{:16}" - -msgid " mounted at {:16}" -msgstr " biriktirildi: {:16}" - -msgid " with option {}" -msgstr " {} parametri bilan" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -" Yangi subvolume uchun kerakli qiymatlarni to'ldiring \n" - -msgid "Subvolume name " -msgstr "Subvolume nomi " - -msgid "Subvolume mountpoint" -msgstr "Subvolume biriktirish nuqtasi" - -msgid "Subvolume options" -msgstr "Subvolume parametrlari" - -msgid "Save" -msgstr "Saqlash" - -msgid "Subvolume name :" -msgstr "Subvolume nomi:" - -msgid "Select a mount point :" -msgstr "Biriktirish nuqtasini tanlang:" - -msgid "Select the desired subvolume options " -msgstr "Kerakli subvolume parametrlarini tanlang " - -msgid "Define users with sudo privilege, by username: " -msgstr "Sudo imtiyoziga ega foydalanuvchilarni nomi bo'yicha belgilang: " - -#, python-brace-format -msgid "[!] A log file has been created here: {}" -msgstr "[!] Log fayl bu yerda yaratildi: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "BTRFS subvolume'larini standart struktura bilan ishlatmoqchimisiz?" - -msgid "Would you like to use BTRFS compression?" -msgstr "BTRFS siqishdan foydalanmoqchimisiz?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "/home uchun alohida bo'lim yaratmoqchimisiz?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "Tanlangan disklar avtomatik taklif uchun minimal sig'imga ega emas\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "/home bo'limi uchun minimal sig'im: {}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Arch Linux bo'limi uchun minimal sig'im: {}GB" - -msgid "Continue" -msgstr "Davom etish" - -msgid "yes" -msgstr "ha" - -msgid "no" -msgstr "yo'q" - -msgid "set: {}" -msgstr "o'rnatildi: {}" - -msgid "Manual configuration setting must be a list" -msgstr "Qo'lda konfiguratsiya sozlamasi ro'yxat shaklida bo'lishi kerak" - -msgid "No iface specified for manual configuration" -msgstr "Qo'lda sozlash uchun interfeys ko'rsatilmagan" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "Avtomatik DHCP'siz tarmoq kartasini qo'lda sozlash uchun IP manzil talab qilinadi" - -msgid "Add interface" -msgstr "Interfeys qo'shish" - -msgid "Edit interface" -msgstr "Interfeysni tahrirlash" - -msgid "Delete interface" -msgstr "Interfeysni o'chirish" - -msgid "Select interface to add" -msgstr "Qo'shish uchun interfeysni tanlang" - -msgid "Manual configuration" -msgstr "Qo'lda sozlash" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "Bo'limni siqilgan deb belgilash/bekor qilish (faqat btrfs)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "Siz kiritgan parol zaif ko'rinadi. Shunda ham uni ishlatmoqchimisiz?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "Ish stoli muhitlari va oyna menejerlari tanlovi (masalan, GNOME, KDE, Sway)." - -msgid "Select your desired desktop environment" -msgstr "Kerakli ish stoli muhitini tanlang" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "Arch Linux'ni o'z xohishingizga ko'ra moslashtirish imkonini beruvchi asosiy o'rnatish." - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "O'rnatish va yoqish uchun turli server paketlari tanlovi (masalan, httpd, nginx, mariadb)." - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "Qaysi serverlarni o'rnatishni tanlang, agar tanlanmasa, minimal o'rnatish amalga oshiriladi" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "Minimal tizim hamda Xorg va grafik drayverlarni o'rnatadi." - -msgid "Press Enter to continue." -msgstr "Davom etish uchun Enter tugmasini bosing." - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "Yangi yaratilgan tizimga chroot qilib, o'rnatishdan keyingi sozlamalarni bajarmoqchimisiz?" - -msgid "Are you sure you want to reset this setting?" -msgstr "Haqiqatan ham bu sozlamani bekor qilmoqchimisiz?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "Foydalanish va sozlash uchun bir yoki bir nechta qattiq diskni tanlang\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "Joriy sozlamalarga kiritilgan har qanday o'zgartirish disk sxemasini bekor qiladi!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "Agar disk tanlovini o'zgartirsangiz, joriy disk sxemasi ham bekor qilinadi. Ishonchingiz komilmi?" - -msgid "Save and exit" -msgstr "Saqlash va chiqish" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"navbatga qo'yilgan bo'limlarni o'z ichiga oladi. Bu amallar bekor qilinadi, ishonchingiz komilmi?" - -msgid "No audio server" -msgstr "Audio server yo'q" - -msgid "(default)" -msgstr "(standart)" - -msgid "Use ESC to skip" -msgstr "O'tkazib yuborish uchun ESC tugmasini bosing" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "" -"Joriy tanlovni bekor qilish uchun CTRL+C tugmasini bosing\n" -"\n" - -msgid "Copy to: " -msgstr "Nusxalash:" - -msgid "Edit: " -msgstr "Tahrirlash:" - -msgid "Key: " -msgstr "Kalit:" - -msgid "Edit {}: " -msgstr "{} tahrirlash:" - -msgid "Add: " -msgstr "Qo'shish:" - -msgid "Value: " -msgstr "Qiymat:" - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "Disk tanlash va bo'limlashni o'tkazib yuborib, /mnt manziliga biriktirilgan mavjud disk sozlamasidan foydalanishingiz mumkin (eksperimental)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "Disklardan birini tanlang yoki o'tkazib yuborib, /mnt'dan standart sifatida foydalaning" - -msgid "Select which partitions to mark for formatting:" -msgstr "Formatlash uchun qaysi bo'limlarni belgilashni tanlang:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "Shifrlangan diskni ochish uchun HSM'dan foydalanish" - -msgid "Device" -msgstr "Qurilma" - -msgid "Size" -msgstr "Hajm" - -msgid "Free space" -msgstr "Bo'sh joy" - -msgid "Bus-type" -msgstr "Shina turi" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "Root paroli yoki sudo imtiyoziga ega kamida 1 ta foydalanuvchi ko'rsatilishi shart" - -msgid "Enter username (leave blank to skip): " -msgstr "Foydalanuvchi nomini kiriting (o'tkazib yuborish uchun bo'sh qoldiring): " - -msgid "The username you entered is invalid. Try again" -msgstr "Siz kiritgan foydalanuvchi nomi yaroqsiz. Qayta urining." - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "\"{}\" superuser (sudo) bo'lishi kerakmi?" - -msgid "Select which partitions to encrypt" -msgstr "Qaysi bo'limlarni shifrlashni tanlang" - -msgid "very weak" -msgstr "juda zaif" - -msgid "weak" -msgstr "zaif" - -msgid "moderate" -msgstr "o'rtacha" - -msgid "strong" -msgstr "kuchli" - -msgid "Add subvolume" -msgstr "Subvolume qo'shish" - -msgid "Edit subvolume" -msgstr "Subvolume'ni tahrirlash" - -msgid "Delete subvolume" -msgstr "Subvolume'ni o'chirish" - -msgid "Configured {} interfaces" -msgstr "{} ta interfeys sozlandi" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "Bu parametr o'rnatish vaqtida bir vaqtning o'zida nechta yuklab olish mumkinligini belgilaydi" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"Parallel yuklab olishlar sonini kiriting.\n" -" (1 dan {} gacha qiymat kiriting)\n" -"Eslatma:" - -#, fuzzy -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - Maksimal qiymat: {} ({} ta parallel yuklab olishga, bir vaqtda {} ta yuklab olishga ruxsat beradi)" - -#, fuzzy -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - Minimal qiymat: 1 (1 ta parallel yuklab olishga, bir vaqtda 2 ta yuklab olishga ruxsat beradi)" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - O'chirish/Standart: 0 (Parallel yuklab olishni o'chiradi, bir vaqtda faqat 1 ta yuklab olishga ruxsat beradi)" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "Yaroqsiz qiymat! Qayta urining [1 dan {max_downloads} gacha yoki o'chirish uchun 0]" - -msgid "Parallel Downloads" -msgstr "Parallel yuklab olishlar" - -msgid "ESC to skip" -msgstr "ESC - O'tkazib yuborish" - -msgid "CTRL+C to reset" -msgstr "CTRL+C - Bekor qilish" - -msgid "TAB to select" -msgstr "TAB - Tanlash" - -msgid "[Default value: 0] > " -msgstr "[Standart qiymat: 0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "Ushbu tarjimadan foydalanish uchun tilni qo'llab-quvvatlaydigan shriftni qo'lda o'rnating." - -msgid "The font should be stored as {}" -msgstr "Shrift {} sifatida saqlanishi kerak" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "Archinstall'ni ishga tushirish uchun root huquqlari talab qilinadi. Batafsil ma'lumot uchun --help'ga qarang." - -msgid "Select an execution mode" -msgstr "Bajarish rejimini tanlang" - -#, python-brace-format -msgid "Unable to fetch profile from specified url: {}" -msgstr "Ko'rsatilgan URL'dan profilni olib bo'lmadi: {}" - -#, python-brace-format -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "Profillar noyob nomga ega bo'lishi kerak, lekin bir xil nomli profillar topildi: {}" - -msgid "Select one or more devices to use and configure" -msgstr "Foydalanish va sozlash uchun bir yoki bir nechta qurilmani tanlang" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "Agar qurilma tanlovini o'zgartirsangiz, joriy disk sxemasi ham bekor qilinadi. Ishonchingiz komilmi?" - -msgid "Existing Partitions" -msgstr "Mavjud bo'limlar" - -msgid "Select a partitioning option" -msgstr "Bo'limlash variantini tanlang" - -msgid "Enter the root directory of the mounted devices: " -msgstr "Biriktirilgan qurilmalarning root katalogini kiriting: " - -#, python-brace-format -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "/home bo'limi uchun minimal sig'im: {}GiB\n" - -#, python-brace-format -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "Arch Linux bo'limi uchun minimal sig'im: {}GiB" - -msgid "This is a list of pre-programmed profiles_bck, they might make it easier to install things like desktop environments" -msgstr "Bu oldindan dasturlashtirilgan profiles_bck ro'yxati. Ular ish stoli muhitlari kabi narsalarni o'rnatishni osonlashtirishi mumkin" - -msgid "Current profile selection" -msgstr "Joriy profil tanlovi" - -msgid "Remove all newly added partitions" -msgstr "Barcha yangi qo'shilgan bo'limlarni o'chirish" - -msgid "Assign mountpoint" -msgstr "Biriktirish nuqtasini belgilash" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "Formatlash uchun belgilash/bekor qilish (ma'lumotlarni o'chiradi)" - -msgid "Mark/Unmark as bootable" -msgstr "Yuklanuvchi deb belgilash/bekor qilish" - -msgid "Change filesystem" -msgstr "Fayl tizimini o'zgartirish" - -msgid "Mark/Unmark as compressed" -msgstr "Siqilgan deb belgilash/bekor qilish" - -msgid "Set subvolumes" -msgstr "Subvolume'larni sozlash" - -msgid "Delete partition" -msgstr "Bo'limni o'chirish" - -msgid "Partition" -msgstr "Bo'lim" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "Bu bo'lim hozirda shifrlangan. Uni formatlash uchun fayl tizimi ko'rsatilishi kerak." - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "Bo'limlarni biriktirish nuqtalari o'rnatilayotgan tizimga nisbatan olinadi, masalan, /boot." - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "Agar /boot biriktirish nuqtasi o'rnatilsa, bu bo'lim avtomatik tarzda yuklanuvchi deb belgilanadi." - -msgid "Mountpoint: " -msgstr "Biriktirish nuqtasi: " - -msgid "Current free sectors on device {}:" -msgstr "{} qurilmasidagi joriy bo'sh sektorlar:" - -msgid "Total sectors: {}" -msgstr "Jami sektorlar: {}" - -msgid "Enter the start sector (default: {}): " -msgstr "Boshlang'ich sektorni kiriting (standart: {}): " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "Bo'limning tugash sektorini kiriting (foizda yoki blok raqami, standart: {}): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "Bu barcha yangi qo'shilgan bo'limlarni o'chirib tashlaydi, davom etasizmi?" - -#, python-brace-format -msgid "Partition management: {}" -msgstr "Bo'limlarni boshqarish: {}" - -#, python-brace-format -msgid "Total length: {}" -msgstr "Umumiy uzunlik: {}" - -msgid "Encryption type" -msgstr "Shifrlash turi" - -msgid "Iteration time" -msgstr "Iteratsiya vaqti" - -msgid "Enter iteration time for LUKS encryption (in milliseconds)" -msgstr "LUKS shifrlash uchun iteratsiya vaqtini kiriting (millisekundda)" - -msgid "Higher values increase security but slow down boot time" -msgstr "Yuqori qiymatlar xavfsizlikni oshiradi, lekin tizim yuklanishini sekinlashtiradi" - -msgid "Default: 10000ms, Recommended range: 1000-60000" -msgstr "Standart: 10000ms, Tavsiya etilgan oraliq: 1000-60000" - -msgid "Iteration time cannot be empty" -msgstr "Iteratsiya vaqti bo'sh bo'lishi mumkin emas" - -msgid "Iteration time must be at least 100ms" -msgstr "Iteratsiya vaqti kamida 100ms bo'lishi kerak" - -msgid "Iteration time must be at most 120000ms" -msgstr "Iteratsiya vaqti ko'pi bilan 120000ms bo'lishi kerak" - -msgid "Please enter a valid number" -msgstr "Iltimos, yaroqli raqam kiriting" - -msgid "Partitions" -msgstr "Bo'limlar" - -msgid "No HSM devices available" -msgstr "HSM qurilmalari mavjud emas" - -msgid "Partitions to be encrypted" -msgstr "Shifrlanadigan bo'limlar" - -msgid "Select disk encryption option" -msgstr "Diskni shifrlash variantini tanlang" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "HSM uchun FIDO2 qurilmasini tanlang" - -msgid "Use a best-effort default partition layout" -msgstr "Tavsiya etilgan standart bo'limlar sxemasidan foydalanish" - -msgid "Manual Partitioning" -msgstr "Qo'lda bo'limlash" - -msgid "Pre-mounted configuration" -msgstr "Oldindan biriktirilgan konfiguratsiya" - -msgid "Unknown" -msgstr "Noma'lum" - -msgid "Partition encryption" -msgstr "Bo'limni shifrlash" - -#, python-brace-format -msgid " ! Formatting {} in " -msgstr " ! {} formatlanmoqda " - -#, fuzzy -msgid "← Back" -msgstr "Orqaga" - -msgid "Disk encryption" -msgstr "Diskni shifrlash" - -msgid "Configuration" -msgstr "Konfiguratsiya" - -msgid "Password" -msgstr "Parol" - -msgid "All settings will be reset, are you sure?" -msgstr "Barcha sozlamalar bekor qilinadi, ishonchingiz komilmi?" - -msgid "Back" -msgstr "Orqaga" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "Tanlangan profillar uchun qaysi greeter'ni o'rnatishni tanlang: {}" - -#, python-brace-format -msgid "Environment type: {}" -msgstr "Muhit turi: {}" - -msgid "The proprietary Nvidia driver is not supported by Sway. It is likely that you will run into issues, are you okay with that?" -msgstr "Nvidia'ning mulkiy drayveri Sway tomonidan qo'llab-quvvatlanmaydi. Muammolarga duch kelishingiz mumkin. Shunda ham davom etasizmi?" - -msgid "Installed packages" -msgstr "O'rnatilgan paketlar" - -msgid "Add profile" -msgstr "Profil qo'shish" - -msgid "Edit profile" -msgstr "Profilni tahrirlash" - -msgid "Delete profile" -msgstr "Profilni o'chirish" - -msgid "Profile name: " -msgstr "Profil nomi: " - -msgid "The profile name you entered is already in use. Try again" -msgstr "Siz kiritgan profil nomi allaqachon mavjud. Qayta urining." - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "Bu profil bilan o'rnatiladigan paketlar (probel bilan ajrating, bo'sh qoldiring): " - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "Bu profil bilan yoqiladigan xizmatlar (probel bilan ajrating, bo'sh qoldiring): " - -msgid "Should this profile be enabled for installation?" -msgstr "Bu profil o'rnatish uchun yoqilsinmi?" - -msgid "Create your own" -msgstr "O'zingiz yaratish" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"Grafik drayverni tanlang yoki barcha ochiq kodli drayverlarni o'rnatish uchun bo'sh qoldiring" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway sizning seat'ingizga (klaviatura, sichqoncha kabi qurilmalar to'plami) kirish huquqiga muhtoj" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"Sway'ga qurilmalaringizga kirish huquqini berish variantini tanlang" - -msgid "Graphics driver" -msgstr "Grafik drayver" - -msgid "Greeter" -msgstr "Greeter" - -msgid "Please chose which greeter to install" -msgstr "Qaysi greeter'ni o'rnatishni tanlang" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "Bu oldindan dasturlashtirilgan standart profillar (default_profiles) ro'yxati" - -msgid "Disk configuration" -msgstr "Disk konfiguratsiyasi" - -msgid "Profiles" -msgstr "Profillar" - -msgid "Finding possible directories to save configuration files ..." -msgstr "Konfiguratsiya fayllarini saqlash uchun mumkin bo'lgan kataloglar qidirilmoqda..." - -msgid "Select directory (or directories) for saving configuration files" -msgstr "Konfiguratsiya fayllarini saqlash uchun katalog(lar)ni tanlang" - -msgid "Add a custom mirror" -msgstr "Maxsus ko'zgu qo'shish" - -msgid "Change custom mirror" -msgstr "Maxsus ko'zguni o'zgartirish" - -msgid "Delete custom mirror" -msgstr "Maxsus ko'zguni o'chirish" - -msgid "Enter name (leave blank to skip): " -msgstr "Nomini kiriting (o'tkazib yuborish uchun bo'sh qoldiring): " - -msgid "Enter url (leave blank to skip): " -msgstr "URL manzilini kiriting (o'tkazib yuborish uchun bo'sh qoldiring): " - -msgid "Select signature check option" -msgstr "Imzo tekshirish variantini tanlang" - -msgid "Select signature option" -msgstr "Imzo variantini tanlang" - -msgid "Custom mirrors" -msgstr "Maxsus ko'zgular" - -msgid "Defined" -msgstr "Belgilangan" - -msgid "Save user configuration (including disk layout)" -msgstr "Foydalanuvchi konfiguratsiyasini (disk sxemasi bilan birga) saqlash" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"Konfiguratsiya(lar) saqlanadigan katalogni kiriting (TAB orqali to'ldirish mavjud)\n" -"Saqlash katalogi: " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"{} ta konfiguratsiya faylini quyidagi manzilda saqlashni xohlaysizmi?\n" -"\n" -"{}" - -msgid "Saving {} configuration files to {}" -msgstr "{} ta konfiguratsiya fayli {} manziliga saqlanmoqda" - -msgid "Mirrors" -msgstr "Ko'zgular" - -msgid "Mirror regions" -msgstr "Ko'zgu hududlari" - -#, fuzzy -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - Maksimal qiymat: {} ({} ta parallel yuklab olishga, bir vaqtda {max_downloads+1} ta yuklab olishga ruxsat beradi)" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "Yaroqsiz qiymat! Qayta urining [1 dan {} gacha yoki o'chirish uchun 0]" - -msgid "Locales" -msgstr "Lokallar" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "NetworkManager'dan foydalanish (GNOME va KDE'da internetni grafik interfeysda sozlash uchun zarur)" - -msgid "Total: {} / {}" -msgstr "Jami: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "Barcha kiritilgan qiymatlar o'lchov birligi bilan tugashi mumkin: B, KB, KiB, MB, MiB..." - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "Agar o'lchov birligi ko'rsatilmasa, qiymat sektorlarda hisoblanadi" - -msgid "Enter start (default: sector {}): " -msgstr "Boshlanishni kiriting (standart: {} sektori): " - -msgid "Enter end (default: {}): " -msgstr "Tugashni kiriting (standart: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "Fido2 qurilmalarini aniqlab bo'lmadi. Libfido2 o'rnatilganmi?" - -msgid "Path" -msgstr "Yo'l" - -msgid "Manufacturer" -msgstr "Ishlab chiqaruvchi" - -msgid "Product" -msgstr "Mahsulot" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "Yaroqsiz konfiguratsiya: {error}" - -msgid "Type" -msgstr "Tur" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "Bu parametr paketlarni yuklab olish vaqtida bir vaqtning o'zida nechta yuklab olish mumkinligini belgilaydi" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"Parallel yuklab olishlar sonini kiriting.\n" -"\n" -"Eslatma:\n" - -#, python-brace-format -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr " - Tavsiya etilgan maksimal qiymat: {} (Bir vaqtda {} ta parallel yuklab olishga ruxsat beradi)" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - O'chirish/Standart: 0 (Parallel yuklab olishni o'chiradi, bir vaqtda faqat 1 ta yuklab olishga ruxsat beradi)\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "Yaroqsiz qiymat! Qayta urining [yoki o'chirish uchun 0]" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Hyprland sizning seat'ingizga (klaviatura, sichqoncha kabi qurilmalar to'plami) kirish huquqiga muhtoj" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"Hyprland'ga qurilmalaringizga kirish huquqini berish variantini tanlang" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "Barcha kiritilgan qiymatlar o'lchov birligi bilan tugashi mumkin: %, B, KB, KiB, MB, MiB..." - -msgid "Would you like to use unified kernel images?" -msgstr "Yagona yadro obrazlaridan (UKI) foydalanmoqchimisiz?" - -msgid "Unified kernel images" -msgstr "Yagona yadro obrazlari (UKI)" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "Vaqt sinxronizatsiyasi (timedatectl show) tugashi kutilmoqda." - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Vaqt sinxronizatsiyasi tugamayapti. Vaqtinchalik yechimlar uchun hujjatlarni ko'rib chiqing: https://archinstall.readthedocs.io/" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "Avtomatik vaqt sinxronizatsiyasini kutish o'tkazib yuborilmoqda (agar o'rnatish paytida vaqt noto'g'ri bo'lsa, bu muammolarga olib kelishi mumkin)" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "Arch Linux kalitlar zanjiri (keyring) sinxronizatsiyasi tugashi kutilmoqda." - -msgid "Selected profiles: " -msgstr "Tanlangan profillar: " - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "Vaqt sinxronizatsiyasi tugamayapti. Vaqtinchalik yechimlar uchun hujjatlarni ko'rib chiqing: https://archinstall.readthedocs.io/" - -msgid "Mark/Unmark as nodatacow" -msgstr "nodatacow deb belgilash/bekor qilish" - -msgid "Would you like to use compression or disable CoW?" -msgstr "Siqishdan foydalanmoqchimisiz yoki CoW'ni o'chirmoqchimisiz?" - -msgid "Use compression" -msgstr "Siqishdan foydalanish" - -msgid "Disable Copy-on-Write" -msgstr "Copy-on-Write'ni o'chirish" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "Ish stoli muhitlari va oyna menejerlari tanlovi (masalan, GNOME, KDE Plasma, Sway)." - -#, python-brace-format -msgid "Configuration type: {}" -msgstr "Konfiguratsiya turi: {}" - -msgid "LVM configuration type" -msgstr "LVM konfiguratsiya turi" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "2 dan ortiq bo'limga ega LVM disk shifrlash hozirda qo'llab-quvvatlanmaydi" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "NetworkManager'dan foydalanish (GNOME va KDE Plasma'da internetni grafik interfeysda sozlash uchun zarur)" - -msgid "Select a LVM option" -msgstr "LVM variantini tanlang" - -msgid "Partitioning" -msgstr "Bo'limlash" - -msgid "Logical Volume Management (LVM)" -msgstr "Mantiqiy hajmlarni boshqarish (LVM)" - -msgid "Physical volumes" -msgstr "Fizik hajmlar" - -msgid "Volumes" -msgstr "Hajmlar" - -msgid "LVM volumes" -msgstr "LVM hajmlari" - -msgid "LVM volumes to be encrypted" -msgstr "Shifrlanadigan LVM hajmlari" - -msgid "Select which LVM volumes to encrypt" -msgstr "Qaysi LVM hajmlarini shifrlashni tanlang" - -msgid "Default layout" -msgstr "Standart sxema" - -msgid "No Encryption" -msgstr "Shifrlashsiz" - -msgid "LUKS" -msgstr "LUKS" - -msgid "LVM on LUKS" -msgstr "LUKS ustida LVM" - -msgid "LUKS on LVM" -msgstr "LVM ustida LUKS" - -msgid "Yes" -msgstr "Ha" - -msgid "No" -msgstr "Yo'q" - -msgid "Archinstall help" -msgstr "Archinstall yordami" - -msgid " (default)" -msgstr " (standart)" - -msgid "Press Ctrl+h for help" -msgstr "Yordam uchun Ctrl+h tugmasini bosing" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "Sway'ga qurilmalaringizga kirish huquqini berish variantini tanlang" - -msgid "Seat access" -msgstr "Seat'ga kirish" - -msgid "Mountpoint" -msgstr "Biriktirish nuqtasi" - -msgid "HSM" -msgstr "HSM" - -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "Diskni shifrlash parolini kiriting (shifrlash kerak bo'lmasa, bo'sh qoldiring)" - -msgid "Disk encryption password" -msgstr "Diskni shifrlash paroli" - -msgid "Partition - New" -msgstr "Bo'lim - Yangi" - -msgid "Filesystem" -msgstr "Fayl tizimi" - -msgid "Invalid size" -msgstr "Yaroqsiz hajm" - -msgid "Start (default: sector {}): " -msgstr "Boshlanish (standart: {} sektor): " - -msgid "End (default: {}): " -msgstr "Tugash (standart: {}): " - -msgid "Subvolume name" -msgstr "Subvolume nomi" - -msgid "Disk configuration type" -msgstr "Disk konfiguratsiyasi turi" - -msgid "Root mount directory" -msgstr "Root biriktirish katalogi" - -msgid "Select language" -msgstr "Tilni tanlang" - -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "Qo'shimcha paketlarni probel bilan ajratib yozing (o'tkazib yuborish uchun bo'sh qoldiring)" - -msgid "Invalid download number" -msgstr "Yaroqsiz yuklab olishlar soni" - -msgid "Number downloads" -msgstr "Yuklab olishlar soni" - -msgid "The username you entered is invalid" -msgstr "Siz kiritgan foydalanuvchi nomi yaroqsiz" - -msgid "Username" -msgstr "Foydalanuvchi nomi" - -#, python-brace-format -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "\"{}\" superuser (sudo) bo'lishi kerakmi?\n" - -msgid "Interfaces" -msgstr "Interfeyslar" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "IP-config rejimida yaroqli IP manzil kiritishingiz kerak" - -msgid "Modes" -msgstr "Rejimlar" - -msgid "IP address" -msgstr "IP manzil" - -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "Shlyuz (router) IP manzilini kiriting (bo'sh qoldiring)" - -msgid "Gateway address" -msgstr "Shlyuz manzili" - -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "DNS serverlarni probel bilan ajratib kiriting (bo'sh qoldiring)" - -msgid "DNS servers" -msgstr "DNS serverlar" - -msgid "Configure interfaces" -msgstr "Interfeyslarni sozlash" - -msgid "Kernel" -msgstr "Yadro" - -msgid "UEFI is not detected and some options are disabled" -msgstr "UEFI aniqlanmadi, shu sababli ba'zi parametrlar o'chirildi" - -msgid "Info" -msgstr "Ma'lumot" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "Nvidia'ning mulkiy drayveri Sway tomonidan qo'llab-quvvatlanmaydi." - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "Muammolarga duch kelishingiz mumkin. Shunda ham davom etasizmi?" - -msgid "Main profile" -msgstr "Asosiy profil" - -msgid "Confirm password" -msgstr "Parolni tasdiqlang" - -msgid "The confirmation password did not match, please try again" -msgstr "Parollar mos kelmadi, iltimos, qayta urining" - -msgid "Not a valid directory" -msgstr "Yaroqsiz katalog" - -msgid "Would you like to continue?" -msgstr "Davom etishni xohlaysizmi?" - -msgid "Directory" -msgstr "Katalog" - -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "Konfiguratsiya(lar) saqlanadigan katalogni kiriting (TAB orqali to'ldirish mavjud)" - -#, python-brace-format -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "Konfiguratsiya fayl(lar)ini {} manzilida saqlashni xohlaysizmi?" - -msgid "Enabled" -msgstr "Yoqilgan" - -msgid "Disabled" -msgstr "O'chirilgan" - -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "Iltimos, ushbu muammo (va fayl) haqida https://github.com/archlinux/archinstall/issues manziliga xabar bering" - -msgid "Mirror name" -msgstr "Ko'zgu nomi" - -msgid "Url" -msgstr "URL" - -msgid "Select signature check" -msgstr "Imzo tekshirishni tanlang" - -msgid "Select execution mode" -msgstr "Bajarish rejimini tanlang" - -msgid "Press ? for help" -msgstr "Yordam uchun ? tugmasini bosing" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "Hyprland'ga qurilmalaringizga kirish huquqini berish variantini tanlang" - -msgid "Additional repositories" -msgstr "Qo'shimcha repozitoriylar" - -msgid "NTP" -msgstr "NTP" - -msgid "Swap on zram" -msgstr "Zram'da swap" - -msgid "Name" -msgstr "Nom" - -msgid "Signature check" -msgstr "Imzo tekshiruvi" - -#, python-brace-format -msgid "Selected free space segment on device {}:" -msgstr "{} qurilmasidagi tanlangan bo'sh joy segmenti:" - -#, python-brace-format -msgid "Size: {} / {}" -msgstr "Hajm: {} / {}" - -#, python-brace-format -msgid "Size (default: {}): " -msgstr "Hajm (standart: {}): " - -msgid "HSM device" -msgstr "HSM qurilmasi" - -msgid "Some packages could not be found in the repository" -msgstr "Ba'zi paketlar repozitoriyda topilmadi" - -msgid "User" -msgstr "Foydalanuvchi" - -msgid "The specified configuration will be applied" -msgstr "Ko'rsatilgan konfiguratsiya qo'llaniladi" - -msgid "Wipe" -msgstr "Tozalash" - -msgid "Mark/Unmark as XBOOTLDR" -msgstr "XBOOTLDR deb belgilash/bekor qilish" - -msgid "Loading packages..." -msgstr "Paketlar yuklanmoqda..." - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "Quyidagi ro'yxatdan qo'shimcha o'rnatiladigan paketlarni tanlang" - -msgid "Add a custom repository" -msgstr "Maxsus repozitoriy qo'shish" - -msgid "Change custom repository" -msgstr "Maxsus repozitoriyni o'zgartirish" - -msgid "Delete custom repository" -msgstr "Maxsus repozitoriyni o'chirish" - -msgid "Repository name" -msgstr "Repozitoriy nomi" - -msgid "Add a custom server" -msgstr "Maxsus server qo'shish" - -msgid "Change custom server" -msgstr "Maxsus serverni o'zgartirish" - -msgid "Delete custom server" -msgstr "Maxsus serverni o'chirish" - -msgid "Server url" -msgstr "Server URL'i" - -msgid "Select regions" -msgstr "Hududlarni tanlang" - -msgid "Add custom servers" -msgstr "Maxsus serverlar qo'shish" - -msgid "Add custom repository" -msgstr "Maxsus repozitoriy qo'shish" - -msgid "Loading mirror regions..." -msgstr "Ko'zgu hududlari yuklanmoqda..." - -msgid "Mirrors and repositories" -msgstr "Ko'zgular va repozitoriylar" - -msgid "Selected mirror regions" -msgstr "Tanlangan ko'zgu hududlari" - -msgid "Custom servers" -msgstr "Maxsus serverlar" - -msgid "Custom repositories" -msgstr "Maxsus repozitoriylar" - -msgid "Only ASCII characters are supported" -msgstr "Faqat ASCII belgilari qo'llab-quvvatlanadi" - -msgid "Show help" -msgstr "Yordamni ko'rsatish" - -msgid "Exit help" -msgstr "Yordamdan chiqish" - -msgid "Preview scroll up" -msgstr "Oldindan ko'rish (yuqoriga)" - -msgid "Preview scroll down" -msgstr "Oldindan ko'rish (pastga)" - -msgid "Move up" -msgstr "Yuqoriga" - -msgid "Move down" -msgstr "Pastga" - -msgid "Move right" -msgstr "O'ngga" - -msgid "Move left" -msgstr "Chapga" - -msgid "Jump to entry" -msgstr "Bandga o'tish" - -msgid "Skip selection (if available)" -msgstr "Tanlovni o'tkazib yuborish (agar mumkin bo'lsa)" - -msgid "Reset selection (if available)" -msgstr "Tanlovni bekor qilish (agar mumkin bo'lsa)" - -msgid "Select on single select" -msgstr "Tanlash (yakka tanlov)" - -msgid "Select on multi select" -msgstr "Tanlash (ko'p tanlov)" - -msgid "Reset" -msgstr "Bekor qilish" - -msgid "Skip selection menu" -msgstr "Tanlov menyusini o'tkazib yuborish" - -msgid "Start search mode" -msgstr "Qidiruv rejimini boshlash" - -msgid "Exit search mode" -msgstr "Qidiruv rejimidan chiqish" - -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "labwc sizning seat'ingizga (klaviatura, sichqoncha kabi qurilmalar to'plami) kirish huquqiga muhtoj" - -msgid "Choose an option to give labwc access to your hardware" -msgstr "labwc'ga qurilmalaringizga kirish huquqini berish variantini tanlang" - -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "niri sizning seat'ingizga (klaviatura, sichqoncha kabi qurilmalar to'plami) kirish huquqiga muhtoj" - -msgid "Choose an option to give niri access to your hardware" -msgstr "niri'ga qurilmalaringizga kirish huquqini berish variantini tanlang" - -msgid "Mark/Unmark as ESP" -msgstr "ESP deb belgilash/bekor qilish" - -msgid "Package group:" -msgstr "Paketlar guruhi:" - -msgid "Exit archinstall" -msgstr "Archinstall'dan chiqish" - -msgid "Reboot system" -msgstr "Tizimni qayta yuklash" - -msgid "chroot into installation for post-installation configurations" -msgstr "O'rnatishdan keyingi sozlamalar uchun tizimga chroot qilish" - -msgid "Installation completed" -msgstr "O'rnatish yakunlandi" - -msgid "What would you like to do next?" -msgstr "Keyin nima qilishni xohlaysiz?" - -#, python-brace-format -msgid "Select which mode to configure for \"{}\"" -msgstr "\"{}\" uchun qaysi rejimni sozlashni tanlang" - -msgid "Incorrect credentials file decryption password" -msgstr "Hisob ma'lumotlari faylining shifrini ochish paroli noto'g'ri" - -msgid "Incorrect password" -msgstr "Parol noto'g'ri" - -msgid "Credentials file decryption password" -msgstr "Hisob ma'lumotlari faylini shifrini ochish paroli" - -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "user_credentials.json faylidagi hisob ma'lumotlarini shifrlashni xohlaysizmi?" - -msgid "Credentials file encryption password" -msgstr "Hisob ma'lumotlari faylini shifrlash paroli" - -#, python-brace-format -msgid "Repositories: {}" -msgstr "Repozitoriylar: {}" - -msgid "New version available" -msgstr "Yangi versiya mavjud" - -msgid "Passwordless login" -msgstr "Parolsiz kirish" - -msgid "Second factor login" -msgstr "Ikki faktorli kirish" - -msgid "Bluetooth" -msgstr "Bluetooth" - -msgid "Would you like to configure Bluetooth?" -msgstr "Bluetooth'ni sozlashni xohlaysizmi?" - -msgid "Authentication" -msgstr "Autentifikatsiya" - -msgid "Applications" -msgstr "Ilovalar" - -msgid "U2F login method: " -msgstr "U2F orqali kirish usuli: " - -msgid "Passwordless sudo: " -msgstr "Parolsiz sudo: " - -#, python-brace-format -msgid "Btrfs snapshot type: {}" -msgstr "Btrfs snapshot turi: {}" - -msgid "Syncing the system..." -msgstr "Tizim sinxronizatsiya qilinmoqda..." - -msgid "Value cannot be empty" -msgstr "Qiymat bo'sh bo'lishi mumkin emas" - -msgid "Snapshot type" -msgstr "Snapshot turi" - -#, python-brace-format -msgid "Snapshot type: {}" -msgstr "Snapshot turi: {}" - -msgid "U2F login setup" -msgstr "U2F orqali kirishni sozlash" - -msgid "No U2F devices found" -msgstr "U2F qurilmalari topilmadi" - -msgid "U2F Login Method" -msgstr "U2F orqali kirish usuli" - -msgid "Enable passwordless sudo?" -msgstr "Parolsiz sudo yoqilsinmi?" - -#, python-brace-format -msgid "Setting up U2F device for user: {}" -msgstr "Foydalanuvchi {} uchun U2F qurilmasi sozlanmoqda" - -msgid "You may need to enter the PIN and then touch your U2F device to register it" -msgstr "Ro'yxatdan o'tkazish uchun PIN-kodni kiritib, U2F qurilmangizga teginishingiz kerak bo'lishi mumkin" - -#~ msgid "    Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -#~ msgstr "    Iltimos, ushbu muammo (va fayl) haqida https://github.com/archlinux/archinstall/issues manziliga xabar bering" diff --git a/examples/archinstall/archinstall/locales/zh-CN/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/zh-CN/LC_MESSAGES/base.mo deleted file mode 100644 index e20890c..0000000 Binary files a/examples/archinstall/archinstall/locales/zh-CN/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/zh-CN/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/zh-CN/LC_MESSAGES/base.po deleted file mode 100644 index 39493e7..0000000 --- a/examples/archinstall/archinstall/locales/zh-CN/LC_MESSAGES/base.po +++ /dev/null @@ -1,1679 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: clsty \n" -"Language-Team: \n" -"Language: zh_CN\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.3.2\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] 一份日志文件已在此处创建:{} {}" - -msgid " Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr " 请将此问题(和文件)提交到 https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "您真的要中止吗?" - -msgid "And one more time for verification: " -msgstr "再输入一次以进行验证:" - -msgid "Would you like to use swap on zram?" -msgstr "您想在 zram 上使用交换分区(swap)吗?" - -msgid "Desired hostname for the installation: " -msgstr "请输入安装后期望使用的主机名(hostname):" - -msgid "Username for required superuser with sudo privileges: " -msgstr "请输入需要超级用户(sudo 权限)的用户名:" - -msgid "Any additional users to install (leave blank for no users): " -msgstr "请输入要安装的其他用户(留空表示不安装其他用户):" - -msgid "Should this user be a superuser (sudoer)?" -msgstr "这个用户应该成为超级用户(sudoer)吗?" - -msgid "Select a timezone" -msgstr "选择时区" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "您想使用 GRUB 作为引导加载程序而不是 systemd-boot 吗?" - -msgid "Choose a bootloader" -msgstr "选择引导加载程序" - -msgid "Choose an audio server" -msgstr "请选择一个音频服务器(audio server)" - -msgid "Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and optional profile packages are installed." -msgstr "仅安装基本软件包(base)、基本开发软件包(base-devel)、Linux 内核(linux)、Linux 固件(linux-firmware)、efibootmgr 和可选的配置文件软件包(profile packages)。" - -msgid "If you desire a web browser, such as firefox or chromium, you may specify it in the following prompt." -msgstr "如果您需要一个网络浏览器,例如 firefox 或 chromium,您可以在下面的提示中指定它。" - -msgid "Write additional packages to install (space separated, leave blank to skip): " -msgstr "输入要安装的其他软件包(空格分隔,留空以跳过):" - -msgid "Copy ISO network configuration to installation" -msgstr "将 ISO 中的网络配置复制到安装目标中" - -msgid "Use NetworkManager (necessary for configuring internet graphically in GNOME and KDE)" -msgstr "使用 NetworkManager(在 GNOME 和 KDE 中以图形方式配置 Internet 所必需的)" - -msgid "Select one network interface to configure" -msgstr "选择要配置的网络接口" - -msgid "Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "选择要为“{}”配置的模式或跳过以使用默认模式“{}”" - -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "输入 {} 的 IP 和子网(例如:192.168.0.5/24):" - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "请输入您的网关(路由器)IP 地址,如果没有请留空:" - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "请输入您的 DNS 服务器地址(以空格分隔,如果没有请留空):" - -msgid "Select which filesystem your main partition should use" -msgstr "选择您的主分区应使用的文件系统" - -msgid "Current partition layout" -msgstr "当前的分区布局" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"选择要执行的操作\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "为分区输入所需的文件系统类型" - -msgid "Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "输入起始位置(单位:s,GB,% 等;默认值:{}):" - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "输入结束位置(单位:s,GB,% 等;例如:{}):" - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} 包含了已排队的分区,这将会删除这些分区,您确定吗?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"按索引选择要删除的分区" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"按索引选择要挂载的分区及挂载位置" - -msgid " * Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr " * 分区挂载点是相对于安装目标的目录内部的,例如引导分区(boot)的挂载点为 /boot。" - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "选择要挂载分区的位置(留空表示移除挂载点):" - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"选择要格式化的分区" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"选择要加密的分区" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"选择要标记为可引导的分区" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"选择要设置文件系统的分区" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "为分区选择所需的文件系统类型:" - -msgid "Archinstall language" -msgstr "Archinstall 语言" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "擦除所有选定的驱动器并使用最佳的默认分区布局" - -msgid "Select what to do with each individual drive (followed by partition usage)" -msgstr "选择对每个单独的驱动器执行的操作(后跟分区使用情况)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "选择要对所选的(一个或多个)块设备(block device)执行的操作" - -msgid "This is a list of pre-programmed profiles, they might make it easier to install things like desktop environments" -msgstr "这份列表列出了预先编写的配置文件,它们可能会使安装桌面环境等内容变得更加容易" - -msgid "Select keyboard layout" -msgstr "选择键盘布局" - -msgid "Select one of the regions to download packages from" -msgstr "选择一个要从中下载软件包的地区" - -msgid "Select one or more hard drives to use and configure" -msgstr "选择要使用和配置的硬盘驱动器(可多选)" - -msgid "For the best compatibility with your AMD hardware, you may want to use either the all open-source or AMD / ATI options." -msgstr "为了与您的 AMD 硬件实现最佳兼容性,您可能需要使用所有开源显卡驱动程序或 AMD / ATI 选项。" - -msgid "For the best compatibility with your Intel hardware, you may want to use either the all open-source or Intel options.\n" -msgstr "为了与您的 Intel 硬件实现最佳兼容性,您可能需要使用所有开源显卡驱动程序或 Intel 选项。\n" - -msgid "For the best compatibility with your Nvidia hardware, you may want to use the Nvidia proprietary driver.\n" -msgstr "为了与您的 Nvidia 硬件实现最佳兼容性,您可能需要使用 Nvidia 专有驱动程序。\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"选择一个显卡驱动程序,或留空以安装所有开源驱动程序" - -msgid "All open-source (default)" -msgstr "所有开源显卡驱动程序(默认)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "选择要使用的内核或留空以使用默认值“{}”" - -msgid "Choose which locale language to use" -msgstr "选择要使用的语言环境" - -msgid "Choose which locale encoding to use" -msgstr "选择要使用的语言环境编码" - -msgid "Select one of the values shown below: " -msgstr "选择以下值之一:" - -msgid "Select one or more of the options below: " -msgstr "选择以下选项之一或多个选项:" - -msgid "Adding partition...." -msgstr "正在添加分区……" - -msgid "You need to enter a valid fs-type in order to continue. See `man parted` for valid fs-type's." -msgstr "您需要输入有效的文件系统类型才能继续。请参阅 `man parted` 以获取有效的文件系统类型。" - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "错误:列出位于 URL “{}” 上的配置文件时出错:" - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "错误:无法将“{}”结果解码为 JSON:" - -msgid "Keyboard layout" -msgstr "键盘布局" - -msgid "Mirror region" -msgstr "镜像源地区" - -msgid "Locale language" -msgstr "语言环境" - -msgid "Locale encoding" -msgstr "语言环境编码" - -msgid "Drive(s)" -msgstr "驱动器" - -msgid "Disk layout" -msgstr "磁盘布局" - -msgid "Encryption password" -msgstr "加密密码" - -msgid "Swap" -msgstr "交换分区" - -msgid "Bootloader" -msgstr "引导加载程序" - -msgid "Root password" -msgstr "Root 密码" - -msgid "Superuser account" -msgstr "超级用户帐户" - -msgid "User account" -msgstr "用户帐户" - -msgid "Profile" -msgstr "配置文件" - -msgid "Audio" -msgstr "音频" - -msgid "Kernels" -msgstr "内核" - -msgid "Additional packages" -msgstr "附加软件包" - -msgid "Network configuration" -msgstr "网络配置" - -msgid "Automatic time sync (NTP)" -msgstr "自动时间同步(NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "安装({} 个配置缺失)" - -msgid "" -"You decided to skip harddrive selection\n" -"and will use whatever drive-setup is mounted at {} (experimental)\n" -"WARNING: Archinstall won't check the suitability of this setup\n" -"Do you wish to continue?" -msgstr "" -"您决定跳过硬盘驱动器选择\n" -"并将使用挂载在 {} 上的任何驱动器设置(实验性)\n" -"警告:Archinstall 将不会检查此设置的适用性\n" -"您是否要继续?" - -msgid "Re-using partition instance: {}" -msgstr "正在重新使用分区实例:{}" - -msgid "Create a new partition" -msgstr "创建一个新分区" - -msgid "Delete a partition" -msgstr "删除一个分区" - -msgid "Clear/Delete all partitions" -msgstr "清除/删除所有分区" - -msgid "Assign mount-point for a partition" -msgstr "为分区分配挂载点" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "将分区标记/取消标记为格式化(擦除数据)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "将分区标记/取消标记为加密" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "将分区标记/取消标记为可引导(/boot 会自动设置为可引导)" - -msgid "Set desired filesystem for a partition" -msgstr "为分区设置所需的文件系统" - -msgid "Abort" -msgstr "中止" - -msgid "Hostname" -msgstr "主机名" - -msgid "Not configured, unavailable unless setup manually" -msgstr "未配置;除非手动设置,否则不可用" - -msgid "Timezone" -msgstr "时区" - -msgid "Set/Modify the below options" -msgstr "设置/修改以下选项" - -msgid "Install" -msgstr "安装" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"按 ESC 跳过\n" -"\n" - -msgid "Suggest partition layout" -msgstr "建议分区布局" - -msgid "Enter a password: " -msgstr "输入密码:" - -msgid "Enter a encryption password for {}" -msgstr "为 {} 输入一个加密密码" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "输入磁盘加密密码(留空则不加密):" - -msgid "Create a required super-user with sudo privileges: " -msgstr "创建所需的具有 sudo 权限的超级用户:" - -msgid "Enter root password (leave blank to disable root): " -msgstr "输入 root 密码(留空以禁用 root):" - -msgid "Password for user \"{}\": " -msgstr "用户“{}”的密码:" - -msgid "Verifying that additional packages exist (this might take a few seconds)" -msgstr "正在验证附加软件包是否存在(这可能需要几秒或几十秒)" - -msgid "Would you like to use automatic time synchronization (NTP) with the default time servers?\n" -msgstr "您是否希望使用默认时间服务器进行自动时间同步(NTP)?\n" - -msgid "" -"Hardware time and other post-configuration steps might be required in order for NTP to work.\n" -"For more information, please check the Arch wiki" -msgstr "" -"为了使 NTP 正常工作,可能需要在之后进行硬件时间及其他配置的步骤。\n" -"更多信息,请查阅 Arch wiki" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "输入用户名以创建其他用户(留空以跳过):" - -msgid "Use ESC to skip\n" -msgstr "按 ESC 跳过\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for it to execute" -msgstr "" -"\n" -" 从列表中选取一个对象,并选择一个要执行的可选操作" - -msgid "Cancel" -msgstr "取消" - -msgid "Confirm and exit" -msgstr "确认并退出" - -msgid "Add" -msgstr "添加" - -msgid "Copy" -msgstr "复制" - -msgid "Edit" -msgstr "编辑" - -msgid "Delete" -msgstr "删除" - -msgid "Select an action for '{}'" -msgstr "为“{}”选择一个操作" - -msgid "Copy to new key:" -msgstr "复制到新密钥:" - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "未知的网卡类型:{}。可能的值为 {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"这是您选择的配置:" - -msgid "Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Pacman 已经在运行,最多等待 10 分钟或直到它终止。" - -msgid "Pre-existing pacman lock never exited. Please clean up any existing pacman sessions before using archinstall." -msgstr "预先存在的 pacman 锁从未退出。请在使用 archinstall 之前清理任何现有的 pacman 会话。" - -msgid "Choose which optional additional repositories to enable" -msgstr "选择要启用的可选附加仓库" - -msgid "Add a user" -msgstr "添加一个用户" - -msgid "Change password" -msgstr "修改密码" - -msgid "Promote/Demote user" -msgstr "提升/降级用户" - -msgid "Delete User" -msgstr "删除用户" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"定义一个新用户\n" - -msgid "User Name : " -msgstr "用户名:" - -msgid "Should {} be a superuser (sudoer)?" -msgstr "是否将 {} 设置为超级用户(sudoer)?" - -msgid "Define users with sudo privilege: " -msgstr "定义具有 sudo 权限的用户:" - -msgid "No network configuration" -msgstr "无网络配置" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "在 btrfs 分区上设置所需的子卷" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"选择要设置子卷的分区" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "管理当前分区的 btrfs 子卷" - -msgid "No configuration" -msgstr "无配置" - -msgid "Save user configuration" -msgstr "保存用户配置" - -msgid "Save user credentials" -msgstr "保存用户凭据" - -msgid "Save disk layout" -msgstr "保存磁盘布局" - -msgid "Save all" -msgstr "全部保存" - -msgid "Choose which configuration to save" -msgstr "选择要保存的配置" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "输入要保存配置的目录:" - -msgid "Not a valid directory: {}" -msgstr "不是有效的目录:{}" - -msgid "The password you are using seems to be weak," -msgstr "您正在使用的密码似乎很弱," - -msgid "are you sure you want to use it?" -msgstr "您确定要使用它吗?" - -msgid "Optional repositories" -msgstr "可选仓库" - -msgid "Save configuration" -msgstr "保存配置" - -msgid "Missing configurations:\n" -msgstr "缺少配置:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "必须指定 root 密码或至少 1 个超级用户" - -msgid "Manage superuser accounts: " -msgstr "管理超级用户账户:" - -msgid "Manage ordinary user accounts: " -msgstr "管理普通用户账户:" - -msgid " Subvolume :{:16}" -msgstr " 子卷:{:16}" - -msgid " mounted at {:16}" -msgstr " 挂载在 {:16}" - -msgid " with option {}" -msgstr " 与选项 {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -" 为新子卷填写所需的值 \n" - -msgid "Subvolume name " -msgstr "子卷名称 " - -msgid "Subvolume mountpoint" -msgstr "子卷挂载点" - -msgid "Subvolume options" -msgstr "子卷选项" - -msgid "Save" -msgstr "保存" - -msgid "Subvolume name :" -msgstr "子卷名称:" - -msgid "Select a mount point :" -msgstr "选择一个挂载点:" - -msgid "Select the desired subvolume options " -msgstr "选择所需的子卷选项 " - -msgid "Define users with sudo privilege, by username: " -msgstr "通过用户名定义具有 sudo 权限的用户:" - -msgid "[!] A log file has been created here: {}" -msgstr "[!] 已在此处创建一份日志文件:{}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "您想以默认结构使用 BTRFS 子卷吗?" - -msgid "Would you like to use BTRFS compression?" -msgstr "您想使用 BTRFS 压缩吗?" - -msgid "Would you like to create a separate partition for /home?" -msgstr "您想为 /home 创建一个单独的分区吗?" - -msgid "The selected drives do not have the minimum capacity required for an automatic suggestion\n" -msgstr "所选驱动器不具有自动建议所需的最小容量\n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "/home 分区的最小容量:{}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Arch Linux 分区的最小容量:{}GB" - -msgid "Continue" -msgstr "继续" - -msgid "yes" -msgstr "是" - -msgid "no" -msgstr "否" - -msgid "set: {}" -msgstr "设置:{}" - -msgid "Manual configuration setting must be a list" -msgstr "手动配置的设置必须是一个列表" - -msgid "No iface specified for manual configuration" -msgstr "没有为手动配置指定网卡接口" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "不具备自动 DHCP 的手动网卡配置需要一个 IP 地址" - -msgid "Add interface" -msgstr "添加接口" - -msgid "Edit interface" -msgstr "编辑接口" - -msgid "Delete interface" -msgstr "删除接口" - -msgid "Select interface to add" -msgstr "选择要添加的接口" - -msgid "Manual configuration" -msgstr "手动配置" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "将分区标记/取消标记为压缩(仅限 btrfs)" - -msgid "The password you are using seems to be weak, are you sure you want to use it?" -msgstr "您正在使用的密码似乎很弱,您确定要使用它吗?" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. gnome, kde, sway" -msgstr "提供一系列桌面环境和平铺窗口管理器供选择,例如 gnome、kde、sway" - -msgid "Select your desired desktop environment" -msgstr "选择您所需的桌面环境" - -msgid "A very basic installation that allows you to customize Arch Linux as you see fit." -msgstr "一个非常基本的安装,允许您根据需要自定义 Arch Linux。" - -msgid "Provides a selection of various server packages to install and enable, e.g. httpd, nginx, mariadb" -msgstr "提供一系列的多种服务器软件包以供安装启用,例如 httpd、nginx、mariadb" - -msgid "Choose which servers to install, if none then a minimal installation will be done" -msgstr "选择要安装的服务器,若无则将执行最小化安装" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "安装一个最小化系统以及 xorg 和显卡驱动程序。" - -msgid "Press Enter to continue." -msgstr "按 Enter 继续。" - -msgid "Would you like to chroot into the newly created installation and perform post-installation configuration?" -msgstr "您是否想要 chroot 到新创建的系统内以进行安装后的配置?" - -msgid "Are you sure you want to reset this setting?" -msgstr "您确定要重置此设置吗?" - -msgid "Select one or more hard drives to use and configure\n" -msgstr "选择要使用和配置的硬盘驱动器(可多选)\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "对现有设置的任何修改都将重置磁盘布局!" - -msgid "If you reset the harddrive selection this will also reset the current disk layout. Are you sure?" -msgstr "如果重置硬盘驱动器选择,则当前磁盘布局也将重置。您确定吗?" - -msgid "Save and exit" -msgstr "保存并退出" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"包含排队的分区,这将删除这些分区,您确定吗?" - -msgid "No audio server" -msgstr "没有音频服务器" - -msgid "(default)" -msgstr "(默认)" - -msgid "Use ESC to skip" -msgstr "按 ESC 跳过" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "使用 CTRL+C 可重置当前选项\n" - -msgid "Copy to: " -msgstr "复制到:" - -msgid "Edit: " -msgstr "编辑:" - -msgid "Key: " -msgstr "密钥:" - -msgid "Edit {}: " -msgstr "编辑 {}:" - -msgid "Add: " -msgstr "添加:" - -msgid "Value: " -msgstr "值:" - -msgid "You can skip selecting a drive and partitioning and use whatever drive-setup is mounted at /mnt (experimental)" -msgstr "您可以跳过选择驱动器和分区,并使用任何挂载在 /mnt 上的驱动器设置(实验性)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "选择一个磁盘或跳过并使用 /mnt 作为默认值" - -msgid "Select which partitions to mark for formatting:" -msgstr "选择要标记为格式化的分区:" - -msgid "Use HSM to unlock encrypted drive" -msgstr "使用 HSM 解锁加密驱动器" - -msgid "Device" -msgstr "设备" - -msgid "Size" -msgstr "大小" - -msgid "Free space" -msgstr "空闲空间" - -msgid "Bus-type" -msgstr "总线类型" - -msgid "Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "必须指定 root 密码或至少 1 个具有 sudo 权限的用户" - -msgid "Enter username (leave blank to skip): " -msgstr "输入用户名(留空跳过):" - -msgid "The username you entered is invalid. Try again" -msgstr "您输入的用户名无效。请重试" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "是否将“{}”设置为超级用户(sudo)?" - -msgid "Select which partitions to encrypt" -msgstr "选择要加密的分区" - -msgid "very weak" -msgstr "非常弱" - -msgid "weak" -msgstr "弱" - -msgid "moderate" -msgstr "一般" - -msgid "strong" -msgstr "强" - -msgid "Add subvolume" -msgstr "添加子卷" - -msgid "Edit subvolume" -msgstr "编辑子卷" - -msgid "Delete subvolume" -msgstr "删除子卷" - -msgid "Configured {} interfaces" -msgstr "已配置 {} 个接口" - -msgid "This option enables the number of parallel downloads that can occur during installation" -msgstr "此选项启用安装期间可以发生的并行下载数" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"输入要启用的并行下载数。\n" -" (输入一个介于 1 到 {} 之间的值)\n" -"提示:" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at a time )" -msgstr " - 最大值:{}(允许 {} 个并行下载,即同时允许 {} 个下载)" - -msgid " - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a time )" -msgstr " - 最小值:1(允许 1 个并行下载,同时允许 2 个下载)" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )" -msgstr " - 禁用/默认值:0(禁用并行下载,同时只允许 1 个下载)" - -#, python-brace-format -msgid "Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to disable]" -msgstr "输入无效!请重试一个有效输入 [1 到 {max_downloads},或 0 以禁用]" - -msgid "Parallel Downloads" -msgstr "并行下载" - -msgid "ESC to skip" -msgstr "按 ESC 跳过" - -msgid "CTRL+C to reset" -msgstr "按 CTRL+C 重置" - -msgid "TAB to select" -msgstr "按 TAB 选择" - -msgid "[Default value: 0] > " -msgstr "[默认值:0] > " - -msgid "To be able to use this translation, please install a font manually that supports the language." -msgstr "要使用此翻译,请手动安装支持该语言的字体。" - -msgid "The font should be stored as {}" -msgstr "字体应存储为 {}" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "Archinstall 需要 root 权限才能运行。有关更多信息,请参阅 --help。" - -msgid "Select an execution mode" -msgstr "选择执行模式" - -msgid "Unable to fetch profile from specified url: {}" -msgstr "无法从指定的 URL 获取配置文件:{}" - -msgid "Profiles must have unique name, but profile definitions with duplicate name found: {}" -msgstr "配置文件必须具有唯一的名称,但找到了具有重复名称的配置文件定义:{}" - -msgid "Select one or more devices to use and configure" -msgstr "选择要使用并配置的设备(可多选)" - -msgid "If you reset the device selection this will also reset the current disk layout. Are you sure?" -msgstr "如果重置设备选择,则当前磁盘布局也将重置。您确定吗?" - -msgid "Existing Partitions" -msgstr "现有分区" - -msgid "Select a partitioning option" -msgstr "选择分区选项" - -msgid "Enter the root directory of the mounted devices: " -msgstr "输入已挂载设备的根目录:" - -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "/home 分区的最小容量为:{}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "Arch Linux 分区的最小容量为:{}GB" - -msgid "This is a list of pre-programmed profiles_bck, they might make it easier to install things like desktop environments" -msgstr "这是预先编写的配置文件列表,它们可能会使安装桌面环境等内容更容易" - -msgid "Current profile selection" -msgstr "当前配置文件选择" - -msgid "Remove all newly added partitions" -msgstr "删除所有新添加的分区" - -msgid "Assign mountpoint" -msgstr "分配挂载点" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "将分区标记/取消标记为格式化(擦除数据)" - -msgid "Mark/Unmark as bootable" -msgstr "将分区标记/取消标记为可引导" - -msgid "Change filesystem" -msgstr "更改文件系统" - -msgid "Mark/Unmark as compressed" -msgstr "标记/取消标记为压缩" - -msgid "Set subvolumes" -msgstr "设置子卷" - -msgid "Delete partition" -msgstr "删除分区" - -msgid "Partition" -msgstr "分区" - -msgid "This partition is currently encrypted, to format it a filesystem has to be specified" -msgstr "此分区当前已加密,要格式化它必须指定文件系统" - -msgid "Partition mount-points are relative to inside the installation, the boot would be /boot as an example." -msgstr "分区挂载点是相对于安装目标的目录内部的,例如引导分区(boot)的挂载点为 /boot。" - -msgid "If mountpoint /boot is set, then the partition will also be marked as bootable." -msgstr "如果设置了挂载点 /boot,则该分区也将被标记为可引导。" - -msgid "Mountpoint: " -msgstr "挂载点:" - -msgid "Current free sectors on device {}:" -msgstr "设备 {} 上当前可用的扇区:" - -msgid "Total sectors: {}" -msgstr "总扇区数:{}" - -msgid "Enter the start sector (default: {}): " -msgstr "输入起始扇区(百分比或块号,默认:{}): " - -msgid "Enter the end sector of the partition (percentage or block number, default: {}): " -msgstr "输入分区的结束扇区(百分比或块号,默认:{}):" - -msgid "This will remove all newly added partitions, continue?" -msgstr "这将删除所有新添加的分区,是否继续?" - -msgid "Partition management: {}" -msgstr "分区管理:{}" - -msgid "Total length: {}" -msgstr "总长度:{}" - -msgid "Encryption type" -msgstr "加密类型" - -msgid "Partitions" -msgstr "分区" - -msgid "No HSM devices available" -msgstr "没有可用的 HSM 设备" - -msgid "Partitions to be encrypted" -msgstr "要加密的分区" - -msgid "Select disk encryption option" -msgstr "选择磁盘加密选项" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "选择要用于 HSM 的 FIDO2 设备" - -msgid "Use a best-effort default partition layout" -msgstr "使用最佳的默认分区布局" - -msgid "Manual Partitioning" -msgstr "手动分区" - -msgid "Pre-mounted configuration" -msgstr "预挂载配置" - -msgid "Unknown" -msgstr "未知" - -msgid "Partition encryption" -msgstr "分区加密" - -msgid " ! Formatting {} in " -msgstr " ! 正在格式化 {} 为 " - -msgid "← Back" -msgstr "← 返回" - -msgid "Disk encryption" -msgstr "磁盘加密" - -msgid "Configuration" -msgstr "配置" - -msgid "Password" -msgstr "密码" - -msgid "All settings will be reset, are you sure?" -msgstr "所有设置将被重置,您确定吗?" - -msgid "Back" -msgstr "返回" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "请选择要为所选配置文件安装的登录管理器:{}" - -msgid "Environment type: {}" -msgstr "环境类型:{}" - -msgid "The proprietary Nvidia driver is not supported by Sway. It is likely that you will run into issues, are you okay with that?" -msgstr "Sway 不支持 Nvidia 的专有驱动。您可能会遇到问题,您确定要继续吗?" - -msgid "Installed packages" -msgstr "已安装的软件包" - -msgid "Add profile" -msgstr "添加配置文件" - -msgid "Edit profile" -msgstr "编辑配置文件" - -msgid "Delete profile" -msgstr "删除配置文件" - -msgid "Profile name: " -msgstr "配置文件名称:" - -msgid "The profile name you entered is already in use. Try again" -msgstr "您输入的配置文件名称已被使用。请重试" - -msgid "Packages to be install with this profile (space separated, leave blank to skip): " -msgstr "要与此配置文件一同安装的软件包(空格分隔,留空跳过):" - -msgid "Services to be enabled with this profile (space separated, leave blank to skip): " -msgstr "要与此配置文件一同启用的服务(空格分隔,留空跳过):" - -msgid "Should this profile be enabled for installation?" -msgstr "是否启用此配置文件进行安装?" - -msgid "Create your own" -msgstr "创建您自己的" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"选择一个显卡驱动程序,或留空以安装所有开源驱动程序" - -msgid "Sway needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Sway 需要访问您的 seat(硬件设备的集合,例如键盘、鼠标等)" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"选择一个选项来给 Sway 提供对您硬件的访问权限" - -msgid "Graphics driver" -msgstr "显卡驱动程序" - -msgid "Greeter" -msgstr "登录管理器" - -msgid "Please chose which greeter to install" -msgstr "请选择要安装的登录管理器" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "这份列表列出了预编写的默认配置文件" - -msgid "Disk configuration" -msgstr "磁盘配置" - -msgid "Profiles" -msgstr "配置文件" - -msgid "Finding possible directories to save configuration files ..." -msgstr "正在查找可能用于保存配置文件的目录 ..." - -msgid "Select directory (or directories) for saving configuration files" -msgstr "选择一个或多个目录保存配置文件" - -msgid "Add a custom mirror" -msgstr "添加自定义镜像源" - -msgid "Change custom mirror" -msgstr "更改自定义镜像源" - -msgid "Delete custom mirror" -msgstr "删除自定义镜像源" - -msgid "Enter name (leave blank to skip): " -msgstr "输入用户名(留空跳过):" - -msgid "Enter url (leave blank to skip): " -msgstr "输入网址(留空跳过):" - -msgid "Select signature check option" -msgstr "选择签名检查选项" - -msgid "Select signature option" -msgstr "选择签名选项" - -msgid "Custom mirrors" -msgstr "自定义镜像源" - -msgid "Defined" -msgstr "已定义" - -msgid "Save user configuration (including disk layout)" -msgstr "保存用户配置(包括磁盘布局)" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled)\n" -"Save directory: " -msgstr "" -"输入要保存配置的目录(可按 TAB 补全)\n" -"保存目录:" - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"您想将 {} 个配置文件保存在以下位置吗?\n" -"\n" -"{}" - -msgid "Saving {} configuration files to {}" -msgstr "正在将 {} 配置文件保存到 {}" - -msgid "Mirrors" -msgstr "镜像源" - -msgid "Mirror regions" -msgstr "镜像源地区" - -msgid " - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+1} downloads at a time )" -msgstr " - 最大值:{}(允许 {} 个并行下载,每次允许 {max_downloads+1} 个下载)" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "输入无效!请重试一个有效输入 [1 到 {},或 0 以禁用]" - -msgid "Locales" -msgstr "区域设置" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE)" -msgstr "使用 NetworkManager(在 GNOME 和 KDE 中以图形界面配置互联网所必需)" - -msgid "Total: {} / {}" -msgstr "总长度:{} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "所有输入的值都可以后缀一个单位:B、KB、KiB、MB、MiB……" - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "若没有指定单位,则值被作为扇区块号" - -msgid "Enter start (default: sector {}): " -msgstr "输入起始扇区位置(默认:扇区 {}):" - -msgid "Enter end (default: {}): " -msgstr "输入末尾扇区位置(默认:{}):" - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "无法确定 fido2 设备。libfido2 是否已安装?" - -msgid "Path" -msgstr "路径" - -msgid "Manufacturer" -msgstr "制造商" - -msgid "Product" -msgstr "产品" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "无效的配置:{error}" - -msgid "Type" -msgstr "类型" - -msgid "This option enables the number of parallel downloads that can occur during package downloads" -msgstr "此选项启用软件包下载期间可以发生的并行下载数" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"输入要启用的并行下载数。\n" -"\n" -"提示:\n" - -msgid " - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr "- 最大推荐值:{}(每次同时允许 {} 个并行下载)" - -msgid " - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download at a time )\n" -msgstr " - 禁用/默认值:0(禁用并行下载,同时只允许 1 个下载)\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "输入无效!请重试有效输入 [或 0 以禁用]" - -msgid "Hyprland needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "Hyprland 需要访问您的 seat(硬件设备的集合,例如键盘、鼠标等)" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"选择一个选项来给 Hyprland 提供对您硬件的访问权限" - -msgid "All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "所有输入的值都可以后缀一个单位:%、B、KB、KiB、MB、MiB……" - -msgid "Would you like to use unified kernel images?" -msgstr "您想使用统一内核映像吗?" - -msgid "Unified kernel images" -msgstr "统一内核映像(UKI)" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "等待时间同步(timedatectl show)完成。" - -msgid "Time syncronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "时间同步未完成,请在等待时查阅文档以获知对策: https://archinstall.readthedocs.io/" - -msgid "Skipping waiting for automatic time sync (this can cause issues if time is out of sync during installation)" -msgstr "跳过等待自动时间同步(如果安装期间时间不同步,可能会导致问题)" - -msgid "Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "正在等待 Arch Linux 密钥环同步(archlinux-keyring-wkd-sync)完成。" - -msgid "Selected profiles: " -msgstr "已选配置文件:" - -msgid "Time synchronization not completing, while you wait - check the docs for workarounds: https://archinstall.readthedocs.io/" -msgstr "时间同步未完成,请在等待时查阅文档以获知对策: https://archinstall.readthedocs.io/" - -msgid "Mark/Unmark as nodatacow" -msgstr "标记/取消标记为 nodatacow" - -msgid "Would you like to use compression or disable CoW?" -msgstr "您想使用压缩还是禁用写时复制?" - -msgid "Use compression" -msgstr "使用压缩" - -msgid "Disable Copy-on-Write" -msgstr "禁用写时复制" - -msgid "Provides a selection of desktop environments and tiling window managers, e.g. GNOME, KDE Plasma, Sway" -msgstr "提供一个桌面环境和平铺窗口管理器的选集,例如 GNOME、KDE Plasma、Sway" - -msgid "Configuration type: {}" -msgstr "配置类型:{}" - -msgid "LVM configuration type" -msgstr "LVM 配置类型" - -msgid "LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "当前不支持超过 2 个分区的 LVM 磁盘加密" - -msgid "Use NetworkManager (necessary to configure internet graphically in GNOME and KDE Plasma)" -msgstr "使用 NetworkManager(在 GNOME 和 KDE Plasma 中以图形方式配置互联网所必需)" - -msgid "Select a LVM option" -msgstr "选择一个 LVM 选项" - -msgid "Partitioning" -msgstr "分区" - -msgid "Logical Volume Management (LVM)" -msgstr "逻辑卷管理(LVM)" - -msgid "Physical volumes" -msgstr "物理卷" - -msgid "Volumes" -msgstr "卷" - -msgid "LVM volumes" -msgstr "LVM 卷" - -msgid "LVM volumes to be encrypted" -msgstr "要加密的 LVM 卷" - -msgid "Select which LVM volumes to encrypt" -msgstr "选择要加密的 LVM 卷" - -msgid "Default layout" -msgstr "默认布局" - -msgid "No Encryption" -msgstr "不加密" - -msgid "LUKS" -msgstr "LUKS" - -msgid "LVM on LUKS" -msgstr "LUKS 上的 LVM" - -msgid "LUKS on LVM" -msgstr "LVM 上的 LUKS" - -msgid "Yes" -msgstr "是" - -msgid "No" -msgstr "否" - -msgid "Archinstall help" -msgstr "Archinstall 帮助" - -msgid " (default)" -msgstr "(默认)" - -msgid "Press Ctrl+h for help" -msgstr "按 Ctrl+h 以获取帮助" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "选择一个选项来给 Sway 提供对您硬件的访问权限" - -msgid "Seat access" -msgstr "Seat 访问" - -msgid "Mountpoint" -msgstr "挂载点" - -msgid "HSM" -msgstr "HSM" - -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "输入磁盘加密密码(留空则不加密):" - -msgid "Disk encryption password" -msgstr "磁盘加密密码" - -msgid "Partition - New" -msgstr "分区 - 新" - -msgid "Filesystem" -msgstr "文件系统" - -msgid "Invalid size" -msgstr "无效的大小" - -msgid "Start (default: sector {}): " -msgstr "起始位置(默认:扇区 {}):" - -msgid "End (default: {}): " -msgstr "末尾位置(默认:{}):" - -msgid "Subvolume name" -msgstr "子卷名称" - -msgid "Disk configuration type" -msgstr "磁盘配置类型" - -msgid "Root mount directory" -msgstr "根挂载目录" - -msgid "Select language" -msgstr "选择语言" - -msgid "Write additional packages to install (space separated, leave blank to skip)" -msgstr "输入要安装的其他软件包(空格分隔,留空以跳过)" - -msgid "Invalid download number" -msgstr "无效的并行下载数" - -msgid "Number downloads" -msgstr "并行下载数" - -msgid "The username you entered is invalid" -msgstr "您输入的用户名无效" - -msgid "Username" -msgstr "用户名" - -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "是否将“{}”设置为超级用户(sudo)?\n" - -msgid "Interfaces" -msgstr "接口" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "您需要在 IP-config 模式下输入一个有效的 IP" - -msgid "Modes" -msgstr "模式" - -msgid "IP address" -msgstr "IP 地址" - -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "请输入您的网关(路由器)IP 地址(没有请留空)" - -msgid "Gateway address" -msgstr "网关地址" - -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "请输入您的 DNS 服务器地址,以空格分隔(没有请留空)" - -msgid "DNS servers" -msgstr "DNS 服务器" - -msgid "Configure interfaces" -msgstr "配置接口" - -msgid "Kernel" -msgstr "内核" - -msgid "UEFI is not detected and some options are disabled" -msgstr "未检测到 UEFI,某些选项已被禁用" - -msgid "Info" -msgstr "信息" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "Sway 不支持 Nvidia 的专有驱动。" - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "您可能会遇到问题,确定要继续吗?" - -msgid "Main profile" -msgstr "主要配置文件" - -msgid "Confirm password" -msgstr "确认密码" - -msgid "The confirmation password did not match, please try again" -msgstr "确认密码不匹配,请重试" - -msgid "Not a valid directory" -msgstr "不是一个有效目录" - -msgid "Would you like to continue?" -msgstr "您想继续吗?" - -msgid "Directory" -msgstr "目录" - -msgid "Enter a directory for the configuration(s) to be saved (tab completion enabled)" -msgstr "输入一个要保存配置的目录(可按 TAB 补全)" - -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "您想将配置文件保存到 {} 吗?" - -msgid "Enabled" -msgstr "已启用" - -msgid "Disabled" -msgstr "已禁用" - -msgid "Please submit this issue (and file) to https://github.com/archlinux/archinstall/issues" -msgstr "请将此问题(和文件)提交到 https://github.com/archlinux/archinstall/issues" - -msgid "Mirror name" -msgstr "镜像源名称" - -msgid "Url" -msgstr "URL" - -msgid "Select signature check" -msgstr "选择签名检查" - -msgid "Select execution mode" -msgstr "选择执行模式" - -msgid "Press ? for help" -msgstr "按 ? 获取帮助" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "选择一个选项来给 Hyprland 提供对您硬件的访问权限" - -msgid "Additional repositories" -msgstr "附加仓库" - -msgid "NTP" -msgstr "NTP" - -msgid "Swap on zram" -msgstr "zram 上的 swap" - -msgid "Name" -msgstr "名称" - -msgid "Signature check" -msgstr "签名检查" - -msgid "Selected free space segment on device {}:" -msgstr "设备 {} 上已选的可用扇区:" - -msgid "Size: {} / {}" -msgstr "总大小:{} / {}" - -msgid "Size (default: {}): " -msgstr "大小(默认:{}):" - -msgid "HSM device" -msgstr "硬件安全模块设备" - -msgid "Some packages could not be found in the repository" -msgstr "某些软件包在仓库中未找到" - -msgid "User" -msgstr "用户" - -msgid "The specified configuration will be applied" -msgstr "指定的配置将被应用" - -msgid "Wipe" -msgstr "擦除" - -msgid "Mark/Unmark as XBOOTLDR" -msgstr "标记/取消标记为 XBOOTLDR" - -msgid "Loading packages..." -msgstr "加载软件包" - -msgid "Select any packages from the below list that should be installed additionally" -msgstr "在下方列表选择应当额外安装的任何软件包" - -msgid "Add a custom repository" -msgstr "添加一个自定义仓库" - -msgid "Change custom repository" -msgstr "更改自定义仓库" - -msgid "Delete custom repository" -msgstr "删除自定义仓库" - -msgid "Repository name" -msgstr "仓库名称" - -msgid "Add a custom server" -msgstr "添加一个自定义服务器" - -msgid "Change custom server" -msgstr "更改自定义服务器" - -msgid "Delete custom server" -msgstr "删除自定义服务器" - -msgid "Server url" -msgstr "服务器 URL" - -msgid "Select regions" -msgstr "选择地区" - -msgid "Add custom servers" -msgstr "添加自定义服务器" - -msgid "Add custom repository" -msgstr "添加自定义仓库" - -msgid "Loading mirror regions..." -msgstr "加载镜像源地区" - -msgid "Mirrors and repositories" -msgstr "镜像源与仓库" - -msgid "Selected mirror regions" -msgstr "已选的镜像源地区" - -msgid "Custom servers" -msgstr "自定义服务器" - -msgid "Custom repositories" -msgstr "自定义仓库" - -msgid "Only ASCII characters are supported" -msgstr "仅 ASCII 字符受支持" - -msgid "Show help" -msgstr "显示帮助" - -msgid "Exit help" -msgstr "退出帮助" - -msgid "Preview scroll up" -msgstr "预览向上滚动" - -msgid "Preview scroll down" -msgstr "预览向下滚动" - -msgid "Move up" -msgstr "上移" - -msgid "Move down" -msgstr "下移" - -msgid "Move right" -msgstr "右移" - -msgid "Move left" -msgstr "左移" - -msgid "Jump to entry" -msgstr "跳转到条目" - -msgid "Skip selection (if available)" -msgstr "跳过选区(若可用)" - -msgid "Reset selection (if available)" -msgstr "重置选区(若可用)" - -msgid "Select on single select" -msgstr "选择单项" - -msgid "Select on multi select" -msgstr "选择多项" - -msgid "Reset" -msgstr "重置" - -msgid "Skip selection menu" -msgstr "跳过选区菜单" - -msgid "Start search mode" -msgstr "开始搜索模式" - -msgid "Exit search mode" -msgstr "退出搜索模式" - -msgid "labwc needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "labwc 需要访问您的 seat(硬件设备的集合,例如键盘、鼠标等)" - -msgid "Choose an option to give labwc access to your hardware" -msgstr "选择一个选项来给 labwc 提供对您硬件的访问权限" - -msgid "niri needs access to your seat (collection of hardware devices i.e. keyboard, mouse, etc)" -msgstr "niri 需要访问您的 seat(硬件设备的集合,例如键盘、鼠标等)" - -msgid "Choose an option to give niri access to your hardware" -msgstr "选择一个选项来给 niri 提供对您硬件的访问权限" - -msgid "Mark/Unmark as ESP" -msgstr "标记/取消标记为 ESP" - -msgid "Package group:" -msgstr "软件包组:" - -msgid "Exit archinstall" -msgstr "退出 archinstall" - -msgid "Reboot system" -msgstr "重启系统" - -msgid "chroot into installation for post-installation configurations" -msgstr "为了安装后的配置,chroot 进安装好的系统内" - -msgid "Installation completed" -msgstr "安装已完成" - -msgid "What would you like to do next?" -msgstr "您接下来想做什么?" - -msgid "Select which mode to configure for \"{}\"" -msgstr "选择要为“{}”配置的模式" - -#, fuzzy -msgid "Incorrect credentials file decryption password" -msgstr "磁盘加密密码" - -#, fuzzy -msgid "Incorrect password" -msgstr "Root 密码" - -#, fuzzy -msgid "Credentials file decryption password" -msgstr "磁盘加密密码" - -#, fuzzy -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "您想将配置文件保存到 {} 吗?" - -#, fuzzy -msgid "Credentials file encryption password" -msgstr "磁盘加密密码" - -#, fuzzy -msgid "Repositories: {}" -msgstr "仓库名称" diff --git a/examples/archinstall/archinstall/locales/zh-TW/LC_MESSAGES/base.mo b/examples/archinstall/archinstall/locales/zh-TW/LC_MESSAGES/base.mo deleted file mode 100644 index c42c780..0000000 Binary files a/examples/archinstall/archinstall/locales/zh-TW/LC_MESSAGES/base.mo and /dev/null differ diff --git a/examples/archinstall/archinstall/locales/zh-TW/LC_MESSAGES/base.po b/examples/archinstall/archinstall/locales/zh-TW/LC_MESSAGES/base.po deleted file mode 100644 index 25d0269..0000000 --- a/examples/archinstall/archinstall/locales/zh-TW/LC_MESSAGES/base.po +++ /dev/null @@ -1,1795 +0,0 @@ -# SPDX-FileCopyrightText: 2025 neko0xff -msgid "" -msgstr "" -"Project-Id-Version: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: 2025-08-10 11:45+0800\n" -"Last-Translator: neko0xff \n" -"Language-Team: Chinese <>\n" -"Language: zh_TW\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: Lokalize 25.04.3\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -msgid "[!] A log file has been created here: {} {}" -msgstr "[!] 記錄檔已在此處建立: {} {}" - -msgid "" -" Please submit this issue (and file) to https://github.com/archlinux/archin" -"stall/issues" -msgstr " 請將此問題(以及相關檔案)提交到 https://github.com/archlinux/archinstall/issues" - -msgid "Do you really want to abort?" -msgstr "您真的要中止嗎?" - -msgid "And one more time for verification: " -msgstr "請再輸入一次,得以進行驗證: " - -msgid "Would you like to use swap on zram?" -msgstr "您想在 zram 上使用置換磁碟分割區(swap)嗎?" - -msgid "Desired hostname for the installation: " -msgstr "請輸入安裝後預期使用的主機名稱 (hostname):" - -msgid "Username for required superuser with sudo privileges: " -msgstr "請輸入需要超級使用者的使用者名稱 (sudo 權限) : " - -msgid "Any additional users to install (leave blank for no users): " -msgstr "要新增的其他使用者 (留空表示不新建其他使用者):" - -msgid "Should this user be a superuser (sudoer)?" -msgstr "這個使用者應該成為超級使用者(sudoer)嗎?" - -msgid "Select a timezone" -msgstr "選擇時區" - -msgid "Would you like to use GRUB as a bootloader instead of systemd-boot?" -msgstr "您希望使用 GRUB 作為開機引導程式,而不是 systemd-boot 嗎?" - -msgid "Choose a bootloader" -msgstr "選擇開機引導程式" - -msgid "Choose an audio server" -msgstr "請選擇音效伺服器" - -msgid "" -"Only packages such as base, base-devel, linux, linux-firmware, efibootmgr and " -"optional profile packages are installed." -msgstr "" -"僅安裝基本套件,如 base、base-devel、linux、linux-firmware、efibootmgr 和選擇性的軟體設定套件包。" - -msgid "" -"If you desire a web browser, such as firefox or chromium, you may specify it i" -"n the following prompt." -msgstr "如果您需要網頁瀏覽器,例如 firefox 或 chromium,你可以在下面的提示字元中進行指定。" - -msgid "" -"Write additional packages to install (space separated, leave blank to skip): " -msgstr "請輸入您要安裝的其它套件包 (請以空格進行分隔,若留空則直接跳過): " - -msgid "Copy ISO network configuration to installation" -msgstr "將 ISO映像檔中的網路組態設置複製到安裝環境中" - -msgid "" -"Use NetworkManager (necessary for configuring internet graphically in GNOME an" -"d KDE)" -msgstr "使用 NetworkManager(在 GNOME 和 KDE 中以圖形化方式設定網際網路所需的功能)" - -msgid "Select one network interface to configure" -msgstr "請選擇要設定的網路介面" - -msgid "" -"Select which mode to configure for \"{}\" or skip to use default mode \"{}\"" -msgstr "請選擇要為“{}”設定的模式或直接使用預設模式“{}”" - -msgid "Enter the IP and subnet for {} (example: 192.168.0.5/24): " -msgstr "請輸入 {} 的 IP 和子網路(例如 : 192.168.0.5/24): " - -msgid "Enter your gateway (router) IP address or leave blank for none: " -msgstr "請輸入您閘道器(路由器)的 IP 地址或者留空直接跳過: " - -msgid "Enter your DNS servers (space separated, blank for none): " -msgstr "請輸入您的 DNS 伺服器 (請以空格進行分隔,若留空則直接跳過): " - -msgid "Select which filesystem your main partition should use" -msgstr "請選擇您的主要磁碟分割區應該使用哪種檔案系統。" - -msgid "Current partition layout" -msgstr "目前的磁碟分割區配置" - -msgid "" -"Select what to do with\n" -"{}" -msgstr "" -"請選擇要執行的操作\n" -"{}" - -msgid "Enter a desired filesystem type for the partition" -msgstr "請輸入您想要的磁碟分割區檔案系統類型" - -msgid "" -"Enter the start location (in parted units: s, GB, %, etc. ; default: {}): " -msgstr "請輸入起始位置 (以 parted 單位表示: s、GB、% 等等;預設值: {} ): " - -msgid "Enter the end location (in parted units: s, GB, %, etc. ; ex: {}): " -msgstr "請輸入結束位置 (以 parted 單位表示: s、GB、% 等等;預設值: {} ): " - -msgid "{} contains queued partitions, this will remove those, are you sure?" -msgstr "{} 包含佇列中的磁碟分割區,這將會移除這些磁碟分割區,您確定嗎?" - -msgid "" -"{}\n" -"\n" -"Select by index which partitions to delete" -msgstr "" -"{}\n" -"\n" -"請根據索引選擇需要刪除的磁碟分割區" - -msgid "" -"{}\n" -"\n" -"Select by index which partition to mount where" -msgstr "" -"{}\n" -"\n" -"請依據索引選擇需要掛載的磁碟分割區以及掛載點" - -msgid "" -" * Partition mount-points are relative to inside the installation, the boot wo" -"uld be /boot as an example." -msgstr " * 磁碟分割區的掛載點是相對於安裝內部的,例如 boot 應該為 /boot。" - -msgid "Select where to mount partition (leave blank to remove mountpoint): " -msgstr "請選擇掛載磁碟分割區的位置 (若留空,則直接移除掛載點): " - -msgid "" -"{}\n" -"\n" -"Select which partition to mask for formatting" -msgstr "" -"{}\n" -"\n" -"請選擇要進行格式化的磁碟分割區" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as encrypted" -msgstr "" -"{}\n" -"\n" -"請選擇要進行加密的磁碟分割區" - -msgid "" -"{}\n" -"\n" -"Select which partition to mark as bootable" -msgstr "" -"{}\n" -"\n" -"請選擇需要標記為可做開機引導的磁碟分割區" - -msgid "" -"{}\n" -"\n" -"Select which partition to set a filesystem on" -msgstr "" -"{}\n" -"\n" -"請選擇要在哪一個磁碟分割區上,進行設定檔案系統" - -msgid "Enter a desired filesystem type for the partition: " -msgstr "為磁碟分割區輸入所需的檔案系統類型: " - -msgid "Archinstall language" -msgstr "Archinstall 語言" - -msgid "Wipe all selected drives and use a best-effort default partition layout" -msgstr "移除所有選定的硬碟並且使用最佳的預設分割佈局" - -msgid "" -"Select what to do with each individual drive (followed by partition usage)" -msgstr "依序選擇硬碟(並設定分割佈局)" - -msgid "Select what you wish to do with the selected block devices" -msgstr "選擇您希望對所選區塊裝置執行的操作" - -msgid "" -"This is a list of pre-programmed profiles, they might make it easier to instal" -"l things like desktop environments" -msgstr "以下是預編程設置檔的列表,它們可以讓您更容易安裝桌面環境等東西" - -msgid "Select keyboard layout" -msgstr "選擇鍵盤配置" - -msgid "Select one of the regions to download packages from" -msgstr "請選擇一個地區進行下載軟體套件包" - -msgid "Select one or more hard drives to use and configure" -msgstr "選擇要使用和設定的硬碟(可多選)" - -msgid "" -"For the best compatibility with your AMD hardware, you may want to use either " -"the all open-source or AMD / ATI options." -msgstr "為了與您的 AMD 設備實現最佳兼容性,您可能需要使用通用開源的驅動程式或選擇 AMD / ATI 選項。" - -msgid "" -"For the best compatibility with your Intel hardware, you may want to use eithe" -"r the all open-source or Intel options.\n" -msgstr "為了與您的 Intel 設備實現最佳兼容性,您可能需要使用通用開源的驅動程式或選擇 Intel 選項。\n" - -msgid "" -"For the best compatibility with your Nvidia hardware, you may want to use the " -"Nvidia proprietary driver.\n" -msgstr "為了與您的 Nvidia 設備實現最佳兼容性,您可能需要使用 Nvidia 官方的驅動程式。\n" - -msgid "" -"\n" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"請選擇需要安裝的顯示卡驅動程式或留空以直接安裝通用開源的驅動程式" - -msgid "All open-source (default)" -msgstr "全部使用通用開源的驅動程式(預設)" - -msgid "Choose which kernels to use or leave blank for default \"{}\"" -msgstr "請選擇要使用的内核,或者留空直接使用預設值 “{}”" - -msgid "Choose which locale language to use" -msgstr "選擇要使用的區域語言" - -msgid "Choose which locale encoding to use" -msgstr "選擇要使用的區域編碼" - -msgid "Select one of the values shown below: " -msgstr "選擇如下所示的值之一: " - -msgid "Select one or more of the options below: " -msgstr "請選擇以下一個或多個選項: " - -msgid "Adding partition...." -msgstr "新增磁碟分割區...." - -msgid "" -"You need to enter a valid fs-type in order to continue. See `man parted` for v" -"alid fs-type's." -msgstr "您需要輸入有效的檔案系統類型才能繼續。有關有效的檔案系統類型,請參閱 `man parted`。" - -msgid "Error: Listing profiles on URL \"{}\" resulted in:" -msgstr "錯誤:在 URL \"{}\" 上列出設定檔時出錯: " - -msgid "Error: Could not decode \"{}\" result as JSON:" -msgstr "錯誤:無法將 \"{}\" 結果解碼為 JSON: " - -msgid "Keyboard layout" -msgstr "鍵盤配置" - -msgid "Mirror region" -msgstr "鏡像伺服器位置" - -msgid "Locale language" -msgstr "區域語言" - -msgid "Locale encoding" -msgstr "區域編碼" - -msgid "Drive(s)" -msgstr "硬碟" - -msgid "Disk layout" -msgstr "磁盤佈局" - -msgid "Encryption password" -msgstr "加密密碼" - -msgid "Swap" -msgstr "置換空間" - -msgid "Bootloader" -msgstr "開機引導程式" - -msgid "Root password" -msgstr "Root 密碼" - -msgid "Superuser account" -msgstr "超級使用者帳戶" - -msgid "User account" -msgstr "使用者帳戶" - -msgid "Profile" -msgstr "設定檔" - -msgid "Audio" -msgstr "音效" - -msgid "Kernels" -msgstr "内核" - -msgid "Additional packages" -msgstr "額外套件包" - -msgid "Network configuration" -msgstr "網路組態設置" - -msgid "Automatic time sync (NTP)" -msgstr "自動同步時間 (NTP)" - -msgid "Install ({} config(s) missing)" -msgstr "安裝(缺少 {} 個配置)" - -msgid "" -"You decided to skip harddrive selection\n" -"and will use whatever drive-setup is mounted at {} (experimental)\n" -"WARNING: Archinstall won't check the suitability of this setup\n" -"Do you wish to continue?" -msgstr "" -"您決定跳過磁碟機選擇\n" -"並將使用掛載在 {} (實驗性) 上任一的硬碟設置\n" -"警告:Archinstall 不會檢查此設置的適用性\n" -"您想繼續嗎?" - -msgid "Re-using partition instance: {}" -msgstr "重複使用磁碟分割區實例: {}" - -msgid "Create a new partition" -msgstr "建立新的磁碟分割區" - -msgid "Delete a partition" -msgstr "刪除一個磁碟分割區" - -msgid "Clear/Delete all partitions" -msgstr "清除/刪除所有磁碟分割區" - -msgid "Assign mount-point for a partition" -msgstr "為磁碟分割區分配掛載點" - -msgid "Mark/Unmark a partition to be formatted (wipes data)" -msgstr "標記/取消標記要格式化的磁碟分割區 (清除資料)" - -msgid "Mark/Unmark a partition as encrypted" -msgstr "將磁碟分割區標記/取消標記為加密" - -msgid "Mark/Unmark a partition as bootable (automatic for /boot)" -msgstr "將磁碟分割區標記/取消標記為可開機引導(自動為 /boot)" - -msgid "Set desired filesystem for a partition" -msgstr "為磁碟分割區設置所需的檔案系統" - -msgid "Abort" -msgstr "中止" - -msgid "Hostname" -msgstr "主機名稱" - -msgid "Not configured, unavailable unless setup manually" -msgstr "未進行組態設置,除非手動設置,否則無法使用" - -msgid "Timezone" -msgstr "時區" - -msgid "Set/Modify the below options" -msgstr "請設置/修改以下選項" - -msgid "Install" -msgstr "安裝" - -msgid "" -"Use ESC to skip\n" -"\n" -msgstr "" -"按下 ESC 鍵,直接跳過\n" -"\n" - -msgid "Suggest partition layout" -msgstr "建議磁碟分割區配置" - -msgid "Enter a password: " -msgstr "輸入密碼: " - -msgid "Enter a encryption password for {}" -msgstr "輸入 {} 的加密密碼" - -msgid "Enter disk encryption password (leave blank for no encryption): " -msgstr "輸入磁碟機加密密碼 ( 留空表示不加密 ): " - -msgid "Create a required super-user with sudo privileges: " -msgstr "建立具有 sudo 權限的超級使用者: " - -msgid "Enter root password (leave blank to disable root): " -msgstr "請輸入 root 密碼 (若留空,則直接禁用 root帳號) : " - -msgid "Password for user \"{}\": " -msgstr "使用者 “{}” 的密碼: " - -msgid "" -"Verifying that additional packages exist (this might take a few seconds)" -msgstr "驗證其他套件是否存在 (這可能需要幾秒鐘)" - -msgid "" -"Would you like to use automatic time synchronization (NTP) with the default ti" -"me servers?\n" -msgstr "是否要對預設時間伺服器使用自動時間同步 (NTP) ?\n" - -msgid "" -"Hardware time and other post-configuration steps might be required in order fo" -"r NTP to work.\n" -"For more information, please check the Arch wiki" -msgstr "" -"為了使 NTP 正常運作,可能需要調整硬體時間和其他後續設定步驟。\n" -"若想了解更多相關資訊,請到 Arch wiki 進行查看" - -msgid "Enter a username to create an additional user (leave blank to skip): " -msgstr "請輸入使用者名稱,得以建立其他使用者 (若留空,則直接跳過): " - -msgid "Use ESC to skip\n" -msgstr "按下 ESC 鍵,得以跳過\n" - -msgid "" -"\n" -" Choose an object from the list, and select one of the available actions for i" -"t to execute" -msgstr "" -"\n" -"請從列表中選擇一個對象,並選擇需要執行的操作" - -msgid "Cancel" -msgstr "取消" - -msgid "Confirm and exit" -msgstr "確認並退出" - -msgid "Add" -msgstr "新增" - -msgid "Copy" -msgstr "複製" - -msgid "Edit" -msgstr "編輯" - -msgid "Delete" -msgstr "刪除" - -msgid "Select an action for '{}'" -msgstr "請為 “{}” ,而選擇一個操作" - -msgid "Copy to new key:" -msgstr "複製到新密鑰: " - -msgid "Unknown nic type: {}. Possible values are {}" -msgstr "未知網卡類型: {}。 可能的值為 {}" - -msgid "" -"\n" -"This is your chosen configuration:" -msgstr "" -"\n" -"這是您所選擇的組態設置: " - -msgid "" -"Pacman is already running, waiting maximum 10 minutes for it to terminate." -msgstr "Pacman 已在執行中,最多等待 10 分鐘即可終止。" - -msgid "" -"Pre-existing pacman lock never exited. Please clean up any existing pacman ses" -"sions before using archinstall." -msgstr "先前存在的 pacman 鎖還尚未退出。請在使用 archinstall 之前,關閉且清理所有的 pacman 工作階段。" - -msgid "Choose which optional additional repositories to enable" -msgstr "請選擇要啟用的選用附加套件庫" - -msgid "Add a user" -msgstr "新增使用者" - -msgid "Change password" -msgstr "修改密碼" - -msgid "Promote/Demote user" -msgstr "升級/降級使用者" - -msgid "Delete User" -msgstr "刪除使用者" - -msgid "" -"\n" -"Define a new user\n" -msgstr "" -"\n" -"定義一個新使用者\n" - -msgid "User Name : " -msgstr "使用者名稱: " - -msgid "Should {} be a superuser (sudoer)?" -msgstr "是否將 {} 設置為超級使用者 (sudoer) ?" - -msgid "Define users with sudo privilege: " -msgstr "定義具有 sudo 權限的使用者 : " - -msgid "No network configuration" -msgstr "無網路組態配置" - -msgid "Set desired subvolumes on a btrfs partition" -msgstr "在 btrfs 磁碟分割區上設置所需的子分區(卷)" - -msgid "" -"{}\n" -"\n" -"Select which partition to set subvolumes on" -msgstr "" -"{}\n" -"\n" -"選擇要在哪個磁碟分割區上設置子分區(卷)" - -msgid "Manage btrfs subvolumes for current partition" -msgstr "管理目前磁碟分割區的 btrfs 子分區(卷)" - -msgid "No configuration" -msgstr "無組態配置" - -msgid "Save user configuration" -msgstr "保存使用者組態配置" - -msgid "Save user credentials" -msgstr "保存使用者憑證" - -msgid "Save disk layout" -msgstr "保存硬碟配置" - -msgid "Save all" -msgstr "全部存檔" - -msgid "Choose which configuration to save" -msgstr "選擇要保存的組態配置" - -msgid "Enter a directory for the configuration(s) to be saved: " -msgstr "輸入要保存組態配置的目錄:" - -msgid "Not a valid directory: {}" -msgstr "不是有效的目錄: {}" - -msgid "The password you are using seems to be weak," -msgstr "您所使用的密碼,安全性似乎很弱," - -msgid "are you sure you want to use it?" -msgstr "您確定要使用它嗎 ?" - -msgid "Optional repositories" -msgstr "可選擇的套件庫" - -msgid "Save configuration" -msgstr "保存組態配置" - -msgid "Missing configurations:\n" -msgstr "缺少組態配置:\n" - -msgid "Either root-password or at least 1 superuser must be specified" -msgstr "必須指定 root 密碼或至少 1 個超級使用者" - -msgid "Manage superuser accounts: " -msgstr "管理超級使用者帳號: " - -msgid "Manage ordinary user accounts: " -msgstr "管理普通使用者帳號: " - -msgid " Subvolume :{:16}" -msgstr " 子分區(卷) :{:16}" - -msgid " mounted at {:16}" -msgstr " 掛載在 {:16}" - -msgid " with option {}" -msgstr " 與選項 {}" - -msgid "" -"\n" -" Fill the desired values for a new subvolume \n" -msgstr "" -"\n" -" 填寫新子分區(卷)所需的值\n" - -msgid "Subvolume name " -msgstr "子分區(卷)名" - -msgid "Subvolume mountpoint" -msgstr "子分區(卷)掛載點" - -msgid "Subvolume options" -msgstr "子分區(卷)選項" - -msgid "Save" -msgstr "存檔" - -msgid "Subvolume name :" -msgstr "子分區(卷)名:" - -msgid "Select a mount point :" -msgstr "選擇掛載點: " - -msgid "Select the desired subvolume options " -msgstr "選擇所需的子分區(卷)選項" - -msgid "Define users with sudo privilege, by username: " -msgstr "根據使用者名稱定義具有 sudo 權限的使用者:" - -msgid "[!] A log file has been created here: {}" -msgstr "[!] 記錄檔已在此處建立: {}" - -msgid "Would you like to use BTRFS subvolumes with a default structure?" -msgstr "您想使用具有預設結構的 BTRFS 子分區(卷)嗎? " - -msgid "Would you like to use BTRFS compression?" -msgstr "您想使用 BTRFS 壓縮嗎 ? " - -msgid "Would you like to create a separate partition for /home?" -msgstr "您想為 /home 建立一個單獨的磁碟分割區嗎 ?" - -msgid "" -"The selected drives do not have the minimum capacity required for an automatic" -" suggestion\n" -msgstr "所選硬碟沒有自動建議所需的最小容量 \n" - -msgid "Minimum capacity for /home partition: {}GB\n" -msgstr "/home 磁碟分割區的最小容量為:{}GB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GB" -msgstr "Arch Linux 磁碟分割區的最小容量為:{}GB" - -msgid "Continue" -msgstr "繼續" - -msgid "yes" -msgstr "是" - -msgid "no" -msgstr "否" - -msgid "set: {}" -msgstr "設置: {}" - -msgid "Manual configuration setting must be a list" -msgstr "手動配置設置必須為一個列表" - -msgid "No iface specified for manual configuration" -msgstr "沒有為手動配置指定 iface" - -msgid "Manual nic configuration with no auto DHCP requires an IP address" -msgstr "沒有自動 DHCP 的手動 nic 配置需要 IP 地址" - -msgid "Add interface" -msgstr "新增界面" - -msgid "Edit interface" -msgstr "編輯界面" - -msgid "Delete interface" -msgstr "刪除界面" - -msgid "Select interface to add" -msgstr "請選擇需要新增的界面" - -msgid "Manual configuration" -msgstr "手動配置" - -msgid "Mark/Unmark a partition as compressed (btrfs only)" -msgstr "將磁碟分割區標記/取消標記為壓縮(僅限 btrfs)" - -msgid "" -"The password you are using seems to be weak, are you sure you want to use it?" -msgstr "您使用的密碼似乎很弱,您確定要使用嗎? " - -msgid "" -"Provides a selection of desktop environments and tiling window managers, e.g. " -"gnome, kde, sway" -msgstr "提供一系列桌面環境和平鋪視窗管理器,例如 gnome, kde, sway" - -msgid "Select your desired desktop environment" -msgstr "選擇您欲安裝的桌面環境" - -msgid "" -"A very basic installation that allows you to customize Arch Linux as you see f" -"it." -msgstr "一個非常基本的安裝,同時允許根據您的需求而自行客制化 Arch Linux。" - -msgid "" -"Provides a selection of various server packages to install and enable, e.g. ht" -"tpd, nginx, mariadb" -msgstr "提供一系列可供安裝和啟用的伺服器服務套件,例如 httpd、nginx、mariadb" - -msgid "" -"Choose which servers to install, if none then a minimal installation will be d" -"one" -msgstr "請選擇要安裝的伺服器服務,如果你未進行選擇,則將進行最小化安裝" - -msgid "Installs a minimal system as well as xorg and graphics drivers." -msgstr "安裝最小化系統以及 xorg 和顯示卡驅動程式。" - -msgid "Press Enter to continue." -msgstr "請按下 Enter 鍵,以繼續。" - -msgid "" -"Would you like to chroot into the newly created installation and perform post-" -"installation configuration?" -msgstr "您是否想要讓 chroot 進入新建立的安裝,並執行設定安裝後的組態配置嗎 ?" - -msgid "Are you sure you want to reset this setting?" -msgstr "您確定要重置此設置嗎? " - -msgid "Select one or more hard drives to use and configure\n" -msgstr "選擇一個或多個硬碟来使用和配置\n" - -msgid "Any modifications to the existing setting will reset the disk layout!" -msgstr "對現有設置的任何修改都將重置硬碟配置!" - -msgid "" -"If you reset the harddrive selection this will also reset the current disk lay" -"out. Are you sure?" -msgstr "如果您重設硬碟選擇,這也會重設目前的磁碟配置。您確定嗎?" - -msgid "Save and exit" -msgstr "存檔並退出" - -msgid "" -"{}\n" -"contains queued partitions, this will remove those, are you sure?" -msgstr "" -"{}\n" -"包含佇列的磁碟分割區,這將刪除這些磁碟分割區,您確定嗎 ?" - -msgid "No audio server" -msgstr "無音效伺服器" - -msgid "(default)" -msgstr "(預設)" - -msgid "Use ESC to skip" -msgstr "按下 ESC 鍵,則直接跳過" - -msgid "" -"Use CTRL+C to reset current selection\n" -"\n" -msgstr "按下 CTRL+C 組合鍵,則可重置目前選項\n" - -msgid "Copy to: " -msgstr "複製到: " - -msgid "Edit: " -msgstr "編輯: " - -msgid "Key: " -msgstr "密鑰: " - -msgid "Edit {}: " -msgstr "編輯 {}: " - -msgid "Add: " -msgstr "新增: " - -msgid "Value: " -msgstr "值: " - -msgid "" -"You can skip selecting a drive and partitioning and use whatever drive-setup i" -"s mounted at /mnt (experimental)" -msgstr "您可以跳過選擇硬碟和磁碟分割區,並使用任一掛載在 /mnt 的硬碟設置(實驗性)" - -msgid "Select one of the disks or skip and use /mnt as default" -msgstr "選取其中一個磁碟或跳過,並使用 /mnt 作為預設值" - -msgid "Select which partitions to mark for formatting:" -msgstr "選擇要標記為格式化的磁碟分割區: " - -msgid "Use HSM to unlock encrypted drive" -msgstr "使用 HSM 解鎖加密硬碟" - -msgid "Device" -msgstr "裝置" - -msgid "Size" -msgstr "大小" - -msgid "Free space" -msgstr "可用空間" - -msgid "Bus-type" -msgstr "匯流排類型" - -msgid "" -"Either root-password or at least 1 user with sudo privileges must be specified" -msgstr "必須指定 root 密碼,或至少 1 個具有 sudo 權限的使用者" - -msgid "Enter username (leave blank to skip): " -msgstr "請輸入使用者名稱 (若留空,則直接跳過) : " - -msgid "The username you entered is invalid. Try again" -msgstr "您輸入的使用者名稱無效。請重試" - -msgid "Should \"{}\" be a superuser (sudo)?" -msgstr "是否將 “{}” 設置為超級使用者 (sudo)?" - -msgid "Select which partitions to encrypt" -msgstr "選擇要加密的磁碟分割區: " - -msgid "very weak" -msgstr "非常弱" - -msgid "weak" -msgstr "弱" - -msgid "moderate" -msgstr "一般" - -msgid "strong" -msgstr "強" - -msgid "Add subvolume" -msgstr "新增子分區(卷)" - -msgid "Edit subvolume" -msgstr "編輯子分區(卷)" - -msgid "Delete subvolume" -msgstr "刪除子分區(卷)" - -msgid "Configured {} interfaces" -msgstr "已經進行組態配置的 {} 界面" - -msgid "" -"This option enables the number of parallel downloads that can occur during ins" -"tallation" -msgstr "此選項可啟用安裝期間可能發生的平行下載次數" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -" (Enter a value between 1 to {})\n" -"Note:" -msgstr "" -"輸入要啟用的平行下載數。\n" -" (輸入一個 1 到 {} 之間的值) \n" -"請注意: " - -msgid "" -" - Maximum value : {} ( Allows {} parallel downloads, allows {} downloads at" -" a time )" -msgstr " - 最小值: 1 (允許 1 個平行下載,同時允許 2 個下載)" - -msgid "" -" - Minimum value : 1 ( Allows 1 parallel download, allows 2 downloads at a t" -"ime )" -msgstr " - 最小值: 1 (允許 1 個平行下載,同時允許 2 個下載)" - -msgid "" -" - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download" -" at a time )" -msgstr " - 停用/預設 : 0 (預設平行下載,同時只允許 1 個下載)" - -#, python-brace-format -msgid "" -"Invalid input! Try again with a valid input [1 to {max_downloads}, or 0 to dis" -"able]" -msgstr "輸入無效 ! 請嘗試使用有效輸入重試 [1 到 {max_downloads},或 0 到停用]" - -msgid "Parallel Downloads" -msgstr "並行下載" - -msgid "ESC to skip" -msgstr "按下 ESC 鍵,則直接跳過" - -msgid "CTRL+C to reset" -msgstr "按下 CTRL+C 組合鍵,直接進行重置" - -msgid "TAB to select" -msgstr "按下 TAB 鍵,進行選擇" - -msgid "[Default value: 0] > " -msgstr "[預設值: 0] > " - -msgid "" -"To be able to use this translation, please install a font manually that suppor" -"ts the language." -msgstr "為了能夠使用此翻譯,請手動安裝支持該語言的字體。" - -msgid "The font should be stored as {}" -msgstr "字體應儲存為 {}" - -msgid "Archinstall requires root privileges to run. See --help for more." -msgstr "Archinstall 需要 root 權限才能運行。若想了解更多相關資訊,請參閱 --help 指令選項。" - -msgid "Select an execution mode" -msgstr "選擇執行模式" - -msgid "Unable to fetch profile from specified url: {}" -msgstr "無法從指定的 URL ,直接獲取設定檔: {}" - -msgid "" -"Profiles must have unique name, but profile definitions with duplicate name fo" -"und: {}" -msgstr "設定檔必須具有唯一的名稱,但找到具有重新名稱的設定檔定義: {}" - -msgid "Select one or more devices to use and configure" -msgstr "選擇一個或多個硬碟来使用和配置" - -msgid "" -"If you reset the device selection this will also reset the current disk layout" -". Are you sure?" -msgstr "如果您重設裝置選擇,這也會重設目前的磁碟配置。您確定嗎?" - -msgid "Existing Partitions" -msgstr "現有的磁碟分割區" - -msgid "Select a partitioning option" -msgstr "選擇磁碟分割選項" - -msgid "Enter the root directory of the mounted devices: " -msgstr "請輸入已掛載裝置的根目錄:" - -msgid "Minimum capacity for /home partition: {}GiB\n" -msgstr "/home 磁碟分割區的最小容量為 : {} GiB\n" - -msgid "Minimum capacity for Arch Linux partition: {}GiB" -msgstr "Arch Linux 磁碟分割區的最小容量為 : {} GiB" - -msgid "" -"This is a list of pre-programmed profiles_bck, they might make it easier to in" -"stall things like desktop environments" -msgstr "這是預先編程的 profiles_bck 清單,它們可能會讓您更容易安裝桌面環境等東西" - -msgid "Current profile selection" -msgstr "目前設定檔的選擇" - -msgid "Remove all newly added partitions" -msgstr "建立新磁碟分割區" - -msgid "Assign mountpoint" -msgstr "分配掛載點" - -msgid "Mark/Unmark to be formatted (wipes data)" -msgstr "標記/取消標記要格式化的磁碟分割區(清除資料)" - -msgid "Mark/Unmark as bootable" -msgstr "標記/取消標記磁碟分割區為可開機引導" - -msgid "Change filesystem" -msgstr "更改檔案系統" - -msgid "Mark/Unmark as compressed" -msgstr "將磁碟分割區標記/取消標記為壓縮" - -msgid "Set subvolumes" -msgstr "刪除子分區(卷)" - -msgid "Delete partition" -msgstr "刪除一個磁碟分割區" - -msgid "Partition" -msgstr "磁碟分割區" - -msgid "" -"This partition is currently encrypted, to format it a filesystem has to be spe" -"cified" -msgstr "此磁碟分割區目前已被加密,若要格式化它,必須指定檔案系統" - -msgid "" -"Partition mount-points are relative to inside the installation, the boot would" -" be /boot as an example." -msgstr " * 磁碟分割區掛載點是相對於安裝内部的,例如 boot 應該為 /boot。" - -msgid "" -"If mountpoint /boot is set, then the partition will also be marked as bootable" -"." -msgstr "如果設置了掛載點/boot,則該分區也將被標記為可開機引導。" - -msgid "Mountpoint: " -msgstr "掛載點 : " - -msgid "Current free sectors on device {}:" -msgstr "目前 {} 設備上的可用區塊 : " - -msgid "Total sectors: {}" -msgstr "總區塊數 : {}" - -msgid "Enter the start sector (default: {}): " -msgstr "輸入起始區塊 (預設 : {}) : " - -msgid "" -"Enter the end sector of the partition (percentage or block number, default: {}" -"): " -msgstr "輸入磁碟分割區的結束區塊 (以百分比或區塊編號表示,預設 : {} ): " - -msgid "This will remove all newly added partitions, continue?" -msgstr "這將刪除所有新增的磁碟分割區,是否繼續?" - -msgid "Partition management: {}" -msgstr "磁碟分割區管理 : {}" - -msgid "Total length: {}" -msgstr "總長度 : {}" - -msgid "Encryption type" -msgstr "加密類型" - -msgid "Partitions" -msgstr "磁碟分割區" - -msgid "No HSM devices available" -msgstr "沒有可用的 HSM 設備" - -msgid "Partitions to be encrypted" -msgstr "需要加密的磁碟分割區 : " - -msgid "Select disk encryption option" -msgstr "選擇磁碟加密選項" - -msgid "Select a FIDO2 device to use for HSM" -msgstr "選擇要用於 HSM 的 FIDO2 設備" - -msgid "Use a best-effort default partition layout" -msgstr "使用最佳的預設磁碟分割配置" - -msgid "Manual Partitioning" -msgstr "手動分割" - -msgid "Pre-mounted configuration" -msgstr "預先掛載組態配置" - -msgid "Unknown" -msgstr "未知" - -msgid "Partition encryption" -msgstr "磁碟分割區加密" - -msgid " ! Formatting {} in " -msgstr " ! 正在格式化 {} 為 " - -msgid "← Back" -msgstr "← 返回" - -msgid "Disk encryption" -msgstr "磁碟加密" - -msgid "Configuration" -msgstr "組態配置" - -msgid "Password" -msgstr "密碼" - -msgid "All settings will be reset, are you sure?" -msgstr "所有設置將被重新設置,你確定嗎 ? " - -msgid "Back" -msgstr "返回" - -msgid "Please chose which greeter to install for the chosen profiles: {}" -msgstr "請選擇依據設定檔安裝的登錄管理器 : {}" - -msgid "Environment type: {}" -msgstr "系統環境類型: {}" - -msgid "" -"The proprietary Nvidia driver is not supported by Sway. It is likely that you " -"will run into issues, are you okay with that?" -msgstr "Sway 不支持 Nvidia 的官方驅動。您可能會遇到一些問題,您確定要繼續嗎 ?" - -msgid "Installed packages" -msgstr "已安裝的套件包" - -msgid "Add profile" -msgstr "新增設定檔" - -msgid "Edit profile" -msgstr "編輯設定檔" - -msgid "Delete profile" -msgstr "刪除設定檔" - -msgid "Profile name: " -msgstr "設定檔名稱 : " - -msgid "The profile name you entered is already in use. Try again" -msgstr "您輸入的設定檔名稱已被使用。請重試" - -msgid "" -"Packages to be install with this profile (space separated, leave blank to skip" -"): " -msgstr "編寫要安裝的套件設定檔 (以空格分隔,留空以跳過) : " - -msgid "" -"Services to be enabled with this profile (space separated, leave blank to skip" -"): " -msgstr "編寫要啟用的附加服務設定檔 (以空格分隔,留空以跳過) :" - -msgid "Should this profile be enabled for installation?" -msgstr "是否啟用此設定檔進行安裝 ?" - -msgid "Create your own" -msgstr "建立您自己的" - -msgid "" -"\n" -"Select a graphics driver or leave blank to install all open-source drivers" -msgstr "" -"\n" -"\n" -"選擇顯示卡驅動程式或留空以直接安裝開源的驅動程式" - -msgid "" -"Sway needs access to your seat (collection of hardware devices i.e. keyboard, " -"mouse, etc)" -msgstr "Sway 需要存取您的用戶環境(硬體設備的集合,例如鍵盤,滑鼠等)" - -msgid "" -"\n" -"\n" -"Choose an option to give Sway access to your hardware" -msgstr "" -"\n" -"\n" -"選擇一個選項,讓 Sway 可以存取您的硬體" - -msgid "Graphics driver" -msgstr "顯示卡驅動程式" - -msgid "Greeter" -msgstr "登錄管理器" - -msgid "Please chose which greeter to install" -msgstr "請選擇要安裝的登錄管理器" - -msgid "This is a list of pre-programmed default_profiles" -msgstr "這是預設的預設設定檔列表" - -msgid "Disk configuration" -msgstr "硬碟組態配置" - -msgid "Profiles" -msgstr "設定檔" - -msgid "Finding possible directories to save configuration files ..." -msgstr "正在查找可能用於保存組態配置檔的目錄 ..." - -msgid "Select directory (or directories) for saving configuration files" -msgstr "選擇用於保存組態配置檔的目錄(或多個目錄)" - -msgid "Add a custom mirror" -msgstr "新增自訂鏡像伺服器" - -msgid "Change custom mirror" -msgstr "變更自訂鏡像伺服器" - -msgid "Delete custom mirror" -msgstr "刪除自訂鏡像伺服器" - -msgid "Enter name (leave blank to skip): " -msgstr "輸入使用者名稱(留空以跳過): " - -msgid "Enter url (leave blank to skip): " -msgstr "輸入 URL (留空以跳過):" - -msgid "Select signature check option" -msgstr "選擇簽章校驗選項" - -msgid "Select signature option" -msgstr "選擇簽章選項" - -msgid "Custom mirrors" -msgstr "自訂鏡像伺服器" - -msgid "Defined" -msgstr "已定義" - -msgid "Save user configuration (including disk layout)" -msgstr "儲存使用者組態設定 (包括磁碟配置)" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled" -")\n" -"Save directory: " -msgstr "" -"輸入需要進行保存組態設定的目錄 (啟用標籤完成) \n" -"進行保存組態設定的目錄 : " - -msgid "" -"Do you want to save {} configuration file(s) in the following location?\n" -"\n" -"{}" -msgstr "" -"您是否要將 {} 組態檔案儲存到下列位置 ?\n" -"{}" - -msgid "Saving {} configuration files to {}" -msgstr "將 {} 組態檔案儲存至 {}" - -msgid "Mirrors" -msgstr "鏡像伺服器" - -msgid "Mirror regions" -msgstr "鏡像伺服器所在地" - -msgid "" -" - Maximum value : {} ( Allows {} parallel downloads, allows {max_downloads+" -"1} downloads at a time )" -msgstr "- 最大值 : {} (允許 {} 個平行下載,同時允許 {max_downloads+1} 個下載)" - -msgid "Invalid input! Try again with a valid input [1 to {}, or 0 to disable]" -msgstr "輸入無效! 請再試一次使用有效輸入 [1 至 {},或 0 至停用]" - -msgid "Locales" -msgstr "地區" - -msgid "" -"Use NetworkManager (necessary to configure internet graphically in GNOME and K" -"DE)" -msgstr "使用 NetworkManager (在 GNOME 和 KDE 中以圖形設定網際網路所需)" - -msgid "Total: {} / {}" -msgstr "總長度: {} / {}" - -msgid "All entered values can be suffixed with a unit: B, KB, KiB, MB, MiB..." -msgstr "所有輸入的值都可以後綴一個單位 : B、KB、KiB、MB、MiB..." - -msgid "If no unit is provided, the value is interpreted as sectors" -msgstr "如果沒有提供單位,則該值會被解釋為扇區" - -msgid "Enter start (default: sector {}): " -msgstr "輸入起始區塊 (預設 : 扇區 {}): " - -msgid "Enter end (default: {}): " -msgstr "輸入結束區塊 (預設: {}): " - -msgid "Unable to determine fido2 devices. Is libfido2 installed?" -msgstr "無法確定是否偵測到 fido2 裝置。您是否已安裝 libfido2 ?" - -msgid "Path" -msgstr "路徑" - -msgid "Manufacturer" -msgstr "製造廠商" - -msgid "Product" -msgstr "產品" - -#, python-brace-format -msgid "Invalid configuration: {error}" -msgstr "組態配置無效 : {error}" - -msgid "Type" -msgstr "類型" - -msgid "" -"This option enables the number of parallel downloads that can occur during pac" -"kage downloads" -msgstr "此選項可啟用套件下載期間可能發生的平行下載次數" - -msgid "" -"Enter the number of parallel downloads to be enabled.\n" -"\n" -"Note:\n" -msgstr "" -"輸入要啟用的平行下載數。\n" -"( 輸入一個 1 到 {max_downloads} 之間的值) \n" -"請注意 :\n" - -msgid "" -" - Maximum recommended value : {} ( Allows {} parallel downloads at a time )" -msgstr "- 最小值 : 1 (允許 1 個平行下載,同時允許 2 個下載)" - -msgid "" -" - Disable/Default : 0 ( Disables parallel downloading, allows only 1 download" -" at a time )\n" -msgstr " - 停用/預設 : 0 (停用平行下載,同時只允許 1 個下載)\n" - -msgid "Invalid input! Try again with a valid input [or 0 to disable]" -msgstr "無效輸入!請嘗試使用有效輸入再試一次 [或使用 0 進行停用] 。" - -msgid "" -"Hyprland needs access to your seat (collection of hardware devices i.e. keyboa" -"rd, mouse, etc)" -msgstr "Hyprland 需要存取您的用戶環境(收集硬體裝置,例如鍵盤、滑鼠等)" - -msgid "" -"\n" -"\n" -"Choose an option to give Hyprland access to your hardware" -msgstr "" -"\n" -"\n" -"選擇一個選項,讓 Hyprland 能存取您的硬體" - -msgid "" -"All entered values can be suffixed with a unit: %, B, KB, KiB, MB, MiB..." -msgstr "所有輸入的值都可以後綴一個單位 : %、B、KB、KiB、MB、MiB..." - -msgid "Would you like to use unified kernel images?" -msgstr "您想使用統一內核映像嗎 ?" - -msgid "Unified kernel images" -msgstr "統一內核映像" - -msgid "Waiting for time sync (timedatectl show) to complete." -msgstr "等待時間同步 (timedatectl show) 完成。" - -msgid "" -"Time syncronization not completing, while you wait - check the docs for workar" -"ounds: https://archinstall.readthedocs.io/" -msgstr "時間同步未完成,而您正在等待 - 檢查文件以瞭解解決方案 : https://archinstall.readthedocs.io/" - -msgid "" -"Skipping waiting for automatic time sync (this can cause issues if time is out" -" of sync during installation)" -msgstr "跳過等待自動時間同步(如果安裝期間時間不同步,這可能會導致問題)" - -msgid "" -"Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete." -msgstr "等待 Arch Linux 鑰匙圈同步 (archlinux-keyring-wkd-sync) 完成。" - -msgid "Selected profiles: " -msgstr "己選取的設定檔 : " - -msgid "" -"Time synchronization not completing, while you wait - check the docs for worka" -"rounds: https://archinstall.readthedocs.io/" -msgstr "時間同步未完成,而您正在等待 - 檢查文件以瞭解解決方案 : https://archinstall.readthedocs.io/" - -msgid "Mark/Unmark as nodatacow" -msgstr "標記/取消標記為 nodatacow" - -msgid "Would you like to use compression or disable CoW?" -msgstr "您想使用壓縮或停用寫入時複製(CoW) ?" - -msgid "Use compression" -msgstr "使用壓縮功能" - -msgid "Disable Copy-on-Write" -msgstr "停用寫入時複製 (CoW) 功能" - -msgid "" -"Provides a selection of desktop environments and tiling window managers, e.g. " -"GNOME, KDE Plasma, Sway" -msgstr "提供一系列的桌面環境和平鋪視窗管理員,例如 GNOME、KDE Plasma、Sway" - -msgid "Configuration type: {}" -msgstr "組態配置類型 : {}" - -msgid "LVM configuration type" -msgstr "LVM 組態配置類型" - -msgid "" -"LVM disk encryption with more than 2 partitions is currently not supported" -msgstr "目前不支援超過 2 個磁碟分割的 LVM 磁碟加密" - -msgid "" -"Use NetworkManager (necessary to configure internet graphically in GNOME and K" -"DE Plasma)" -msgstr "使用 NetworkManager (在 GNOME 和 KDE Plasma 中以圖形設定網際網路所需)" - -msgid "Select a LVM option" -msgstr "選擇 LVM 選項" - -msgid "Partitioning" -msgstr "磁碟分割" - -msgid "Logical Volume Management (LVM)" -msgstr "邏輯磁碟分區(卷)管理 (LVM)" - -msgid "Physical volumes" -msgstr "物理磁碟分區(卷)" - -msgid "Volumes" -msgstr "磁碟分區(卷)" - -msgid "LVM volumes" -msgstr "LVM 磁碟分區(卷)" - -msgid "LVM volumes to be encrypted" -msgstr "需加密的 LVM 磁碟分區(卷)" - -msgid "Select which LVM volumes to encrypt" -msgstr "選擇要加密的LVM磁碟分區(卷): " - -msgid "Default layout" -msgstr "預設配置" - -msgid "No Encryption" -msgstr "無加密功能" - -msgid "LUKS" -msgstr "Linux統一金鑰設定(LUKS)" - -msgid "LVM on LUKS" -msgstr "LVM on LUKS" - -msgid "LUKS on LVM" -msgstr "LUKS on LVM" - -msgid "Yes" -msgstr "是" - -msgid "No" -msgstr "否" - -msgid "Archinstall help" -msgstr "Archinstall 協助" - -msgid " (default)" -msgstr "(預設)" - -msgid "Press Ctrl+h for help" -msgstr "按下 Ctrl+h 鍵得以取得協助" - -msgid "Choose an option to give Sway access to your hardware" -msgstr "選擇一個選項,讓 Sway 可以存取您的硬體" - -msgid "Seat access" -msgstr "用戶環境存取" - -msgid "Mountpoint" -msgstr "掛載點" - -msgid "HSM" -msgstr "硬體安全模組(HSM)" - -msgid "Enter disk encryption password (leave blank for no encryption)" -msgstr "輸入磁碟加密密碼 (留空表示不加密)" - -msgid "Disk encryption password" -msgstr "磁碟機加密密碼" - -msgid "Partition - New" -msgstr "磁碟分區 - 新增" - -msgid "Filesystem" -msgstr "檔案系統" - -msgid "Invalid size" -msgstr "無效大小" - -msgid "Start (default: sector {}): " -msgstr "輸入起始區塊 (預設: {} ): " - -msgid "End (default: {}): " -msgstr "輸入結束區塊 (預設: {}): " - -msgid "Subvolume name" -msgstr "子分區(卷)名稱" - -msgid "Disk configuration type" -msgstr "磁碟組態配置類型" - -msgid "Root mount directory" -msgstr "根掛載目錄" - -msgid "Select language" -msgstr "選擇區域語言" - -msgid "" -"Write additional packages to install (space separated, leave blank to skip)" -msgstr "請輸入您要安裝的其它套件包(以空格分隔,留空以跳過)" - -msgid "Invalid download number" -msgstr "無效的下載次數" - -msgid "Number downloads" -msgstr "下載次數" - -msgid "The username you entered is invalid" -msgstr "您所輸入的使用者名稱無效" - -msgid "Username" -msgstr "使用者名稱: " - -msgid "Should \"{}\" be a superuser (sudo)?\n" -msgstr "是否將 “{}” 設置為超級使用者 (sudo)?\n" - -msgid "Interfaces" -msgstr "介面" - -msgid "You need to enter a valid IP in IP-config mode" -msgstr "您需要在 IP 組態配置模式中輸入有效的 IP" - -msgid "Modes" -msgstr "模式" - -msgid "IP address" -msgstr "IP 位置" - -msgid "Enter your gateway (router) IP address (leave blank for none)" -msgstr "請輸入您閘道器(路由器)的 IP 地址或留空以跳過: " - -msgid "Gateway address" -msgstr "閘道器位址" - -msgid "Enter your DNS servers with space separated (leave blank for none)" -msgstr "請輸入您的 DNS 伺服器(以空格分隔,留空以跳過))" - -msgid "DNS servers" -msgstr "DNS 伺服器" - -msgid "Configure interfaces" -msgstr "組態設置介面" - -msgid "Kernel" -msgstr "内核" - -msgid "UEFI is not detected and some options are disabled" -msgstr "未偵測到 UEFI,且某些選項已停用" - -msgid "Info" -msgstr "資訊" - -msgid "The proprietary Nvidia driver is not supported by Sway." -msgstr "Sway 不支持 Nvidia 官方的顯示卡驅動。" - -msgid "It is likely that you will run into issues, are you okay with that?" -msgstr "您很可能會遇到問題,您能接受嗎 ?" - -msgid "Main profile" -msgstr "主要設定檔" - -msgid "Confirm password" -msgstr "確認密碼" - -msgid "The confirmation password did not match, please try again" -msgstr "確認密碼不符合,請再試一次" - -msgid "Not a valid directory" -msgstr "不是有效的目錄" - -msgid "Would you like to continue?" -msgstr "您想繼續嗎 ?" - -msgid "Directory" -msgstr "目錄" - -msgid "" -"Enter a directory for the configuration(s) to be saved (tab completion enabled" -")" -msgstr "輸入用於儲存組態設定的目錄 (啟用標籤完成)" - -msgid "Do you want to save the configuration file(s) to {}?" -msgstr "您是否要將組態設定檔儲存到 {} ?" - -msgid "Enabled" -msgstr "己啟用" - -msgid "Disabled" -msgstr "己停用" - -msgid "" -"Please submit this issue (and file) to https://github.com/archlinux/archinstal" -"l/issues" -msgstr "請將此問題(以及檔案)提交到 https://github.com/archlinux/archinstall/issues" - -msgid "Mirror name" -msgstr "鏡像伺服器區域" - -msgid "Url" -msgstr "URL" - -msgid "Select signature check" -msgstr "選擇簽章核對" - -msgid "Select execution mode" -msgstr "選擇執行模式" - -msgid "Press ? for help" -msgstr "按下 ? 鍵,而尋求協助" - -msgid "Choose an option to give Hyprland access to your hardware" -msgstr "選擇一個選項,讓 Hyprland 能存取您的硬體" - -msgid "Additional repositories" -msgstr "加入額外的套件庫" - -msgid "NTP" -msgstr "網路時間協定(NTP)" - -msgid "Swap on zram" -msgstr "在 zram 上進行置換(Swap)" - -msgid "Name" -msgstr "名稱" - -msgid "Signature check" -msgstr "簽章檢查" - -msgid "Selected free space segment on device {}:" -msgstr "已選取裝置 {} 上的可用空間區段:" - -msgid "Size: {} / {}" -msgstr "總長度: {}/{}" - -msgid "Size (default: {}): " -msgstr "輸入起始區塊( 預設: {} ):" - -msgid "HSM device" -msgstr "HSM 裝置" - -msgid "Some packages could not be found in the repository" -msgstr "某些套件包無法在套件庫中找到" - -msgid "User" -msgstr "使用者" - -msgid "The specified configuration will be applied" -msgstr "指定的組態設定將會套用" - -msgid "Wipe" -msgstr "清除" - -msgid "Mark/Unmark as XBOOTLDR" -msgstr "標記/取消標記磁碟分割區為 XBOOTLDR" - -msgid "Loading packages..." -msgstr "正在載入套件包..." - -msgid "" -"Select any packages from the below list that should be installed additionally" -msgstr "從下列清單中選擇任何需要額外安裝的套件包" - -msgid "Add a custom repository" -msgstr "新增自訂套件庫" - -msgid "Change custom repository" -msgstr "變更自訂套件庫" - -msgid "Delete custom repository" -msgstr "刪除自訂套件庫" - -msgid "Repository name" -msgstr "套件庫名稱" - -msgid "Add a custom server" -msgstr "新增自訂伺服器" - -msgid "Change custom server" -msgstr "變更自訂伺服器" - -msgid "Delete custom server" -msgstr "刪除自訂伺服器" - -msgid "Server url" -msgstr "伺服器 URL" - -#, fuzzy -msgid "Select regions" -msgstr "選擇簽章選項" - -msgid "Add custom servers" -msgstr "新增自訂伺服器" - -msgid "Add custom repository" -msgstr "新增自訂套件庫" - -msgid "Loading mirror regions..." -msgstr "載入鏡像伺服器所在地 ..." - -msgid "Mirrors and repositories" -msgstr "鏡像伺服器和套件庫" - -msgid "Selected mirror regions" -msgstr "己選擇鏡像伺服器所在地" - -msgid "Custom servers" -msgstr "自訂伺服器位置" - -msgid "Custom repositories" -msgstr "自訂套件庫" - -msgid "Only ASCII characters are supported" -msgstr "僅支援 ASCII 字元" - -msgid "Show help" -msgstr "顯示協助" - -msgid "Exit help" -msgstr "離開協助" - -msgid "Preview scroll up" -msgstr "向上捲動預覽" - -msgid "Preview scroll down" -msgstr "向下捲動預覽" - -msgid "Move up" -msgstr "上移" - -msgid "Move down" -msgstr "下移" - -msgid "Move right" -msgstr "右移" - -msgid "Move left" -msgstr "左移" - -msgid "Jump to entry" -msgstr "跳轉至入口" - -msgid "Skip selection (if available)" -msgstr "跳過選擇 (如果有)" - -msgid "Reset selection (if available)" -msgstr "重設選擇 (如果有)" - -msgid "Select on single select" -msgstr "在單一選項上進行選擇" - -msgid "Select on multi select" -msgstr "在多重選擇上進行選擇" - -msgid "Reset" -msgstr "重置" - -msgid "Skip selection menu" -msgstr "跳過選擇選單" - -msgid "Start search mode" -msgstr "啟動搜尋模式" - -msgid "Exit search mode" -msgstr "離開搜尋模式" - -msgid "" -"labwc needs access to your seat (collection of hardware devices i.e. keyboard," -" mouse, etc)" -msgstr "labwc 需要存取您的用戶環境(硬體設備的集合,例如: 鍵盤,滑鼠等)" - -msgid "Choose an option to give labwc access to your hardware" -msgstr "選擇一個選項,讓 labwc 可以存取您的硬體" - -msgid "" -"niri needs access to your seat (collection of hardware devices i.e. keyboard, " -"mouse, etc)" -msgstr "niri 需要存取您的用戶環境(硬體設備的集合,例如鍵盤,滑鼠等)" - -msgid "Choose an option to give niri access to your hardware" -msgstr "選擇一個選項,讓 niri 可以存取您的硬體" - -msgid "Mark/Unmark as ESP" -msgstr "標記/取消標記為EFI系統分割區(ESP,EFI system partition)" - -msgid "Package group:" -msgstr "套件群組:" - -msgid "Exit archinstall" -msgstr "離開 Archinstall" - -msgid "Reboot system" -msgstr "重啟系統" - -msgid "chroot into installation for post-installation configurations" -msgstr "您是否想要讓 chroot 進入新建立的安裝,並執行設定安裝後的組態配置嗎 ?" - -msgid "Installation completed" -msgstr "安裝完畢" - -msgid "What would you like to do next?" -msgstr "接下來您想做什麼?" - -msgid "Select which mode to configure for \"{}\"" -msgstr "請選擇要設定 「{}」 的模式" - -msgid "Incorrect credentials file decryption password" -msgstr "憑證檔案的解密密碼不正確" - -msgid "Incorrect password" -msgstr "密碼錯誤" - -msgid "Credentials file decryption password" -msgstr "憑證檔案的解密密碼" - -msgid "Do you want to encrypt the user_credentials.json file?" -msgstr "您是否要加密 user_credentials.json 檔案?" - -msgid "Credentials file encryption password" -msgstr "憑證檔案的加密密碼" - -msgid "Repositories: {}" -msgstr "套件庫:{}" diff --git a/examples/archinstall/archinstall/scripts/__init__.py b/examples/archinstall/archinstall/scripts/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/examples/archinstall/archinstall/scripts/guided.py b/examples/archinstall/archinstall/scripts/guided.py deleted file mode 100644 index c0a252b..0000000 --- a/examples/archinstall/archinstall/scripts/guided.py +++ /dev/null @@ -1,212 +0,0 @@ -import os -from pathlib import Path - -from archinstall import SysInfo -from archinstall.lib.applications.application_handler import application_handler -from archinstall.lib.args import arch_config_handler -from archinstall.lib.authentication.authentication_handler import auth_handler -from archinstall.lib.configuration import ConfigurationOutput -from archinstall.lib.disk.filesystem import FilesystemHandler -from archinstall.lib.disk.utils import disk_layouts -from archinstall.lib.global_menu import GlobalMenu -from archinstall.lib.installer import Installer, accessibility_tools_in_use, run_custom_user_commands -from archinstall.lib.interactions.general_conf import PostInstallationAction, ask_post_installation -from archinstall.lib.models import Bootloader -from archinstall.lib.models.device import ( - DiskLayoutType, - EncryptionType, -) -from archinstall.lib.models.users import User -from archinstall.lib.output import debug, error, info -from archinstall.lib.packages.packages import check_package_upgrade -from archinstall.lib.profile.profiles_handler import profile_handler -from archinstall.lib.translationhandler import tr -from archinstall.tui import Tui - - -def ask_user_questions() -> None: - """ - First, we'll ask the user for a bunch of user input. - Not until we're satisfied with what we want to install - will we continue with the actual installation steps. - """ - - title_text = None - - upgrade = check_package_upgrade('archinstall') - if upgrade: - text = tr('New version available') + f': {upgrade}' - title_text = f' ({text})' - - with Tui(): - global_menu = GlobalMenu(arch_config_handler.config) - - if not arch_config_handler.args.advanced: - global_menu.set_enabled('parallel_downloads', False) - - global_menu.run(additional_title=title_text) - - -def perform_installation(mountpoint: Path) -> None: - """ - Performs the installation steps on a block device. - Only requirement is that the block devices are - formatted and setup prior to entering this function. - """ - info('Starting installation...') - - config = arch_config_handler.config - - if not config.disk_config: - error('No disk configuration provided') - return - - disk_config = config.disk_config - run_mkinitcpio = not config.uki - locale_config = config.locale_config - optional_repositories = config.mirror_config.optional_repositories if config.mirror_config else [] - mountpoint = disk_config.mountpoint if disk_config.mountpoint else mountpoint - - with Installer( - mountpoint, - disk_config, - kernels=config.kernels, - ) as installation: - # Mount all the drives to the desired mountpoint - if disk_config.config_type != DiskLayoutType.Pre_mount: - installation.mount_ordered_layout() - - installation.sanity_check() - - if disk_config.config_type != DiskLayoutType.Pre_mount: - if disk_config.disk_encryption and disk_config.disk_encryption.encryption_type != EncryptionType.NoEncryption: - # generate encryption key files for the mounted luks devices - installation.generate_key_files() - - if mirror_config := config.mirror_config: - installation.set_mirrors(mirror_config, on_target=False) - - installation.minimal_installation( - optional_repositories=optional_repositories, - mkinitcpio=run_mkinitcpio, - hostname=arch_config_handler.config.hostname, - locale_config=locale_config, - ) - - if mirror_config := config.mirror_config: - installation.set_mirrors(mirror_config, on_target=True) - - if config.swap: - installation.setup_swap('zram') - - if config.bootloader and config.bootloader != Bootloader.NO_BOOTLOADER: - if config.bootloader == Bootloader.Grub and SysInfo.has_uefi(): - installation.add_additional_packages('grub') - - installation.add_bootloader(config.bootloader, config.uki) - - # If user selected to copy the current ISO network configuration - # Perform a copy of the config - network_config = config.network_config - - if network_config: - network_config.install_network_config( - installation, - config.profile_config, - ) - - if config.auth_config: - if config.auth_config.users: - installation.create_users(config.auth_config.users) - auth_handler.setup_auth(installation, config.auth_config, config.hostname) - - if app_config := config.app_config: - application_handler.install_applications(installation, app_config) - - if profile_config := config.profile_config: - profile_handler.install_profile_config(installation, profile_config) - - if config.packages and config.packages[0] != '': - installation.add_additional_packages(config.packages) - - if timezone := config.timezone: - installation.set_timezone(timezone) - - if config.ntp: - installation.activate_time_synchronization() - - if accessibility_tools_in_use(): - installation.enable_espeakup() - - if config.auth_config and config.auth_config.root_enc_password: - root_user = User('root', config.auth_config.root_enc_password, False) - installation.set_user_password(root_user) - - if (profile_config := config.profile_config) and profile_config.profile: - profile_config.profile.post_install(installation) - - # If the user provided a list of services to be enabled, pass the list to the enable_service function. - # Note that while it's called enable_service, it can actually take a list of services and iterate it. - if servies := config.services: - installation.enable_service(servies) - - if disk_config.has_default_btrfs_vols(): - btrfs_options = disk_config.btrfs_options - snapshot_config = btrfs_options.snapshot_config if btrfs_options else None - snapshot_type = snapshot_config.snapshot_type if snapshot_config else None - if snapshot_type: - installation.setup_btrfs_snapshot(snapshot_type, config.bootloader) - - # If the user provided custom commands to be run post-installation, execute them now. - if cc := config.custom_commands: - run_custom_user_commands(cc, installation) - - installation.genfstab() - - debug(f'Disk states after installing:\n{disk_layouts()}') - - if not arch_config_handler.args.silent: - with Tui(): - action = ask_post_installation() - - match action: - case PostInstallationAction.EXIT: - pass - case PostInstallationAction.REBOOT: - os.system('reboot') - case PostInstallationAction.CHROOT: - try: - installation.drop_to_shell() - except Exception: - pass - - -def guided() -> None: - if not arch_config_handler.args.silent: - ask_user_questions() - - config = ConfigurationOutput(arch_config_handler.config) - config.write_debug() - config.save() - - if arch_config_handler.args.dry_run: - exit(0) - - if not arch_config_handler.args.silent: - aborted = False - with Tui(): - if not config.confirm_config(): - debug('Installation aborted') - aborted = True - - if aborted: - return guided() - - if arch_config_handler.config.disk_config: - fs_handler = FilesystemHandler(arch_config_handler.config.disk_config) - fs_handler.perform_filesystem_operations() - - perform_installation(arch_config_handler.args.mountpoint) - - -guided() diff --git a/examples/archinstall/archinstall/scripts/list.py b/examples/archinstall/archinstall/scripts/list.py deleted file mode 100644 index 2b0c088..0000000 --- a/examples/archinstall/archinstall/scripts/list.py +++ /dev/null @@ -1,10 +0,0 @@ -import glob -from pathlib import Path - -print('The following are viable --script options:') - -for script in [Path(x) for x in glob.glob(f'{Path(__file__).parent}/*.py')]: - if script.stem in ['__init__', 'list']: - continue - - print(f' {script.stem}') diff --git a/examples/archinstall/archinstall/scripts/minimal.py b/examples/archinstall/archinstall/scripts/minimal.py deleted file mode 100644 index 18bcaaa..0000000 --- a/examples/archinstall/archinstall/scripts/minimal.py +++ /dev/null @@ -1,91 +0,0 @@ -from pathlib import Path - -from archinstall.default_profiles.minimal import MinimalProfile -from archinstall.lib.args import arch_config_handler -from archinstall.lib.configuration import ConfigurationOutput -from archinstall.lib.disk.disk_menu import DiskLayoutConfigurationMenu -from archinstall.lib.disk.filesystem import FilesystemHandler -from archinstall.lib.installer import Installer -from archinstall.lib.models import Bootloader -from archinstall.lib.models.profile import ProfileConfiguration -from archinstall.lib.models.users import Password, User -from archinstall.lib.output import debug, error, info -from archinstall.lib.profile.profiles_handler import profile_handler -from archinstall.tui import Tui - - -def perform_installation(mountpoint: Path) -> None: - config = arch_config_handler.config - - if not config.disk_config: - error('No disk configuration provided') - return - - disk_config = config.disk_config - mountpoint = disk_config.mountpoint if disk_config.mountpoint else mountpoint - - with Installer( - mountpoint, - disk_config, - kernels=config.kernels, - ) as installation: - # Strap in the base system, add a boot loader and configure - # some other minor details as specified by this profile and user. - installation.mount_ordered_layout() - installation.minimal_installation() - installation.set_hostname('minimal-arch') - installation.add_bootloader(Bootloader.Systemd) - - network_config = config.network_config - - if network_config: - network_config.install_network_config( - installation, - config.profile_config, - ) - - installation.add_additional_packages(['nano', 'wget', 'git']) - - profile_config = ProfileConfiguration(MinimalProfile()) - profile_handler.install_profile_config(installation, profile_config) - - user = User('devel', Password(plaintext='devel'), False) - installation.create_users(user) - - # Once this is done, we output some useful information to the user - # And the installation is complete. - info('There are two new accounts in your installation after reboot:') - info(' * root (password: airoot)') - info(' * devel (password: devel)') - - -def _minimal() -> None: - with Tui(): - disk_config = DiskLayoutConfigurationMenu(disk_layout_config=None).run() - arch_config_handler.config.disk_config = disk_config - - config = ConfigurationOutput(arch_config_handler.config) - config.write_debug() - config.save() - - if arch_config_handler.args.dry_run: - exit(0) - - if not arch_config_handler.args.silent: - aborted = False - with Tui(): - if not config.confirm_config(): - debug('Installation aborted') - aborted = True - - if aborted: - return _minimal() - - if arch_config_handler.config.disk_config: - fs_handler = FilesystemHandler(arch_config_handler.config.disk_config) - fs_handler.perform_filesystem_operations() - - perform_installation(arch_config_handler.args.mountpoint) - - -_minimal() diff --git a/examples/archinstall/archinstall/scripts/only_hd.py b/examples/archinstall/archinstall/scripts/only_hd.py deleted file mode 100644 index b63ee94..0000000 --- a/examples/archinstall/archinstall/scripts/only_hd.py +++ /dev/null @@ -1,87 +0,0 @@ -from pathlib import Path - -from archinstall import debug, error -from archinstall.lib.args import arch_config_handler -from archinstall.lib.configuration import ConfigurationOutput -from archinstall.lib.disk.filesystem import FilesystemHandler -from archinstall.lib.disk.utils import disk_layouts -from archinstall.lib.global_menu import GlobalMenu -from archinstall.lib.installer import Installer -from archinstall.tui import Tui - - -def ask_user_questions() -> None: - with Tui(): - global_menu = GlobalMenu(arch_config_handler.config) - global_menu.disable_all() - - global_menu.set_enabled('archinstall_language', True) - global_menu.set_enabled('disk_config', True) - global_menu.set_enabled('swap', True) - global_menu.set_enabled('__config__', True) - - global_menu.run() - - -def perform_installation(mountpoint: Path) -> None: - """ - Performs the installation steps on a block device. - Only requirement is that the block devices are - formatted and setup prior to entering this function. - """ - config = arch_config_handler.config - - if not config.disk_config: - error('No disk configuration provided') - return - - disk_config = config.disk_config - mountpoint = disk_config.mountpoint if disk_config.mountpoint else mountpoint - - with Installer( - mountpoint, - disk_config, - kernels=config.kernels, - ) as installation: - # Mount all the drives to the desired mountpoint - # This *can* be done outside of the installation, but the installer can deal with it. - installation.mount_ordered_layout() - - # to generate a fstab directory holder. Avoids an error on exit and at the same time checks the procedure - target = Path(f'{mountpoint}/etc/fstab') - if not target.parent.exists(): - target.parent.mkdir(parents=True) - - # For support reasons, we'll log the disk layout post installation (crash or no crash) - debug(f'Disk states after installing:\n{disk_layouts()}') - - -def _only_hd() -> None: - if not arch_config_handler.args.silent: - ask_user_questions() - - config = ConfigurationOutput(arch_config_handler.config) - config.write_debug() - config.save() - - if arch_config_handler.args.dry_run: - exit(0) - - if not arch_config_handler.args.silent: - aborted = False - with Tui(): - if not config.confirm_config(): - debug('Installation aborted') - aborted = True - - if aborted: - return _only_hd() - - if arch_config_handler.config.disk_config: - fs_handler = FilesystemHandler(arch_config_handler.config.disk_config) - fs_handler.perform_filesystem_operations() - - perform_installation(arch_config_handler.args.mountpoint) - - -_only_hd() diff --git a/examples/archinstall/archinstall/tui/__init__.py b/examples/archinstall/archinstall/tui/__init__.py deleted file mode 100644 index 9bd67f1..0000000 --- a/examples/archinstall/archinstall/tui/__init__.py +++ /dev/null @@ -1,20 +0,0 @@ -from .curses_menu import EditMenu, SelectMenu, Tui -from .menu_item import MenuItem, MenuItemGroup -from .result import Result, ResultType -from .types import Alignment, Chars, FrameProperties, FrameStyle, Orientation, PreviewStyle - -__all__ = [ - 'Alignment', - 'Chars', - 'EditMenu', - 'FrameProperties', - 'FrameStyle', - 'MenuItem', - 'MenuItemGroup', - 'Orientation', - 'PreviewStyle', - 'Result', - 'ResultType', - 'SelectMenu', - 'Tui', -] diff --git a/examples/archinstall/archinstall/tui/curses_menu.py b/examples/archinstall/archinstall/tui/curses_menu.py deleted file mode 100644 index d1ab11e..0000000 --- a/examples/archinstall/archinstall/tui/curses_menu.py +++ /dev/null @@ -1,1371 +0,0 @@ -from __future__ import annotations - -import curses -import os -import signal -import sys -from abc import ABCMeta, abstractmethod -from collections.abc import Callable -from curses.ascii import isprint -from curses.textpad import Textbox -from types import FrameType, TracebackType -from typing import Literal, override - -from archinstall.lib.translationhandler import tr - -from .help import Help -from .menu_item import MenuItem, MenuItemGroup, MenuItemsState -from .result import Result, ResultType -from .types import ( - SCROLL_INTERVAL, - STYLE, - Alignment, - Chars, - FrameDim, - FrameProperties, - FrameStyle, - MenuKeys, - Orientation, - PreviewStyle, - ViewportEntry, -) - - -class AbstractCurses[ValueT](metaclass=ABCMeta): - def __init__(self) -> None: - self._help_window = self._set_help_viewport() - - @abstractmethod - def resize_win(self) -> None: - pass - - @abstractmethod - def kickoff(self, win: curses.window) -> Result[ValueT]: - pass - - def clear_all(self) -> None: - Tui.t().screen.clear() - Tui.t().screen.refresh() - - def clear_help_win(self) -> None: - self._help_window.erase() - - def _set_help_viewport(self) -> 'Viewport': - max_height, max_width = Tui.t().max_yx - height = max_height - 10 - - max_help_width = max([len(line) for line in Help.get_help_text().split('\n')]) - x_start = int((max_width / 2) - (max_help_width / 2)) - - return Viewport( - max_help_width + 10, - height, - x_start, - int((max_height / 2) - height / 2), - frame=FrameProperties.min(tr('Archinstall help')), - ) - - def _confirm_interrupt(self, warning: str) -> bool: - while True: - result = SelectMenu[bool]( - MenuItemGroup.yes_no(), - header=warning, - alignment=Alignment.CENTER, - columns=2, - orientation=Orientation.HORIZONTAL, - ).run() - - match result.type_: - case ResultType.Selection: - if result.item() == MenuItem.yes(): - return True - - return False - - def help_text(self) -> str: - return tr('Press Ctrl+h for help') - - def _show_help(self) -> None: - help_text = Help.get_help_text() - lines = help_text.split('\n') - - entries = [ViewportEntry('', 0, 0, STYLE.NORMAL)] - entries += [ViewportEntry(f' {e} ', idx + 1, 0, STYLE.NORMAL) for idx, e in enumerate(lines)] - self._help_window.update(entries, 0) - - def get_header_entries(self, header: str) -> list[ViewportEntry]: - full_header = [] - rows = header.split('\n') - - for cur_row, line in enumerate(rows): - full_header += [ViewportEntry(line, cur_row, 0, STYLE.NORMAL)] - - return full_header - - -class AbstractViewport: - def __init__(self) -> None: - pass - - def add_str(self, screen: curses.window, row: int, col: int, text: str, color: STYLE) -> None: - try: - screen.addstr(row, col, text, Tui.t().get_color(color)) - except curses.error: - # debug(f'Curses error while adding string to viewport: {text}') - pass - - def add_frame( - self, - entries: list[ViewportEntry], - max_width: int, - max_height: int, - frame: FrameProperties, - scroll_pct: int | None = None, - ) -> list[ViewportEntry]: - if not entries: - return [] - - dim = self._get_frame_dim(entries, max_width, max_height, frame) - - h_bar = Chars.Horizontal * (dim.x_delta() - 2) - top_ve = self._get_top(dim, h_bar, frame, scroll_pct) - bottom_ve = self._get_bottom(dim, h_bar, scroll_pct) - - frame_border = [] - - for i in range(1, dim.height): - frame_border += [ViewportEntry(Chars.Vertical, i, dim.x_start, STYLE.NORMAL)] - - frame_border += self._get_right_frame(dim, scroll_pct) - - # adjust the original rows and cols of the entries as - # they need to be shrunk by 1 to make space for the frame - entries = self._adjust_entries(entries) - - framed_entries = [ - top_ve, - bottom_ve, - *frame_border, - *entries, - ] - - return framed_entries - - def align_center(self, lines: list[ViewportEntry], width: int) -> int: - max_col = self._max_col(lines) - x_offset = int((width / 2) - (max_col / 2)) - return x_offset - - def _get_right_frame( - self, - dim: FrameDim, - scroll_percentage: int | None = None, - ) -> list[ViewportEntry]: - right_frame = {} - scroll_height = int(dim.height * scroll_percentage // 100) if scroll_percentage else 0 - - if scroll_height <= 0: - scroll_height = 1 - elif scroll_height >= dim.height: - scroll_height = dim.height - 1 - - for i in range(1, dim.height): - right_frame[i] = ViewportEntry(Chars.Vertical, i, dim.x_end - 1, STYLE.NORMAL) - - if scroll_percentage is not None: - right_frame[0] = ViewportEntry(Chars.Triangle_up, 0, dim.x_end - 1, STYLE.NORMAL) - right_frame[scroll_height] = ViewportEntry(Chars.Block, scroll_height, dim.x_end - 1, STYLE.NORMAL) - right_frame[dim.height] = ViewportEntry(Chars.Triangle_down, dim.height, dim.x_end - 1, STYLE.NORMAL) - - return list(right_frame.values()) - - def _get_top( - self, - dim: FrameDim, - h_bar: str, - frame: FrameProperties, - scroll_percentage: int | None = None, - ) -> ViewportEntry: - top = self._replace_str(h_bar, 1, f' {frame.header} ') if frame.header else h_bar - - if scroll_percentage is None: - top = Chars.Upper_left + top + Chars.Upper_right - else: - top = Chars.Upper_left + top[:-1] - - return ViewportEntry(top, 0, dim.x_start, STYLE.NORMAL) - - def _get_bottom( - self, - dim: FrameDim, - h_bar: str, - scroll_pct: int | None = None, - ) -> ViewportEntry: - if scroll_pct is None: - bottom = Chars.Lower_left + h_bar + Chars.Lower_right - else: - bottom = Chars.Lower_left + h_bar[:-1] - - return ViewportEntry(bottom, dim.height, dim.x_start, STYLE.NORMAL) - - def _get_frame_dim( - self, - entries: list[ViewportEntry], - max_width: int, - max_height: int, - frame: FrameProperties, - ) -> FrameDim: - rows = self._assemble_entries(entries).split('\n') - header_len = len(frame.header) if frame.header else 0 - header_len += 3 # for header padding - - if frame.w_frame_style == FrameStyle.MIN: - frame_start = min([e.col for e in entries]) - max_row_cols = [(e.col + len(e.text) + 1) for e in entries] - max_row_cols.append(header_len) - frame_end = max(max_row_cols) - - # 2 for frames, 1 for extra space start away from frame - # must align with def _adjust_entries - frame_end += 3 # 2 for frame - - frame_height = len(rows) + 1 - if frame_height > max_height: - frame_height = max_height - else: - frame_start = 0 - frame_end = max_width - frame_height = max_height - 1 - - return FrameDim(frame_start, frame_end, frame_height) - - def _adjust_entries( - self, - entries: list[ViewportEntry], - ) -> list[ViewportEntry]: - for entry in entries: - # top row frame offset - entry.row += 1 - # left side frame offset + extra space from frame to start from - entry.col += 2 - - return entries - - def _num_unique_rows(self, entries: list[ViewportEntry]) -> int: - return len(set([e.row for e in entries])) - - def _max_col(self, entries: list[ViewportEntry]) -> int: - values = [len(e.text) + e.col for e in entries] - if not values: - return 0 - return max(values) - - def _replace_str(self, text: str, index: int = 0, replacement: str = '') -> str: - len_replace = len(replacement) - return f'{text[:index]}{replacement}{text[index + len_replace :]}' - - def _assemble_entries(self, entries: list[ViewportEntry]) -> str: - if not entries: - return '' - - max_col = self._max_col(entries) - view = [max_col * ' '] * self._num_unique_rows(entries) - - for e in entries: - view[e.row] = self._replace_str(view[e.row], e.col, e.text) - - view = [v.rstrip() for v in view] - - return '\n'.join(view) - - -class EditViewport(AbstractViewport): - def __init__( - self, - width: int, - edit_width: int, - edit_height: int, - x_start: int, - y_start: int, - process_key: Callable[[int], int], - frame: FrameProperties, - alignment: Alignment = Alignment.CENTER, - hide_input: bool = False, - ) -> None: - super().__init__() - - self._max_height, self._max_width = Tui.t().max_yx - - self._width = width - self._edit_width = edit_width - self._edit_height = edit_height - self.x_start = x_start - self.y_start = y_start - self._process_key_cb = process_key - self._frame = frame - self._alignment = alignment - self._hide_input = hide_input - - self._main_win: curses.window | None = None - self._edit_win: curses.window | None = None - self._textbox: Textbox | None = None - - self._init_wins() - - def _init_wins(self) -> None: - self._main_win = curses.newwin(self._edit_height, self._width, self.y_start, 0) - self._main_win.nodelay(False) - - x_offset = 0 - if self._alignment == Alignment.CENTER: - x_offset = int((self._width / 2) - (self._edit_width / 2)) - - self._edit_win = self._main_win.subwin( - 1, - self._edit_width - 2, - self.y_start + 1, - self.x_start + x_offset + 1, - ) - - def update(self) -> None: - if not self._main_win: - return - - self._main_win.erase() - - framed = self.add_frame( - [ViewportEntry('', 0, 0, STYLE.NORMAL)], - self._edit_width, - 3, - frame=self._frame, - ) - - x_offset = 0 - if self._alignment == Alignment.CENTER: - x_offset = self.align_center(framed, self._width) - - for row in framed: - self.add_str( - self._main_win, - row.row, - row.col + x_offset, - row.text, - row.style, - ) - - self._main_win.refresh() - - def textbox_value(self) -> str: - if not self._textbox: - return '' - return self._textbox.gather().strip() - - def erase(self) -> None: - if self._main_win: - self._main_win.erase() - self._main_win.refresh() - - def edit(self, default_text: str | None = None) -> None: - assert self._edit_win and self._main_win - - self._edit_win.erase() - - if default_text is not None and len(default_text) > 0: - self._edit_win.addstr(0, 0, default_text) - - # if this gets initialized multiple times it will be an overlay - # and ENTER has to be pressed multiple times to accept - if not self._textbox: - self._textbox = Textbox(self._edit_win) - self._main_win.refresh() - - self._textbox.edit(self._process_key_cb) - - -class Viewport(AbstractViewport): - def __init__( - self, - width: int, - height: int, - x_start: int, - y_start: int, - frame: FrameProperties | None = None, - alignment: Alignment = Alignment.LEFT, - ): - super().__init__() - - self.width = width - self.height = height - self.x_start = x_start - self.y_start = y_start - self._frame = frame - self._alignment = alignment - - self._main_win = curses.newwin(self.height, self.width, self.y_start, self.x_start) - self._main_win.nodelay(False) - self._main_win.standout() - - def getch(self) -> int: - return self._main_win.getch() - - def erase(self) -> None: - self._main_win.erase() - self._main_win.refresh() - - def update( - self, - entries: list[ViewportEntry], - cur_pos: int = 0, - scroll_pos: int | None = None, - ) -> None: - # self._state = self._get_viewport_state(lines, cur_pos, scroll_pos) - # visible_entries = self._adjust_entries_row(self._state.displayed_entries) - visible_entries = entries - - if self._frame: - visible_entries = self.add_frame( - visible_entries, - self.width, - self.height, - frame=self._frame, - scroll_pct=scroll_pos, - ) - - x_offset = 0 - if self._alignment == Alignment.CENTER: - x_offset = self.align_center(visible_entries, self.width) - - self._main_win.erase() - - for entry in visible_entries: - self.add_str( - self._main_win, - entry.row, - entry.col + x_offset, - entry.text, - entry.style, - ) - - self._main_win.refresh() - - -class EditMenu(AbstractCurses[str]): - def __init__( - self, - title: str, - edit_width: int = 50, - header: str | None = None, - validator: Callable[[str | None], str | None] | None = None, - allow_skip: bool = False, - allow_reset: bool = False, - reset_warning_msg: str | None = None, - alignment: Alignment = Alignment.CENTER, - default_text: str | None = None, - hide_input: bool = False, - ): - super().__init__() - - self._max_height, self._max_width = Tui.t().max_yx - - self._header = header - - self._header_entries = [] - if header: - self._header_entries = self.get_header_entries(header) - - self._validator = validator - self._allow_skip = allow_skip - self._allow_reset = allow_reset - self._interrupt_warning = reset_warning_msg - self._alignment = alignment - self._edit_width = edit_width - self._default_text = default_text - self._hide_input = hide_input - - if self._interrupt_warning is None: - self._interrupt_warning = tr('Are you sure you want to reset this setting?') + '\n' - - title = f'* {title}' if not self._allow_skip else title - self._frame = FrameProperties(title, FrameStyle.MAX) - - self._title_vp: Viewport | None = None - self._header_vp: Viewport | None = None - self._input_vp: EditViewport | None = None - self._info_vp: Viewport | None = None - - self._set_default_info = True - self._only_ascii_text = ViewportEntry(tr('Only ASCII characters are supported'), 0, 0, STYLE.NORMAL) - - self._init_viewports() - - self._last_state: Result[str] | None = None - self._help_active = False - - self._current_text = default_text or '' - self._real_input = default_text or '' - - def _init_viewports(self) -> None: - y_offset = 0 - - self._title_vp = Viewport(self._max_width, 2, 0, y_offset) - y_offset += 2 - - if self._header_entries: - header_height = len(self._header_entries) - self._header_vp = Viewport(self._max_width, header_height, 0, y_offset, alignment=self._alignment) - y_offset += header_height - - self._input_vp = EditViewport( - self._max_width, - self._edit_width, - 3, - 0, - y_offset, - self._process_edit_key, - frame=self._frame, - alignment=self._alignment, - hide_input=self._hide_input, - ) - - y_offset += 3 - self._info_vp = Viewport(self._max_width, 1, 0, y_offset, alignment=self._alignment) - - def input(self) -> Result[str]: - result = Tui.run(self) - - assert not result.has_item() or isinstance(result.text(), str) - - self._clear_all() - return result - - @override - def resize_win(self) -> None: - self._draw() - - def _clear_all(self) -> None: - if self._title_vp: - self._title_vp.erase() - if self._header_vp: - self._header_vp.erase() - if self._input_vp: - self._input_vp.erase() - if self._info_vp: - self._info_vp.erase() - - def _get_input_text(self) -> str | None: - assert self._input_vp - assert self._info_vp - - text = self._real_input - - self.clear_all() - - if self._validator: - if (err := self._validator(text)) is not None: - self.clear_all() - entry = ViewportEntry(err, 0, 0, STYLE.ERROR) - self._info_vp.update([entry], 0) - self._set_default_info = False - - if self._hide_input: - self._real_input = '' - - return None - - return text - - def _draw(self) -> None: - if self._title_vp: - help_text = self.help_text() - help_entry = ViewportEntry(help_text, 0, 0, STYLE.NORMAL) - self._title_vp.update([help_entry], 0) - - if self._header_entries and self._header_vp: - self._header_vp.update(self._header_entries, 0) - - if self._input_vp: - self._input_vp.update() - - if self._set_default_info and self._info_vp: - self._info_vp.update([self._only_ascii_text], 0) - - self._input_vp.edit(default_text=self._real_input) - - @override - def kickoff(self, win: curses.window) -> Result[str]: - try: - self._draw() - except KeyboardInterrupt: - if not self._handle_interrupt(): - return self.kickoff(win) - else: - self._last_state = Result(ResultType.Reset, None) - - if self._last_state is None: - return self.kickoff(win) - - if self._last_state.type_ == ResultType.Selection: - text = self._get_input_text() - - if text is None: - return self.kickoff(win) - else: - if not text and not self._allow_skip: - return self.kickoff(win) - - return Result(ResultType.Selection, text) - - return self._last_state - - def _process_edit_key(self, key: int) -> int: - key_handles = MenuKeys.from_ord(key) - - if self._help_active: - if MenuKeys.ESC in key_handles: - self._help_active = False - self.clear_help_win() - return 7 - return 0 - - # remove standard keys from the list of key handles - key_handles = [key for key in key_handles if key != MenuKeys.STD_KEYS] - - # regular key stroke should be passed to the editor - if key_handles: - special_key = key_handles[0] - - match special_key: - case MenuKeys.HELP: - assert self._input_vp - self._current_text = self._input_vp.textbox_value() - self._clear_all() - self._help_active = True - self._show_help() - return 0 - case MenuKeys.ESC: - if self._allow_skip: - self._last_state = Result(ResultType.Skip, None) - key = 7 - case MenuKeys.ACCEPT: - self._last_state = Result(ResultType.Selection, None) - key = 7 - case MenuKeys.BACKSPACE: - if len(self._real_input) > 0: - self._real_input = self._real_input[:-1] - case _: - if isprint(key): - self._real_input += chr(key) - if self._hide_input: - key = 42 - else: - try: - if isprint(key): - self._real_input += chr(key) - if self._hide_input: - key = 42 - except Exception: - pass - - return key - - def _handle_interrupt(self) -> bool: - if self._allow_reset: - if self._interrupt_warning: - return self._confirm_interrupt(self._interrupt_warning) - else: - return False - - return True - - -class SelectMenu[ValueT](AbstractCurses[ValueT]): - def __init__( - self, - group: MenuItemGroup, - multi: bool = False, - orientation: Orientation = Orientation.VERTICAL, - alignment: Alignment = Alignment.LEFT, - columns: int = 1, - column_spacing: int = 10, - header: str | None = None, - frame: FrameProperties | None = None, - cursor_char: str = '>', - search_enabled: bool = True, - allow_skip: bool = False, - allow_reset: bool = False, - reset_warning_msg: str | None = None, - preview_style: PreviewStyle = PreviewStyle.NONE, - preview_size: float | Literal['auto'] = 0.2, - preview_frame: FrameProperties | None = None, - additional_title: str | None = None, - ): - super().__init__() - - self._multi = multi - self._cursor_char = f'{cursor_char} ' - self._search_enabled = search_enabled - self._allow_skip = allow_skip - self._allow_reset = allow_reset - self._active_search = False - self._help_active = False - self._item_group = group - self._preview_style = preview_style - self._preview_frame = preview_frame - self._orientation = orientation - self._column_spacing = column_spacing - self._alignment = alignment - self._footers = self._footer_entries() - self._frame = frame - self._interrupt_warning = reset_warning_msg - self._header = header - self._additional_title = additional_title - - self._header_entries = [] - if header: - self._header_entries = self.get_header_entries(header) - - if self._interrupt_warning is None: - self._interrupt_warning = tr('Are you sure you want to reset this setting?') + '\n' - - if self._orientation == Orientation.HORIZONTAL: - self._horizontal_cols = columns - else: - self._horizontal_cols = 1 - - self._prev_scroll_pos: int = 0 - - self._visible_entries: list[ViewportEntry] = [] - self._max_height, self._max_width = Tui.t().max_yx - - self._title_vp: Viewport | None = None - self._header_vp: Viewport | None = None - self._footer_vp: Viewport | None = None - self._menu_vp: Viewport | None = None - self._preview_vp: Viewport | None = None - - self._init_viewports(preview_size) - - assert self._menu_vp is not None - self._items_state: MenuItemsState = MenuItemsState( # type: ignore[unreachable] - self._item_group, - total_cols=self._horizontal_cols, - total_rows=self._menu_vp.height, - with_frame=self._frame is not None, - ) - - def run(self) -> Result[ValueT]: - result = Tui.run(self) - self._clear_all() - return result - - @override - def kickoff(self, win: curses.window) -> Result[ValueT]: - self._draw() - - while True: - try: - if not self._help_active: - self._draw() - - key = win.getch() - - ret = self._process_input_key(key) - - if ret is not None: - return ret - except KeyboardInterrupt: - if self._handle_interrupt(): - return Result(ResultType.Reset, None) - else: - return self.kickoff(win) - - @override - def resize_win(self) -> None: - self._draw() - - def _clear_all(self) -> None: - self.clear_help_win() - - if self._header_vp: - self._header_vp.erase() - if self._menu_vp: - self._menu_vp.erase() - if self._preview_vp: - self._preview_vp.erase() - if self._footer_vp: - self._footer_vp.erase() - if self._title_vp: - self._title_vp.erase() - - def _footer_entries(self) -> list[ViewportEntry]: - if self._active_search: - filter_pattern = self._item_group.filter_pattern - return [ViewportEntry(f'/{filter_pattern}', 0, 0, STYLE.NORMAL)] - - return [] - - def _init_viewports(self, arg_prev_size: float | Literal['auto']) -> None: - footer_height = 2 # possible filter at the bottom - y_offset = 0 - - self._title_vp = Viewport(self._max_width, 2, 0, y_offset) - y_offset += 2 - - if self._header_entries: - header_height = len(self._header_entries) - self._header_vp = Viewport( - self._max_width, - header_height, - 0, - y_offset, - alignment=self._alignment, - ) - y_offset += header_height - - prev_offset = y_offset + footer_height - prev_size = self._determine_prev_size(arg_prev_size, offset=prev_offset) - available_height = self._max_height - y_offset - footer_height - - match self._preview_style: - case PreviewStyle.BOTTOM: - menu_height = available_height - prev_size - - self._menu_vp = Viewport( - self._max_width, - menu_height, - 0, - y_offset, - frame=self._frame, - alignment=self._alignment, - ) - self._preview_vp = Viewport( - self._max_width, - prev_size, - 0, - menu_height + y_offset, - frame=self._preview_frame, - ) - case PreviewStyle.RIGHT: - menu_width = self._max_width - prev_size - - self._menu_vp = Viewport( - menu_width, - available_height, - 0, - y_offset, - frame=self._frame, - alignment=self._alignment, - ) - self._preview_vp = Viewport( - prev_size, - available_height, - menu_width, - y_offset, - frame=self._preview_frame, - alignment=self._alignment, - ) - case PreviewStyle.TOP: - menu_height = available_height - prev_size - - self._menu_vp = Viewport( - self._max_width, - menu_height, - 0, - prev_size + y_offset, - frame=self._frame, - alignment=self._alignment, - ) - self._preview_vp = Viewport( - self._max_width, - prev_size, - 0, - y_offset, - frame=self._preview_frame, - alignment=self._alignment, - ) - case PreviewStyle.NONE: - self._menu_vp = Viewport( - self._max_width, - available_height, - 0, - y_offset, - frame=self._frame, - alignment=self._alignment, - ) - - self._footer_vp = Viewport( - self._max_width, - footer_height, - 0, - self._max_height - footer_height, - ) - - def _determine_prev_size( - self, - preview_size: float | Literal['auto'], - offset: int = 0, - ) -> int: - if not isinstance(preview_size, float) and preview_size != 'auto': - raise ValueError('preview size must be a float or "auto"') - - prev_size: int = 0 - - if preview_size == 'auto': - match self._preview_style: - case PreviewStyle.RIGHT: - menu_width = self._item_group.get_max_width() + 5 - if self._multi: - menu_width += 5 - prev_size = self._max_width - menu_width - case PreviewStyle.BOTTOM: - menu_height = len(self._item_group.items) + 1 # leave empty line between menu and preview - prev_size = self._max_height - offset - menu_height - case PreviewStyle.TOP: - menu_height = len(self._item_group.items) - prev_size = self._max_height - offset - menu_height - else: - match self._preview_style: - case PreviewStyle.RIGHT: - prev_size = int(self._max_width * preview_size) - case PreviewStyle.BOTTOM: - prev_size = int((self._max_height - offset) * preview_size) - case PreviewStyle.TOP: - prev_size = int((self._max_height - offset) * preview_size) - - return prev_size - - def _draw(self) -> None: - footer_entries = self._footer_entries() - - items = self._items_state.get_view_items() - vp_entries = self._item_to_vp_entry(items) - - if self._title_vp: - title_text = self.help_text() - - if self._additional_title is not None: - title_text += f' {self._additional_title}' - - title_vp_entry = ViewportEntry(title_text, 0, 0, STYLE.NORMAL) - - self._update_viewport(self._title_vp, [title_vp_entry]) - - if self._header_vp: - self._update_viewport(self._header_vp, self._header_entries) - - if self._menu_vp: - self._update_viewport(self._menu_vp, vp_entries) - - if vp_entries: - self._update_preview() - elif self._preview_vp: - self._update_viewport(self._preview_vp, []) - - if self._footer_vp: - self._update_viewport(self._footer_vp, footer_entries, 0) - - def _update_viewport( - self, - viewport: Viewport, - entries: list[ViewportEntry], - cur_pos: int = 0, - ) -> None: - if entries: - viewport.update(entries, cur_pos=cur_pos) - else: - viewport.update([]) - - def _get_col_widths(self, items: list[list[MenuItem]]) -> list[int]: - cols_widths = self._calc_col_widths(items, self._horizontal_cols) - return [col_width + len(self._cursor_char) + self._item_distance() for col_width in cols_widths] - - def _item_distance(self) -> int: - if self._horizontal_cols == 1: - return 0 - else: - return self._column_spacing - - def _item_to_vp_entry(self, items: list[list[MenuItem]]) -> list[ViewportEntry]: - entries = [] - cols_widths = self._get_col_widths(items) - - for row_idx, row in enumerate(items): - cur_pos = len(self._cursor_char) - - for col_idx, cell in enumerate(row): - cur_text = '' - style = STYLE.NORMAL - - if cell == self._item_group.focus_item: - cur_text = self._cursor_char - style = STYLE.MENU_STYLE - - entries += [ViewportEntry(cur_text, row_idx, cur_pos - len(self._cursor_char), STYLE.CURSOR_STYLE)] - - menu_item_text = self._menu_item_text(cell) - entries += [ViewportEntry(menu_item_text, row_idx, cur_pos, style)] - cur_pos += len(menu_item_text) - - if col_idx < len(row) - 1: - spacer_len = cols_widths[col_idx] - len(menu_item_text) - entries += [ViewportEntry(' ' * spacer_len, row_idx, cur_pos, STYLE.NORMAL)] - cur_pos += spacer_len - - return entries - - def _calc_col_widths(self, rows: list[list[MenuItem]], columns: int) -> list[int]: - col_widths = [] - - for row in rows: - col_entries = [] - for column in range(columns): - if column < len(row): - col_entries += [len(row[column].text)] - - if col_entries: - col_widths += [max(col_entries)] - - return col_widths - - def _menu_item_text(self, item: MenuItem) -> str: - item_text = '' - - if self._multi and not item.is_empty(): - item_text += self._multi_prefix(item) - - item_text += self._item_group.get_item_text(item) - return item_text - - def _update_preview(self) -> None: - if not self._preview_vp: - return - - focus_item = self._item_group.focus_item - - if not focus_item or focus_item.preview_action is None: - self._preview_vp.update([]) - return - - action_text = focus_item.preview_action(focus_item) - - if not action_text: - self._preview_vp.update([]) - return - - preview_text = action_text.split('\n') - entries = [ViewportEntry(e, idx, 0, STYLE.NORMAL) for idx, e in enumerate(preview_text)] - - total_prev_rows = max([e.row for e in entries]) + 1 # rows start with 0 and we need the count - available_rows = self._preview_vp.height - 2 # for the preview frame - - self._calc_prev_scroll_pos(entries, total_prev_rows) - prev_entries = self._get_scroll_win_prev_entries(entries, total_prev_rows, available_rows) - scroll_pct = self._get_scroll_pct(total_prev_rows, available_rows) - - self._preview_vp.update(prev_entries, scroll_pos=scroll_pct) - - def _get_scroll_pct( - self, - total_prev_rows: int, - available_rows: int, - ) -> int | None: - assert self._preview_vp is not None - - if total_prev_rows <= available_rows: - return None - - pct = int(self._prev_scroll_pos / total_prev_rows * 100) - - if pct + SCROLL_INTERVAL > 100: - pct = 100 - - if pct < 0: - pct = 0 - - return pct - - def _get_scroll_win_prev_entries( - self, - entries: list[ViewportEntry], - total_prev_rows: int, - available_rows: int, - ) -> list[ViewportEntry]: - assert self._preview_vp is not None - - if total_prev_rows <= available_rows: - start_row = 0 - else: - start_row = self._prev_scroll_pos - - end_row = start_row + available_rows - - if end_row > total_prev_rows: - end_row = total_prev_rows - - prev_entries = [e for e in entries if start_row <= e.row < end_row] - - # normalize the rows - for e in prev_entries: - e.row -= start_row - - return prev_entries - - def _calc_prev_scroll_pos( - self, - entries: list[ViewportEntry], - total_prev_rows: int, - ) -> None: - if self._prev_scroll_pos >= total_prev_rows: - self._prev_scroll_pos = total_prev_rows - 2 - elif self._prev_scroll_pos < 0: - self._prev_scroll_pos = 0 - - def _multi_prefix(self, item: MenuItem) -> str: - if item.read_only: - return ' ' - elif self._item_group.is_item_selected(item): - return '[x] ' - else: - return '[ ] ' - - def _handle_interrupt(self) -> bool: - if self._allow_reset and self._interrupt_warning: - return self._confirm_interrupt(self._interrupt_warning) - else: - return False - - def _process_input_key(self, key: int) -> Result[ValueT] | None: - key_handles = MenuKeys.from_ord(key) - - if self._help_active: - if MenuKeys.ESC in key_handles: - self._help_active = False - self.clear_help_win() - self._draw() - return None - - # special case when search is currently active - if self._active_search: - if MenuKeys.STD_KEYS in key_handles: - self._item_group.append_filter(chr(key)) - self._draw() - return None - elif MenuKeys.BACKSPACE in key_handles: - self._item_group.reduce_filter() - self._draw() - return None - - # remove standard keys from the list of key handles - key_handles = [key for key in key_handles if key != MenuKeys.STD_KEYS] - - if len(key_handles) > 1: - decoded = MenuKeys.decode(key) - handles = ', '.join([k.name for k in key_handles]) - raise ValueError(f'Multiple key matches for key {decoded}: {handles}') - elif len(key_handles) == 0: - return None - - handle = key_handles[0] - - match handle: - case MenuKeys.HELP: - self._help_active = True - self._clear_all() - self._show_help() - return None - case MenuKeys.ACCEPT: - if self._multi: - if self._item_group.is_mandatory_fulfilled(): - if self._item_group.focus_item is not None: - if self._item_group.focus_item not in self._item_group.selected_items: - self._item_group.selected_items.append(self._item_group.focus_item) - return Result(ResultType.Selection, self._item_group.selected_items) - else: - item = self._item_group.focus_item - if item: - if item.action: - item.value = item.action(item.value) - - if self._item_group.is_mandatory_fulfilled(): - return Result(ResultType.Selection, self._item_group.focus_item) - - return None - case MenuKeys.MENU_DOWN | MenuKeys.MENU_RIGHT: - self._focus_item('next') - case MenuKeys.MENU_UP | MenuKeys.MENU_LEFT: - self._focus_item('prev') - case MenuKeys.MENU_START: - self._focus_item('first') - case MenuKeys.MENU_END: - self._focus_item('last') - case MenuKeys.MULTI_SELECT: - if self._multi: - self._item_group.select_current_item() - case MenuKeys.ENABLE_SEARCH: - if self._search_enabled and not self._active_search: - self._active_search = True - self._item_group.set_filter_pattern('') - case MenuKeys.ESC: - if self._active_search: - self._active_search = False - self._item_group.set_filter_pattern('') - else: - if self._allow_skip: - return Result(ResultType.Skip, None) - case MenuKeys.NUM_KEYS: - self._item_group.focus_index(key - 49) - case MenuKeys.SCROLL_DOWN: - self._prev_scroll_pos += SCROLL_INTERVAL - case MenuKeys.SCROLL_UP: - self._prev_scroll_pos -= SCROLL_INTERVAL - case _: - pass - - return None - - def _focus_item(self, direction: Literal['next', 'prev', 'first', 'last']) -> None: - # reset the preview scroll as the newly focused item - # may have a different preview row count and it'll blow up - self._prev_scroll_pos = 0 - - match direction: - case 'next': - self._item_group.focus_next() - case 'prev': - self._item_group.focus_prev() - case 'first': - self._item_group.focus_first() - case 'last': - self._item_group.focus_last() - - -class Tui: - _t: Tui | None = None - - def __enter__(self) -> None: - if Tui._t is None: - tui = self.init() - Tui._t = tui - - def __exit__(self, exc_type: type[BaseException] | None, exc_value: BaseException | None, traceback: TracebackType | None) -> None: - self.stop() - - @property - def screen(self) -> curses.window: - return self._screen - - @staticmethod - def t() -> 'Tui': - assert Tui._t is not None - return Tui._t - - @staticmethod - def shutdown() -> None: - if Tui._t is None: - return - - Tui.t().stop() - - def init(self) -> 'Tui': - self._screen = curses.initscr() - curses.noecho() - curses.cbreak() - curses.curs_set(0) - curses.set_escdelay(25) - - self._screen.keypad(True) - self._screen.scrollok(True) - - if curses.has_colors(): - curses.start_color() - self._set_up_colors() - - signal.signal(signal.SIGWINCH, self._sig_win_resize) - self._screen.refresh() - - return self - - def stop(self) -> None: - try: - curses.nocbreak() - - try: - self.screen.keypad(False) - except Exception: - pass - - curses.echo() - curses.curs_set(True) - curses.endwin() - except Exception: - # this may happen when curses has not been initialized - pass - - Tui._t = None - - @staticmethod - def print( - text: str, - row: int = 0, - col: int = 0, - endl: str = '\n', - clear_screen: bool = False, - ) -> None: - if clear_screen: - os.system('clear') - - if Tui._t is None: - print(text, end=endl) - sys.stdout.flush() - - return - - # will append the row at the very bottom of the screen - # and also scroll the existing text up by 1 line - if row == -1: - last_row = Tui.t().max_yx[0] - 1 - Tui.t().screen.scroll(1) - Tui.t().screen.addstr(last_row, col, text) - else: - Tui.t().screen.addstr(row, col, text) - - Tui.t().screen.refresh() - - @property - def max_yx(self) -> tuple[int, int]: - return self._screen.getmaxyx() - - @staticmethod - def run[ValueT](component: AbstractCurses[ValueT]) -> Result[ValueT]: - if Tui._t is None: - tui = Tui().init() - tui.screen.clear() - results = tui._main_loop(component) - Tui().stop() - return results - else: - tui = Tui._t - tui.screen.clear() - return Tui.t()._main_loop(component) - - def _sig_win_resize(self, signum: int, frame: FrameType | None) -> None: - if hasattr(self, '_component') and self._component is not None: # pylint: disable=no-member - self._component.resize_win() # pylint: disable=no-member - - def _main_loop[ValueT](self, component: AbstractCurses[ValueT]) -> Result[ValueT]: - self._screen.refresh() - return component.kickoff(self._screen) - - def _reset_terminal(self) -> None: - os.system('reset') - - def _set_up_colors(self) -> None: - curses.init_pair(STYLE.NORMAL.value, curses.COLOR_WHITE, curses.COLOR_BLACK) - curses.init_pair(STYLE.CURSOR_STYLE.value, curses.COLOR_CYAN, curses.COLOR_BLACK) - curses.init_pair(STYLE.MENU_STYLE.value, curses.COLOR_WHITE, curses.COLOR_BLUE) - curses.init_pair(STYLE.MENU_STYLE.value, curses.COLOR_WHITE, curses.COLOR_BLUE) - curses.init_pair(STYLE.HELP.value, curses.COLOR_GREEN, curses.COLOR_BLACK) - curses.init_pair(STYLE.ERROR.value, curses.COLOR_RED, curses.COLOR_BLACK) - - def get_color(self, color: STYLE) -> int: - return curses.color_pair(color.value) diff --git a/examples/archinstall/archinstall/tui/help.py b/examples/archinstall/archinstall/tui/help.py deleted file mode 100644 index 2a1ab10..0000000 --- a/examples/archinstall/archinstall/tui/help.py +++ /dev/null @@ -1,109 +0,0 @@ -from dataclasses import dataclass, field -from enum import Enum - -from archinstall.lib.translationhandler import tr - - -class HelpTextGroupId(Enum): - GENERAL = 'General' - NAVIGATION = 'Navigation' - SELECTION = 'Selection' - SEARCH = 'Search' - - -@dataclass -class HelpText: - description: str - keys: list[str] = field(default_factory=list) - - -@dataclass -class HelpGroup: - group_id: HelpTextGroupId - group_entries: list[HelpText] - - def get_desc_width(self) -> int: - return max([len(e.description) for e in self.group_entries]) - - def get_key_width(self) -> int: - return max([len(', '.join(e.keys)) for e in self.group_entries]) - - -class Help: - # the groups needs to be classmethods not static methods - # because they rely on the DeferredTranslation setup first; - # if they are static methods, they will be called before the - # translation setup is done - - @staticmethod - def general() -> HelpGroup: - return HelpGroup( - group_id=HelpTextGroupId.GENERAL, - group_entries=[ - HelpText(tr('Show help'), ['Ctrl+h']), - HelpText(tr('Exit help'), ['Esc']), - ], - ) - - @staticmethod - def navigation() -> HelpGroup: - return HelpGroup( - group_id=HelpTextGroupId.NAVIGATION, - group_entries=[ - HelpText(tr('Preview scroll up'), ['PgUp']), - HelpText(tr('Preview scroll down'), ['PgDown']), - HelpText(tr('Move up'), ['k', '↑']), - HelpText(tr('Move down'), ['j', '↓']), - HelpText(tr('Move right'), ['l', '→']), - HelpText(tr('Move left'), ['h', '←']), - HelpText(tr('Jump to entry'), ['1..9']), - ], - ) - - @staticmethod - def selection() -> HelpGroup: - return HelpGroup( - group_id=HelpTextGroupId.SELECTION, - group_entries=[ - HelpText(tr('Skip selection (if available)'), ['Esc']), - HelpText(tr('Reset selection (if available)'), ['Ctrl+c']), - HelpText(tr('Select on single select'), ['Enter']), - HelpText(tr('Select on multi select'), ['Space', 'Tab']), - HelpText(tr('Reset'), ['Ctrl-C']), - HelpText(tr('Skip selection menu'), ['Esc']), - ], - ) - - @staticmethod - def search() -> HelpGroup: - return HelpGroup( - group_id=HelpTextGroupId.SEARCH, - group_entries=[ - HelpText(tr('Start search mode'), ['/']), - HelpText(tr('Exit search mode'), ['Esc']), - ], - ) - - @staticmethod - def get_help_text() -> str: - help_output = '' - help_texts = [ - Help.general(), - Help.navigation(), - Help.selection(), - Help.search(), - ] - max_desc_width = max([help.get_desc_width() for help in help_texts]) + 2 - max_key_width = max([help.get_key_width() for help in help_texts]) - - for help_group in help_texts: - help_output += f'{help_group.group_id.value}\n' - divider_len = max_desc_width + max_key_width - help_output += '-' * divider_len + '\n' - - for entry in help_group.group_entries: - help_output += entry.description.ljust(max_desc_width, ' ') + ', '.join(entry.keys) + '\n' - - help_output += '\n' - - return help_output diff --git a/examples/archinstall/archinstall/tui/menu_item.py b/examples/archinstall/archinstall/tui/menu_item.py deleted file mode 100644 index 741e447..0000000 --- a/examples/archinstall/archinstall/tui/menu_item.py +++ /dev/null @@ -1,475 +0,0 @@ -from __future__ import annotations - -from collections.abc import Callable -from dataclasses import dataclass, field -from enum import Enum -from functools import cached_property -from typing import Any, ClassVar - -from archinstall.lib.translationhandler import tr - -from ..lib.utils.unicode import unicode_ljust - - -@dataclass -class MenuItem: - text: str - value: Any | None = None - action: Callable[[Any], Any] | None = None - enabled: bool = True - read_only: bool = False - mandatory: bool = False - dependencies: list[str | Callable[[], bool]] = field(default_factory=list) - dependencies_not: list[str] = field(default_factory=list) - display_action: Callable[[Any], str] | None = None - preview_action: Callable[[Any], str | None] | None = None - key: str | None = None - - _yes: ClassVar[MenuItem | None] = None - _no: ClassVar[MenuItem | None] = None - - def get_value(self) -> Any: - assert self.value is not None - return self.value - - @classmethod - def yes(cls, action: Callable[[Any], Any] | None = None) -> 'MenuItem': - if cls._yes is None: - cls._yes = cls(tr('Yes'), value=True, key='yes', action=action) - - return cls._yes - - @classmethod - def no(cls, action: Callable[[Any], Any] | None = None) -> 'MenuItem': - if cls._no is None: - cls._no = cls(tr('No'), value=False, key='no', action=action) - - return cls._no - - def is_empty(self) -> bool: - return self.text == '' or self.text is None - - def has_value(self) -> bool: - if self.value is None: - return False - elif isinstance(self.value, list) and len(self.value) == 0: - return False - elif isinstance(self.value, dict) and len(self.value) == 0: - return False - else: - return True - - def get_display_value(self) -> str | None: - if self.display_action is not None: - return self.display_action(self.value) - - return None - - -class MenuItemGroup: - def __init__( - self, - menu_items: list[MenuItem], - focus_item: MenuItem | None = None, - default_item: MenuItem | None = None, - sort_items: bool = False, - sort_case_sensitive: bool = True, - checkmarks: bool = False, - ) -> None: - if len(menu_items) < 1: - raise ValueError('Menu must have at least one item') - - if sort_items: - if sort_case_sensitive: - menu_items = sorted(menu_items, key=lambda x: x.text) - else: - menu_items = sorted(menu_items, key=lambda x: x.text.lower()) - - self._filter_pattern: str = '' - self._checkmarks: bool = checkmarks - - self._menu_items: list[MenuItem] = menu_items - self.focus_item: MenuItem | None = focus_item - self.selected_items: list[MenuItem] = [] - self.default_item: MenuItem | None = default_item - - if not focus_item: - self.focus_first() - - if self.focus_item not in self.items: - raise ValueError(f'Selected item not in menu: {focus_item}') - - def add_item(self, item: MenuItem) -> None: - self._menu_items.append(item) - delattr(self, 'items') # resetting the cache - - def find_by_key(self, key: str) -> MenuItem: - for item in self._menu_items: - if item.key == key: - return item - - raise ValueError(f'No key found for: {key}') - - def get_enabled_items(self) -> list[MenuItem]: - return [it for it in self.items if self.is_enabled(it)] - - @staticmethod - def yes_no() -> 'MenuItemGroup': - return MenuItemGroup( - [MenuItem.yes(), MenuItem.no()], - sort_items=True, - ) - - @staticmethod - def from_enum( - enum_cls: type[Enum], - sort_items: bool = False, - preset: Enum | None = None, - ) -> 'MenuItemGroup': - items = [MenuItem(elem.value, value=elem) for elem in enum_cls] - group = MenuItemGroup(items, sort_items=sort_items) - - if preset is not None: - group.set_selected_by_value(preset) - - return group - - def set_preview_for_all(self, action: Callable[[Any], str | None]) -> None: - for item in self.items: - item.preview_action = action - - def set_focus_by_value(self, value: Any) -> None: - for item in self._menu_items: - if item.value == value: - self.focus_item = item - break - - def set_default_by_value(self, value: Any) -> None: - for item in self._menu_items: - if item.value == value: - self.default_item = item - break - - def set_selected_by_value(self, values: Any | list[Any] | None) -> None: - if values is None: - return - - if not isinstance(values, list): - values = [values] - - for item in self._menu_items: - if item.value in values: - self.selected_items.append(item) - - if values: - self.set_focus_by_value(values[0]) - - def index_focus(self) -> int | None: - if self.focus_item and self.items: - try: - return self.items.index(self.focus_item) - except ValueError: - # on large menus (15k+) when filtering very quickly - # the index search is too slow while the items are reduced - # by the filter and it will blow up as it cannot find the - # focus item - pass - - return None - - @property - def size(self) -> int: - return len(self.items) - - def get_max_width(self) -> int: - # use the menu_items not the items here otherwise the preview - # will get resized all the time when a filter is applied - return max([len(self.get_item_text(item)) for item in self._menu_items]) - - @cached_property - def _max_items_text_width(self) -> int: - return max([len(item.text) for item in self._menu_items]) - - def get_item_text(self, item: MenuItem) -> str: - if item.is_empty(): - return '' - - max_width = self._max_items_text_width - display_text = item.get_display_value() - - default_text = self._default_suffix(item) - - text = unicode_ljust(str(item.text), max_width, ' ') - spacing = ' ' * 4 - - if display_text: - text = f'{text}{spacing}{display_text}' - elif self._checkmarks: - from .types import Chars - - if item.has_value(): - if item.get_value() is not False: - text = f'{text}{spacing}{Chars.Check}' - else: - text = item.text - - if default_text: - text = f'{text} {default_text}' - - return text.rstrip(' ') - - def _default_suffix(self, item: MenuItem) -> str: - if self.default_item == item: - return tr(' (default)') - return '' - - def set_action_for_all(self, action: Callable[[Any], Any]) -> None: - for item in self.items: - item.action = action - - @cached_property - def items(self) -> list[MenuItem]: - pattern = self._filter_pattern.lower() - items = filter(lambda item: item.is_empty() or pattern in item.text.lower(), self._menu_items) - l_items = list(items) - return l_items - - @property - def filter_pattern(self) -> str: - return self._filter_pattern - - def has_filter(self) -> bool: - return self._filter_pattern != '' - - def set_filter_pattern(self, pattern: str) -> None: - self._filter_pattern = pattern - delattr(self, 'items') # resetting the cache - self._reload_focus_item() - - def append_filter(self, pattern: str) -> None: - self._filter_pattern += pattern - delattr(self, 'items') # resetting the cache - self._reload_focus_item() - - def reduce_filter(self) -> None: - self._filter_pattern = self._filter_pattern[:-1] - delattr(self, 'items') # resetting the cache - self._reload_focus_item() - - def _reload_focus_item(self) -> None: - if len(self.items) > 0: - if self.focus_item not in self.items: - self.focus_first() - else: - self.focus_item = None - - def is_item_selected(self, item: MenuItem) -> bool: - return item in self.selected_items - - def select_current_item(self) -> None: - if self.focus_item: - if self.focus_item in self.selected_items: - self.selected_items.remove(self.focus_item) - else: - self.selected_items.append(self.focus_item) - - def focus_index(self, index: int) -> None: - enabled = self.get_enabled_items() - self.focus_item = enabled[index] - - def focus_first(self) -> None: - if len(self.items) == 0: - return - - first_item: MenuItem | None = self.items[0] - - if first_item and not self._is_selectable(first_item): - first_item = self._find_next_selectable_item(self.items, first_item, 1) - - if first_item is not None: - self.focus_item = first_item - - def focus_last(self) -> None: - if len(self.items) == 0: - return - - last_item: MenuItem | None = self.items[-1] - - if last_item and not self._is_selectable(last_item): - last_item = self._find_next_selectable_item(self.items, last_item, -1) - - if last_item is not None: - self.focus_item = last_item - - def focus_prev(self, skip_empty: bool = True) -> None: - # e.g. when filter shows no items - if self.focus_item is None: - return - - item = self._find_next_selectable_item(self.items, self.focus_item, -1) - - if item is not None: - self.focus_item = item - - def focus_next(self, skip_not_enabled: bool = True) -> None: - # e.g. when filter shows no items - if self.focus_item is None: - return - - item = self._find_next_selectable_item(self.items, self.focus_item, 1) - - if item is not None: - self.focus_item = item - - def _find_next_selectable_item( - self, - items: list[MenuItem], - start_item: MenuItem, - direction: int, - ) -> MenuItem | None: - start_index = self.items.index(start_item) - n = len(items) - - current_index = start_index - for _ in range(n): - current_index = (current_index + direction) % n - - if self._is_selectable(items[current_index]): - return items[current_index] - - return None - - def is_mandatory_fulfilled(self) -> bool: - for item in self._menu_items: - if item.mandatory and not item.value: - return False - return True - - def max_item_width(self) -> int: - spaces = [len(str(it.text)) for it in self.items] - if spaces: - return max(spaces) - return 0 - - def _is_selectable(self, item: MenuItem) -> bool: - if item.is_empty(): - return False - elif item.read_only: - return False - - return self.is_enabled(item) - - def is_enabled(self, item: MenuItem) -> bool: - if not item.enabled: - return False - - for dep in item.dependencies: - if isinstance(dep, str): - item = self.find_by_key(dep) - if not item.value or not self.is_enabled(item): - return False - else: - return dep() - - for dep_not in item.dependencies_not: - item = self.find_by_key(dep_not) - if item.value is not None: - return False - - return True - - -class MenuItemsState: - def __init__( - self, - item_group: MenuItemGroup, - total_cols: int, - total_rows: int, - with_frame: bool, - ) -> None: - self._item_group = item_group - self._total_cols = total_cols - self._total_rows = total_rows - 2 if with_frame else total_rows - - self._prev_row_idx: int = -1 - self._prev_visible_rows: list[int] = [] - self._view_items: list[list[MenuItem]] = [] - - def _determine_foucs_row(self) -> int | None: - focus_index = self._item_group.index_focus() - - if focus_index is None: - return None - - row_index = focus_index // self._total_cols - return row_index - - def get_view_items(self) -> list[list[MenuItem]]: - enabled_items = self._item_group.get_enabled_items() - focus_row_idx = self._determine_foucs_row() - - if focus_row_idx is None: - return [] - - start, end = 0, 0 - - if len(self._view_items) == 0 or self._prev_row_idx == -1 or self._item_group.has_filter(): # initial setup or filter - if focus_row_idx < self._total_rows: - start = 0 - end = self._total_rows - elif focus_row_idx > len(enabled_items) - self._total_rows: - start = len(enabled_items) - self._total_rows - end = len(enabled_items) - else: - start = focus_row_idx - end = focus_row_idx + self._total_rows - elif len(enabled_items) <= self._total_rows: # the view can handle oll items - start = 0 - end = self._total_rows - elif not self._item_group.has_filter() and focus_row_idx in self._prev_visible_rows: # focus is in the same view - self._prev_row_idx = focus_row_idx - return self._view_items - else: - if self._item_group.has_filter(): - start = focus_row_idx - end = focus_row_idx + self._total_rows - else: - delta = focus_row_idx - self._prev_row_idx - - if delta > 0: # cursor is on the bottom most row - start = focus_row_idx - self._total_rows + 1 - end = focus_row_idx + 1 - else: # focus is on the top most row - start = focus_row_idx - end = focus_row_idx + self._total_rows - - self._view_items = self._get_view_items(enabled_items, start, end) - self._prev_visible_rows = list(range(start, end)) - self._prev_row_idx = focus_row_idx - - return self._view_items - - def _get_view_items( - self, - items: list[MenuItem], - start_row: int, - total_rows: int, - ) -> list[list[MenuItem]]: - groups: list[list[MenuItem]] = [] - nr_items = self._total_cols * min(total_rows, len(items)) - - for x in range(start_row, nr_items, self._total_cols): - groups.append( - items[x : x + self._total_cols], - ) - - return groups - - def _max_visible_items(self) -> int: - return self._total_cols * self._total_rows - - def _remaining_next_spots(self) -> int: - return self._max_visible_items() - self._prev_row_idx - - def _remaining_prev_spots(self) -> int: - return self._max_visible_items() - self._remaining_next_spots() diff --git a/examples/archinstall/archinstall/tui/result.py b/examples/archinstall/archinstall/tui/result.py deleted file mode 100644 index 8ccf09d..0000000 --- a/examples/archinstall/archinstall/tui/result.py +++ /dev/null @@ -1,37 +0,0 @@ -from dataclasses import dataclass -from enum import Enum, auto - -from .menu_item import MenuItem - - -class ResultType(Enum): - Selection = auto() - Skip = auto() - Reset = auto() - - -@dataclass -class Result[ValueT]: - type_: ResultType - _item: MenuItem | list[MenuItem] | str | None - - def has_item(self) -> bool: - return self._item is not None - - def get_value(self) -> ValueT: - return self.item().get_value() # type: ignore[no-any-return] - - def get_values(self) -> list[ValueT]: - return [i.get_value() for i in self.items()] - - def item(self) -> MenuItem: - assert self._item is not None and isinstance(self._item, MenuItem) - return self._item - - def items(self) -> list[MenuItem]: - assert self._item is not None and isinstance(self._item, list) - return self._item - - def text(self) -> str: - assert self._item is not None and isinstance(self._item, str) - return self._item diff --git a/examples/archinstall/archinstall/tui/types.py b/examples/archinstall/archinstall/tui/types.py deleted file mode 100644 index 10697e7..0000000 --- a/examples/archinstall/archinstall/tui/types.py +++ /dev/null @@ -1,143 +0,0 @@ -import curses -from dataclasses import dataclass -from enum import Enum, auto - -SCROLL_INTERVAL = 10 - - -class STYLE(Enum): - NORMAL = 1 - CURSOR_STYLE = 2 - MENU_STYLE = 3 - HELP = 4 - ERROR = 5 - - -class MenuKeys(Enum): - # latin keys - STD_KEYS = frozenset(range(32, 127)) - # numbers - NUM_KEYS = frozenset(range(49, 58)) - # Menu up: up, k - MENU_UP = frozenset({259, 107}) - # Menu down: down, j - MENU_DOWN = frozenset({258, 106}) - # Menu left: left, h - MENU_LEFT = frozenset({260, 104}) - # Menu right: right, l - MENU_RIGHT = frozenset({261, 108}) - # Menu start: home CTRL-a - MENU_START = frozenset({262, 1}) - # Menu end: end CTRL-e - MENU_END = frozenset({360, 5}) - # Enter - ACCEPT = frozenset({10}) - # Selection: space, tab - MULTI_SELECT = frozenset({32, 9}) - # Search: / - ENABLE_SEARCH = frozenset({47}) - # ESC - ESC = frozenset({27}) - # BACKSPACE (search) - BACKSPACE = frozenset({127, 263}) - # Help view: ctrl+h - HELP = frozenset({8}) - # Scroll up: PGUP - SCROLL_UP = frozenset({339}) - # Scroll down: PGDOWN - SCROLL_DOWN = frozenset({338}) - - @classmethod - def from_ord(cls, key: int) -> list['MenuKeys']: - matches = [] - - for group in MenuKeys: - if key in group.value: - matches.append(group) - - return matches - - @classmethod - def decode(cls, key: int) -> str: - byte_str = curses.keyname(key) - return byte_str.decode('utf-8') - - -class FrameStyle(Enum): - MAX = auto() - MIN = auto() - - -@dataclass -class FrameProperties: - header: str - w_frame_style: FrameStyle = FrameStyle.MAX - h_frame_style: FrameStyle = FrameStyle.MAX - - @classmethod - def max(cls, header: str) -> 'FrameProperties': - return FrameProperties( - header, - FrameStyle.MAX, - FrameStyle.MAX, - ) - - @classmethod - def min(cls, header: str) -> 'FrameProperties': - return FrameProperties( - header, - FrameStyle.MIN, - FrameStyle.MIN, - ) - - -class Orientation(Enum): - VERTICAL = auto() - HORIZONTAL = auto() - - -class PreviewStyle(Enum): - NONE = auto() - BOTTOM = auto() - RIGHT = auto() - TOP = auto() - - -# https://www.compart.com/en/unicode/search?q=box+drawings#characters -# https://en.wikipedia.org/wiki/Box-drawing_characters -class Chars: - Horizontal = '─' - Vertical = '│' - Upper_left = '┌' - Upper_right = '┐' - Lower_left = '└' - Lower_right = '┘' - Block = '█' - Triangle_up = '▲' - Triangle_down = '▼' - Check = '+' - Cross = 'x' - Right_arrow = '←' - - -@dataclass -class ViewportEntry: - text: str - row: int - col: int - style: STYLE - - -class Alignment(Enum): - LEFT = auto() - CENTER = auto() - - -@dataclass -class FrameDim: - x_start: int - x_end: int - height: int - - def x_delta(self) -> int: - return self.x_end - self.x_start diff --git a/examples/archinstall/archinstall/tui/ui/__init__.py b/examples/archinstall/archinstall/tui/ui/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/examples/archinstall/archinstall/tui/ui/components.py b/examples/archinstall/archinstall/tui/ui/components.py deleted file mode 100644 index 4a7c5d0..0000000 --- a/examples/archinstall/archinstall/tui/ui/components.py +++ /dev/null @@ -1,509 +0,0 @@ -from __future__ import annotations - -from collections.abc import Awaitable, Callable -from typing import Any, TypeVar, override - -from textual import work -from textual.app import App, ComposeResult -from textual.binding import Binding -from textual.containers import Center, Horizontal, Vertical -from textual.events import Key -from textual.screen import Screen -from textual.widgets import Button, DataTable, Input, LoadingIndicator, Static - -from archinstall.lib.output import debug -from archinstall.lib.translationhandler import tr -from archinstall.tui.menu_item import MenuItem, MenuItemGroup -from archinstall.tui.ui.result import Result, ResultType - -ValueT = TypeVar('ValueT') - - -class BaseScreen(Screen[Result[ValueT]]): - BINDINGS = [ # noqa: RUF012 - Binding('escape', 'cancel_operation', 'Cancel', show=True), - Binding('ctrl+c', 'reset_operation', 'Reset', show=True), - ] - - def __init__(self, allow_skip: bool = False, allow_reset: bool = False): - super().__init__() - self._allow_skip = allow_skip - self._allow_reset = allow_reset - - def action_cancel_operation(self) -> None: - if self._allow_skip: - self.dismiss(Result(ResultType.Skip, None)) # type: ignore[unused-awaitable] - - def action_reset_operation(self) -> None: - if self._allow_reset: - self.dismiss(Result(ResultType.Reset, None)) # type: ignore[unused-awaitable] - - def _compose_header(self) -> ComposeResult: - """Compose the app header if global header text is available.""" - if tui.global_header: - yield Static(tui.global_header, classes='app-header') - - -class LoadingScreen(BaseScreen[None]): - CSS = """ - LoadingScreen { - align: center middle; - } - - .dialog { - align: center middle; - width: 100%; - border: none; - background: transparent; - } - - .header { - text-align: center; - margin-bottom: 1; - } - - LoadingIndicator { - align: center middle; - } - """ - - def __init__( - self, - timer: int, - header: str | None = None, - ): - super().__init__() - self._timer = timer - self._header = header - - async def run(self) -> Result[None]: - return await tui.show(self) - - @override - def compose(self) -> ComposeResult: - yield from self._compose_header() - - with Center(): - with Vertical(classes='dialog'): - if self._header: - yield Static(self._header, classes='header') - yield Center(LoadingIndicator()) # ensures indicator is centered too - - def on_mount(self) -> None: - self.set_timer(self._timer, self.action_pop_screen) - - def action_pop_screen(self) -> None: - self.dismiss() # type: ignore[unused-awaitable] - - -class ConfirmationScreen(BaseScreen[ValueT]): - BINDINGS = [ # noqa: RUF012 - Binding('l', 'focus_right', 'Focus right', show=True), - Binding('h', 'focus_left', 'Focus left', show=True), - Binding('right', 'focus_right', 'Focus right', show=True), - Binding('left', 'focus_left', 'Focus left', show=True), - ] - - CSS = """ - ConfirmationScreen { - align: center middle; - } - - .dialog-wrapper { - align: center middle; - height: 100%; - width: 100%; - } - - .dialog { - width: 80; - height: 10; - border: none; - background: transparent; - } - - .dialog-content { - padding: 1; - height: 100%; - } - - .message { - text-align: center; - margin-bottom: 1; - } - - .buttons { - align: center middle; - background: transparent; - } - - Button { - width: 4; - height: 3; - background: transparent; - margin: 0 1; - } - - Button.-active { - background: #1793D1; - color: white; - border: none; - text-style: none; - } - """ - - def __init__( - self, - group: MenuItemGroup, - header: str, - allow_skip: bool = False, - allow_reset: bool = False, - ): - super().__init__(allow_skip, allow_reset) - self._group = group - self._header = header - - async def run(self) -> Result[ValueT]: - return await tui.show(self) - - @override - def compose(self) -> ComposeResult: - yield from self._compose_header() - - with Center(classes='dialog-wrapper'): - with Vertical(classes='dialog'): - with Vertical(classes='dialog-content'): - yield Static(self._header, classes='message') - with Horizontal(classes='buttons'): - for item in self._group.items: - yield Button(item.text, id=item.key) - - def on_mount(self) -> None: - self.update_selection() - - def update_selection(self) -> None: - focused = self._group.focus_item - buttons = self.query(Button) - - if not focused: - return - - for button in buttons: - if button.id == focused.key: - button.add_class('-active') - button.focus() - else: - button.remove_class('-active') - - def action_focus_right(self) -> None: - self._group.focus_next() - self.update_selection() - - def action_focus_left(self) -> None: - self._group.focus_prev() - self.update_selection() - - def on_key(self, event: Key) -> None: - if event.key == 'enter': - item = self._group.focus_item - if not item: - return None - self.dismiss(Result(ResultType.Selection, item.value)) # type: ignore[unused-awaitable] - - -class NotifyScreen(ConfirmationScreen[ValueT]): - def __init__(self, header: str): - group = MenuItemGroup([MenuItem(tr('Ok'))]) - super().__init__(group, header) - - -class InputScreen(BaseScreen[str]): - CSS = """ - InputScreen { - } - - .dialog-wrapper { - align: center middle; - height: 100%; - width: 100%; - } - - .input-dialog { - width: 60; - height: 10; - border: none; - background: transparent; - } - - .input-content { - padding: 1; - height: 100%; - } - - .input-header { - text-align: center; - margin: 0 0; - color: white; - text-style: bold; - background: transparent; - } - - .input-prompt { - text-align: center; - margin: 0 0 1 0; - background: transparent; - } - - Input { - margin: 1 2; - border: solid $accent; - background: transparent; - height: 3; - } - - Input .input--cursor { - color: white; - } - - Input:focus { - border: solid $primary; - } - """ - - def __init__( - self, - header: str, - placeholder: str | None = None, - password: bool = False, - default_value: str | None = None, - allow_reset: bool = False, - allow_skip: bool = False, - ): - super().__init__(allow_skip, allow_reset) - self._header = header - self._placeholder = placeholder or '' - self._password = password - self._default_value = default_value or '' - self._allow_reset = allow_reset - self._allow_skip = allow_skip - - async def run(self) -> Result[str]: - return await tui.show(self) - - @override - def compose(self) -> ComposeResult: - yield from self._compose_header() - - with Center(classes='dialog-wrapper'): - with Vertical(classes='input-dialog'): - with Vertical(classes='input-content'): - yield Static(self._header, classes='input-header') - yield Input( - placeholder=self._placeholder, - password=self._password, - value=self._default_value, - id='main_input', - ) - - def on_mount(self) -> None: - input_field = self.query_one('#main_input', Input) - input_field.focus() - - def on_key(self, event: Key) -> None: - if event.key == 'enter': - input_field = self.query_one('#main_input', Input) - value = input_field.value - self.dismiss(Result(ResultType.Selection, value)) # type: ignore[unused-awaitable] - - -class TableSelectionScreen(BaseScreen[ValueT]): - BINDINGS = [ # noqa: RUF012 - Binding('j', 'cursor_down', 'Down', show=True), - Binding('k', 'cursor_up', 'Up', show=True), - ] - - CSS = """ - TableSelectionScreen { - align: center middle; - background: transparent; - } - - DataTable { - height: auto; - width: auto; - border: none; - background: transparent; - } - - DataTable .datatable--header { - background: transparent; - border: solid; - } - - .content-container { - width: auto; - min-height: 10; - min-width: 40; - align: center middle; - background: transparent; - } - - .header { - text-align: center; - margin-bottom: 1; - } - - LoadingIndicator { - height: auto; - background: transparent; - } - """ - - def __init__( - self, - header: str | None = None, - data: list[ValueT] | None = None, - data_callback: Callable[[], Awaitable[list[ValueT]]] | None = None, - allow_reset: bool = False, - allow_skip: bool = False, - loading_header: str | None = None, - ): - super().__init__(allow_skip, allow_reset) - self._header = header - self._data = data - self._data_callback = data_callback - self._loading_header = loading_header - - if self._data is None and self._data_callback is None: - raise ValueError('Either data or data_callback must be provided') - - async def run(self) -> Result[ValueT]: - return await tui.show(self) - - def action_cursor_down(self) -> None: - table = self.query_one(DataTable) - if table.cursor_row is not None: - next_row = min(table.cursor_row + 1, len(table.rows) - 1) - table.move_cursor(row=next_row, column=table.cursor_column or 0) - - def action_cursor_up(self) -> None: - table = self.query_one(DataTable) - if table.cursor_row is not None: - prev_row = max(table.cursor_row - 1, 0) - table.move_cursor(row=prev_row, column=table.cursor_column or 0) - - @override - def compose(self) -> ComposeResult: - yield from self._compose_header() - - with Center(): - with Vertical(classes='content-container'): - if self._header: - yield Static(self._header, classes='header', id='header') - - if self._loading_header: - yield Static(self._loading_header, classes='header', id='loading-header') - - yield LoadingIndicator(id='loader') - yield DataTable(id='data_table') - - def on_mount(self) -> None: - self._display_header(True) - data_table = self.query_one(DataTable) - data_table.cell_padding = 2 - - if self._data: - self._put_data_to_table(data_table, self._data) - else: - self._load_data(data_table) - - @work - async def _load_data(self, table: DataTable[ValueT]) -> None: - assert self._data_callback is not None - data = await self._data_callback() - self._put_data_to_table(table, data) - - def _display_header(self, is_loading: bool) -> None: - try: - loading_header = self.query_one('#loading-header', Static) - header = self.query_one('#header', Static) - loading_header.display = is_loading - header.display = not is_loading - except Exception: - pass - - def _put_data_to_table(self, table: DataTable[ValueT], data: list[ValueT]) -> None: - if not data: - self.dismiss(Result(ResultType.Selection, None)) # type: ignore[unused-awaitable] - return - - cols = list(data[0].table_data().keys()) # type: ignore[attr-defined] - table.add_columns(*cols) - - for d in data: - row_values = list(d.table_data().values()) # type: ignore[attr-defined] - table.add_row(*row_values, key=d) # type: ignore[arg-type] - - table.cursor_type = 'row' - table.display = True - - loader = self.query_one('#loader') - loader.display = False - self._display_header(False) - table.focus() - - def on_data_table_row_selected(self, event: DataTable.RowSelected) -> None: - data: ValueT = event.row_key.value # type: ignore[assignment] - self.dismiss(Result(ResultType.Selection, data)) # type: ignore[unused-awaitable] - - -class TApp(App[Any]): - CSS = """ - .app-header { - dock: top; - height: auto; - width: 100%; - content-align: center middle; - background: $primary; - color: white; - text-style: bold; - } - """ - - def __init__(self) -> None: - super().__init__(ansi_color=True) - self._main = None - self._global_header: str | None = None - - @property - def global_header(self) -> str | None: - return self._global_header - - @global_header.setter - def global_header(self, value: str | None) -> None: - self._global_header = value - - def set_main(self, main: Any) -> None: - self._main = main - - def on_mount(self) -> None: - self._run_worker() - - @work - async def _run_worker(self) -> None: - try: - if self._main is not None: - await self._main.run() # type: ignore[unreachable] - except Exception as err: - debug(f'Error while running main app: {err}') - raise err from err - - @work - async def _show_async(self, screen: Screen[Result[ValueT]]) -> Result[ValueT]: - return await self.push_screen_wait(screen) - - async def show(self, screen: Screen[Result[ValueT]]) -> Result[ValueT]: - return await self._show_async(screen).wait() - - -tui = TApp() diff --git a/examples/archinstall/archinstall/tui/ui/result.py b/examples/archinstall/archinstall/tui/ui/result.py deleted file mode 100644 index c4e9246..0000000 --- a/examples/archinstall/archinstall/tui/ui/result.py +++ /dev/null @@ -1,26 +0,0 @@ -from dataclasses import dataclass -from enum import Enum, auto -from typing import cast - - -class ResultType(Enum): - Selection = auto() - Skip = auto() - Reset = auto() - - -@dataclass -class Result[ValueT]: - type_: ResultType - _data: ValueT | list[ValueT] | None - - def has_data(self) -> bool: - return self._data is not None - - def value(self) -> ValueT: - assert type(self._data) is not list and self._data is not None - return cast(ValueT, self._data) - - def values(self) -> list[ValueT]: - assert type(self._data) is list - return cast(list[ValueT], self._data) diff --git a/examples/archinstall/docs/Makefile b/examples/archinstall/docs/Makefile deleted file mode 100644 index d4bb2cb..0000000 --- a/examples/archinstall/docs/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -# Minimal makefile for Sphinx documentation -# - -# You can set these variables from the command line, and also -# from the environment for the first two. -SPHINXOPTS ?= -SPHINXBUILD ?= sphinx-build -SOURCEDIR = . -BUILDDIR = _build - -# Put it first so that "make" without argument is like "make help". -help: - @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - -.PHONY: help Makefile - -# Catch-all target: route all unknown targets to Sphinx using the new -# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/examples/archinstall/docs/README.md b/examples/archinstall/docs/README.md deleted file mode 100644 index 3c6dd64..0000000 --- a/examples/archinstall/docs/README.md +++ /dev/null @@ -1,17 +0,0 @@ -## Dependencies - -In order to build the docs locally, you need to have the following installed: - -- [sphinx-doc](https://www.sphinx-doc.org/en/master/usage/installation.html) -- [sphinx-rdt-theme](https://pypi.org/project/sphinx-rtd-theme/) - -For example, you may install these dependencies using pip: -``` -pip install -U sphinx sphinx-rtd-theme -``` - -For other installation methods refer to the docs of the dependencies. - -## Build - -In `archinstall/docs`, run `make html` (or specify another target) to build locally. The build files will be in `archinstall/docs/_build`. Open `_build/html/index.html` with your browser to see your changes in action. diff --git a/examples/archinstall/docs/_static/logo.png b/examples/archinstall/docs/_static/logo.png deleted file mode 100644 index 5128e1e..0000000 Binary files a/examples/archinstall/docs/_static/logo.png and /dev/null differ diff --git a/examples/archinstall/docs/_static/logo.pride.png b/examples/archinstall/docs/_static/logo.pride.png deleted file mode 100644 index 1f41b6b..0000000 Binary files a/examples/archinstall/docs/_static/logo.pride.png and /dev/null differ diff --git a/examples/archinstall/docs/_static/logo.pride.psd b/examples/archinstall/docs/_static/logo.pride.psd deleted file mode 100644 index 37bc667..0000000 Binary files a/examples/archinstall/docs/_static/logo.pride.psd and /dev/null differ diff --git a/examples/archinstall/docs/_static/logo.psd b/examples/archinstall/docs/_static/logo.psd deleted file mode 100644 index d23965b..0000000 Binary files a/examples/archinstall/docs/_static/logo.psd and /dev/null differ diff --git a/examples/archinstall/docs/_static/style.css b/examples/archinstall/docs/_static/style.css deleted file mode 100644 index b07bdb1..0000000 --- a/examples/archinstall/docs/_static/style.css +++ /dev/null @@ -1,3 +0,0 @@ -.wy-nav-content { - max-width: none; -} diff --git a/examples/archinstall/docs/_templates/layout.html b/examples/archinstall/docs/_templates/layout.html deleted file mode 100644 index 3e44f4a..0000000 --- a/examples/archinstall/docs/_templates/layout.html +++ /dev/null @@ -1,4 +0,0 @@ -{% extends "!layout.html" %} -{% block extrahead %} - -{% endblock %} diff --git a/examples/archinstall/docs/archinstall/Installer.rst b/examples/archinstall/docs/archinstall/Installer.rst deleted file mode 100644 index d1bbaa7..0000000 --- a/examples/archinstall/docs/archinstall/Installer.rst +++ /dev/null @@ -1,11 +0,0 @@ -.. _archinstall.Installer: - -archinstall.Installer -===================== - -The installer is the main class for accessing an installation-instance. -You can look at this class as the installation you have or will perform. - -Anything related to **inside** the installation, will be found in this class. - -.. autofunction:: archinstall.Installer diff --git a/examples/archinstall/docs/archinstall/plugins.rst b/examples/archinstall/docs/archinstall/plugins.rst deleted file mode 100644 index 1022ab6..0000000 --- a/examples/archinstall/docs/archinstall/plugins.rst +++ /dev/null @@ -1,57 +0,0 @@ -.. _archinstall.Plugins: - -Python Plugins -============== - -``archinstall`` supports plugins via two methods. - -First method is directly via the ``--plugin`` parameter when running as a CLI tool. This will load a specific plugin locally or remotely via a path. - -The second method is via Python's built in `plugin discovery`_ using `entry points`_ categorized as ``archinstall.plugin``. - -``--plugin`` parameter ----------------------- - -The parameter has the benefit of being stored in the ``--conf`` state, meaning when re-running an installation — the plugin will automatically be loaded. -It's limitation is that it requires an initial path to be known and written and be cumbersome. - -Plugin Discovery ----------------- - -This method allows for multiple plugins to be loaded with the drawback that they have to be installed beforehand on the system running ``archinstall``. -This mainly targets those who build their own ISO's and package specific setups for their needs. - - -What's supported? ------------------ - -Currently the documentation for this is scarse. Until that is resolved, the best way to find supported features is to search the source code for `plugin.on_ `_ as this will give a clear indication of which calls are made to plugins. - -How does it work? ------------------ - -``archinstall`` plugins use a discovery-driven approach where plugins are queried for certain functions. -As an example, if a plugin has the following function: - -.. code-block:: python - - def on_pacstrap(*packages): - ... - -The function :code:`archinstall.Pacman().strap(["some packages"])` is hardcoded to iterate plugins and look for :code:`on_pacstrap` in the plugin. -If the function exists, :code:`.strap()` will call the plugin's function and replace the initial package list with the result from the plugin. - -The best way to document these calls is currently undecided, as it's hard to document this behavior dynamically. - -Writing your own? ------------------ - -The simplest way currently is to look at a reference implementation or the community. Two of these are: - -* `torxed/archinstall-aur `_ -* `phisch/archinstall-aur `_ - -And search for `plugin.on_ `_ in the code base to find what ``archinstall`` will look for. PR's are welcome to widen the support for this. - -.. _plugin discovery: https://packaging.python.org/en/latest/specifications/entry-points/ -.. _entry points: https://docs.python.org/3/library/importlib.metadata.html#entry-points diff --git a/examples/archinstall/docs/cli_parameters/config/config_options.csv b/examples/archinstall/docs/cli_parameters/config/config_options.csv deleted file mode 100644 index 3edfa20..0000000 --- a/examples/archinstall/docs/cli_parameters/config/config_options.csv +++ /dev/null @@ -1,24 +0,0 @@ -Key,Value(s),Description,Required -additional-repositories,[ `multilib `_!, `testing `_ ],Enables one or more of the testing and multilib repositories before proceeding with installation,No -archinstall-language,`lang `__,Sets the TUI language used *(make sure to use the ``lang`` value not the ``abbr``)*,No -audio_config,`pipewire `_!, `pulseaudio `_,Audioserver to be installed,No -bootloader,`Systemd-boot `_!, `grub `_,Bootloader to be installed *(grub being mandatory on BIOS machines)*,Yes -debug,``true``!, ``false``,Enables debug output,No -disk_config,*Read more under* :ref:`disk config`,Contains the desired disk setup to be used during installation,No -disk_encryption,*Read more about under* :ref:`disk encryption`,Parameters for disk encryption applied on top of ``disk_config``,No -hostname,``str``,A string defining your machines hostname on the network *(defaults to ``archinstall``)*,No -kernels,[ `linux `_!, `linux-hardened `_!, `linux-lts `_!, `linux-rt `_!, `linux-rt-lts `_!, `linux-zen `_ ],Defines which kernels should be installed and setup in the boot loader options,Yes -custom_commands,*Read more under* :ref:`custom commands`,Custom commands that will be run post-install chrooted inside the installed system,No -locale_config,{kb_layout: `lang `__!, sys_enc: `Character encoding `_!, sys_lang: `locale `_},Defines the keyboard key map!, system encoding and system locale,No -mirror_config,{custom_mirrors: [ https://... ]!, mirror_regions: { "Worldwide": [ "https://geo.mirror.pkgbuild.com/$repo/os/$arch" ] } },Sets various mirrors *(defaults to ISO's ``/etc/pacman.d/mirrors`` if not defined)*,No -network_config,*`see options under Network Configuration`*,Sets which type of *(if any)* network configuration should be used,No -no_pkg_lookups,``true``!, ``false``,Disabled package checking against https://archlinux.org/packages/,No -ntp,``true``!, ``false``,enables or disables `NTP `_ during installation,No -offline,``true``!, ``false``,enables or disables certain online checks such as mirror reachability etc,No -packages,[ !, !, ... ],A list of packages to install during installation,No -parallel downloads,0-∞,sets a given number of parallel downloads to be used by `pacman `_,No -profile_config,*`read more under the profiles section`*,Installs a given profile if defined,No -script,`guided `__! *(default)*!, `minimal `__!, `only_hdd `_!, When used to autorun an installation!, this sets which script to autorun with,No -silent,``true``!, ``false``,disables or enables user questions using the TUI,No -swap,``true``!, ``false``,enables or disables swap,No -timezone,`timezone `_,sets a timezone for the installed system,No diff --git a/examples/archinstall/docs/cli_parameters/config/custom_commands.rst b/examples/archinstall/docs/cli_parameters/config/custom_commands.rst deleted file mode 100644 index 6234bd9..0000000 --- a/examples/archinstall/docs/cli_parameters/config/custom_commands.rst +++ /dev/null @@ -1,22 +0,0 @@ -.. _custom commands: - -Custom Commands -=============== - -Custom commands is a configuration entry that allows for executing custom commands post-installation. -The commands are executed with `arch-chroot `_. - -The option takes a list of arguments, an example is: - -.. code-block:: json - - { - "custom_commands": [ - "hostname new-hostname" - ] - } - -The following example will set a new hostname in the installed system. -The example is just to illustrate that the command is not run in the ISO but inside the installed system after the base system is installed. - -More examples can be found in the code repository under `examples/ `_ diff --git a/examples/archinstall/docs/cli_parameters/config/disk_config.rst b/examples/archinstall/docs/cli_parameters/config/disk_config.rst deleted file mode 100644 index 1f49977..0000000 --- a/examples/archinstall/docs/cli_parameters/config/disk_config.rst +++ /dev/null @@ -1,231 +0,0 @@ -.. _disk config: - -Disk Configuration -================== - -There are only three modes in the ``disk_config`` option. They are described in more detail below. - -"Leave as is" --------------- - -.. code-block:: json - - { - "config_type": "pre_mounted_config", - "mountpoint": "/mnt/archinstall" - } - -This mode will not perform any partitioning what so ever. -Instead it relies on what's mounted manually by the user under ``/mnt/archinstall``. - -Given the following disk example: - -.. code-block:: - - /mnt/archinstall (/dev/sda2) - ├── boot (/dev/sda1) - └── home (/dev/sda3) - -Running ``archinstall --conf your.json --silent`` where the above JSON is configured. The disk will be left alone — and a working system will be installed to the above folders and mountpoints will be translated into the installed system. - -.. note:: - - Some disk layouts can be too complicated to detect, such as RAID setups. Please do report those setups on the `Issue Tracker `__ so we can support them. - -Best Effort ------------ - -.. warning:: - - This mode will wipe data! - -.. note:: - - Note that this options is similar to the manual partitioning but is generated through the menu system! And the best effort layout might deviate slightly from some wiki guidelines in order to facilitate some optional configurations at a later stage. - -.. code-block:: json - - { - "disk_config": { - "config_type": "default_layout", - "device_modifications": [ - { - "device": "/dev/sda", - "wipe": true, - "partitions": "..." - } - ] - } - } - -This mode will attempt to configure a sane default layout on the selected disks. -Based on the chosen filesystem, and potential optional settings for said filesystem — different default layouts will be provided. - -Manual Partitioning -------------------- - -.. code-block:: json - - { - "disk_config": { - "config_type": "manual_partitioning", - "device_modifications": [ - "filesystem struct" - ] - } - } - -Manual partitioning is the most complex one of the three. It offers you near endless flexibility of how to partition your disk. It integrates against `pyparted `__ and some control logic in ``archinstall`` that deals with creating things like subvolumes and compression. - -Sizes are by default ``sector`` units, but other units are supported. - -The options supplied to ``manual_partitioning`` are dictionary definitions, where the following parameters must exist: - -.. csv-table:: JSON options - :file: ./manual_options.csv - :widths: 15, 15, 65, 5 - :escape: ! - :header-rows: 1 - -Each partition definition heavily relies on what filesystem is used. -Below follow two of the more common filesystems, anything else will best be described by running ``archinstall`` to generate a desired configuration for the desired filesystem type — and copy the relevant parts for permanent configurations. - -.. warning:: - - Important to note that the units and positions in the examples below — are highly user specific! - -FAT32 -^^^^^ - -.. code-block:: json - - { - "btrfs": [], - "flags": [ - "boot" - ], - "fs_type": "fat32", - "length": { - "sector_size": null, - "total_size": null, - "unit": "B", - "value": 99982592 - }, - "mount_options": [], - "mountpoint": "/boot", - "obj_id": "369f31a8-2781-4d6b-96e7-75680552b7c9", - "start": { - "sector_size": { - "sector_size": null, - "total_size": null, - "unit": "B", - "value": 512 - }, - "total_size": null, - "unit": "sectors", - "value": 34 - }, - "status": "create", - "type": "primary" - } - -.. note:: - - The ``Boot`` flag will make ``archinstall`` automatically set the correct ESP partition GUID if the system is booted with ``EFI`` support. The GUID will then be set to ``C12A7328-F81F-11D2-BA4B-00A0C93EC93B``. - -EXT4 -^^^^ - -.. code-block:: json - - { - "btrfs": [], - "flags": [], - "fs_type": "ext4", - "length": { - "sector_size": null, - "total_size": null, - "unit": "B", - "value": 15805127360 - }, - "mount_options": [], - "mountpoint": "/", - "obj_id": "3e75d045-21a4-429d-897e-8ec19a006e8b", - "start": { - "sector_size": { - "sector_size": null, - "total_size": null, - "unit": "B", - "value": 512 - }, - "total_size": { - "sector_size": null, - "total_size": null, - "unit": "B", - "value": 16106127360 - }, - "unit": "MB", - "value": 301 - }, - "status": "create", - "type": "primary" - } - -BTRFS -^^^^^ - -The BTRFS filesystem is inherently more complicated, thus the options are a bit more involved. -This example contains both subvolumes and compression. - -.. note:: - - Note that the ``"mountpoint": null`` is used for the overall partition, and instead individual subvolumes have mountpoints set. - -.. code-block:: json - - { - "btrfs": [ - { - "mountpoint": "/", - "name": "@", - }, - { - "mountpoint": "/home", - "name": "@home", - }, - { - "mountpoint": "/var/log", - "name": "@log", - }, - { - "mountpoint": "/var/cache/pacman/pkg", - "name": "@pkg", - } - ], - "dev_path": null, - "flags": [], - "fs_type": "btrfs", - "mount_options": [ - "compress=zstd" - ], - "mountpoint": null, - "obj_id": "d712357f-97cc-40f8-a095-24ff244d4539", - "size": { - "sector_size": { - "unit": "B", - "value": 512 - }, - "unit": "B", - "value": 15568207872 - }, - "start": { - "sector_size": { - "unit": "B", - "value": 512 - }, - "unit": "MiB", - "value": 513 - }, - "status": "create", - "type": "primary" - } diff --git a/examples/archinstall/docs/cli_parameters/config/disk_encryption.rst b/examples/archinstall/docs/cli_parameters/config/disk_encryption.rst deleted file mode 100644 index 9be5e48..0000000 --- a/examples/archinstall/docs/cli_parameters/config/disk_encryption.rst +++ /dev/null @@ -1,19 +0,0 @@ -.. _disk encryption: - -Disk Encryption -=============== - -Disk encryption consists of a top level entry in the user configuration. - -.. code-block:: json - - { - "disk_encryption": { - "encryption_type": "luks", - "partitions": [ - "d712357f-97cc-40f8-a095-24ff244d4539" - ] - } - } - -The ``UID`` in the ``partitions`` list is an internal reference to the ``obj_id`` in the :ref:`disk config` entries. diff --git a/examples/archinstall/docs/cli_parameters/config/manual_options.csv b/examples/archinstall/docs/cli_parameters/config/manual_options.csv deleted file mode 100644 index 794c899..0000000 --- a/examples/archinstall/docs/cli_parameters/config/manual_options.csv +++ /dev/null @@ -1,4 +0,0 @@ -Key,Value(s),Description,Required -device,``str``,Which block-device to format,yes -partitions,[ {key: val} ],The data describing the change/addition in a partition,yes -wipe,``bool``,clear the disk before adding any partitions,No diff --git a/examples/archinstall/docs/conf.py b/examples/archinstall/docs/conf.py deleted file mode 100644 index b85b516..0000000 --- a/examples/archinstall/docs/conf.py +++ /dev/null @@ -1,126 +0,0 @@ -import os -import re -import sys - -sys.path.insert(0, os.path.abspath('..')) - - -def process_docstring(app, what, name, obj, options, lines) -> None: # type: ignore[no-untyped-def] - spaces_pat = re.compile(r'( {8})') - ll = [spaces_pat.sub(' ', line) for line in lines] - lines[:] = ll - - -def setup(app) -> None: # type: ignore[no-untyped-def] - app.connect('autodoc-process-docstring', process_docstring) - - -# Configuration file for the Sphinx documentation builder. -# -# This file only contains a selection of the most common options. For a full -# list see the documentation: -# https://www.sphinx-doc.org/en/master/usage/configuration.html - -# -- Path setup -------------------------------------------------------------- - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -# -# import os -# import sys -# sys.path.insert(0, os.path.abspath('.')) - - -# -- Project information ----------------------------------------------------- - -project = 'python-archinstall' -copyright = '2022, Anton Hvornum' -author = 'Anton Hvornum' - -# The full version, including alpha/beta/rc tags -release = 'v2.3.0' - -# -- General configuration --------------------------------------------------- - -master_doc = 'index' -# Add any Sphinx extension module names here, as strings. They can be -# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom -# ones. -extensions = [ - 'sphinx.ext.autodoc', - 'sphinx.ext.inheritance_diagram', - 'sphinx.ext.todo', - 'sphinx_rtd_theme', -] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -# This pattern also affects html_static_path and html_extra_path. -exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] - -# -- Options for HTML output ------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -# -# html_theme = 'alabaster' -html_theme = 'sphinx_rtd_theme' - -html_logo = '_static/logo.png' - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -# If false, no module index is generated. -html_domain_indices = True - -# If false, no index is generated. -html_use_index = True - -# If true, the index is split into individual pages for each letter. -html_split_index = True - -# If true, links to the reST sources are added to the pages. -html_show_sourcelink = False - -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -# html_show_sphinx = True - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -# html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -# html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -# html_file_suffix = None - -# Output file base name for HTML help builder. -htmlhelp_basename = 'archinstalldoc' - -# -- Options for manual page output -------------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [('index', 'archinstall', 'archinstall Documentation', ['Anton Hvornum'], 1)] - -# If true, show URL addresses after external links. -# man_show_urls = False - - -# -- Options for Texinfo output ------------------------------------------------ - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - ('index', 'archinstall', 'archinstall Documentation', 'Anton Hvornum', 'archinstall', 'Simple and minimal HTTP server.'), -] diff --git a/examples/archinstall/docs/examples/python.rst b/examples/archinstall/docs/examples/python.rst deleted file mode 100644 index 9050b9b..0000000 --- a/examples/archinstall/docs/examples/python.rst +++ /dev/null @@ -1,97 +0,0 @@ -.. _examples.python: - -Python module -============= - -Archinstall supports running in `module mode `_. -The way the library is invoked in module mode is limited to executing scripts under the `scripts`_ folder. - -It's therefore important to place any script or profile you wish to invoke in the examples folder prior to building and installing. - -Pre-requisites --------------- - -We'll assume you've followed the :ref:`installing.python.manual` method. -Before actually installing the library, you will need to place your custom installer-scripts under `scripts`_ as a python file. - -More on how you create these in the next section. - -.. warning:: - - This is subject to change in the future as this method is currently a bit stiff. The script path will become a parameter. But for now, this is by design. - -Creating a script ------------------ - -Lets create a `test_installer` - installer as an example. This is assuming that the folder `./archinstall` is a git-clone of the main repo. -We begin by creating "`scripts`_:code:`/test_installer.py`". The placement here is important later. - -This script can now already be called using :code:`python -m archinstall --script test_installer` after a successful installation of the library itself. -But the script won't do much. So we'll do something simple like list all the hard drives as an example. - -To do this, we'll begin by importing :code:`archinstall` in our "`scripts`_:code:`/test_installer.py`" and call a function whtin ``archinstall``. - -.. code-block:: python - - from archinstall.lib.disk.device_handler import device_handler - from pprint import pprint - - pprint(device_handler.devices) - -Now, go ahead and reference the :ref:`installing.python.manual` installation method. -After running ``python -m archinstall test_installer`` it should print something that looks like: - -.. code-block:: text - - [ - BDevice( - disk=, - device_info=_DeviceInfo( - model='PC801 NVMe SK hynix 512GB', - path=PosixPath('/dev/nvme0n1'), - type='nvme', - total_size=Size(value=512110190592, unit=, - sector_size=SectorSize(value=512, unit=)), - free_space_regions=[ - , - , - ], - sector_size=SectorSize(value=512, unit=), - read_only=False, - dirty=False - ), - partition_infos=[ - _PartitionInfo( - partition=, - name='primary', - type=, - fs_type=, - path='/dev/nvme0n1p1', - start=Size(value=2048, unit=, sector_size=SectorSize(value=512, unit=)), - length=Size(value=535822336, unit=, sector_size=SectorSize(value=512, unit=)), - flags=[ - , - - ], - partn=1, - partuuid='a26be943-c193-41f4-9930-9341cf5f6b19', - uuid='6EE9-2C00', - disk=, - mountpoints=[ - PosixPath('/boot') - ], - btrfs_subvol_infos=[] - ), - _PartitionInfo(...) - ] - ) - ] - -That means your script is in the right place, and ``archinstall`` is working as intended. - -.. note:: - - Most calls, including the one above requires `root `_ privileges. - - -.. _scripts: https://github.com/archlinux/archinstall/tree/master/archinstall/scripts diff --git a/examples/archinstall/docs/flowcharts/BlockDeviceSelection.svg b/examples/archinstall/docs/flowcharts/BlockDeviceSelection.svg deleted file mode 100644 index 7dd2b43..0000000 --- a/examples/archinstall/docs/flowcharts/BlockDeviceSelection.svg +++ /dev/null @@ -1 +0,0 @@ -
Select BlockDevices
Select BlockDevices
No
No
Yes
Yes
Empty Selection
Empty Selection
Yes / No
Yes / No
Encrypt Root
Encrypt Root
No
No
Yes
Yes
Multiple BD's
Multiple BD's
Select /boot, / and optional mounts
Select /boot, / and...
Yes
Yes
No
No
Contains Partitions
Contains Partitions
No
No
Yes
Yes
Old /boot has content
Old /boot has cont...
Select Root FIlesystem
Select Root FIlesyst...
Mount Partitions
Mount Partitions
Install on /mnt
Install on /mnt
Yes
Yes
Wipe /Boot
Wipe /Boot
Clear old
systemd-boot files
Clear old...
Viewer does not support full SVG 1.1
diff --git a/examples/archinstall/docs/flowcharts/DiskSelectionProcess.drawio b/examples/archinstall/docs/flowcharts/DiskSelectionProcess.drawio deleted file mode 100644 index fb8a225..0000000 --- a/examples/archinstall/docs/flowcharts/DiskSelectionProcess.drawio +++ /dev/null @@ -1 +0,0 @@ -7VvZdqM4EP2anHlKDpsxPMZ20sl0kl7S05meNwVkYCIjt5C3+fqRjFgFNnbwksQv3a5CCKG6dWsROdP7o/knAsb+PXYhOtMUd36mD840TVUsi/3HNYtYY5tC4ZHAFYMyxWPwH0zuFNpJ4MKoMJBijGgwLiodHIbQoQUdIATPisOGGBWfOgYelBSPDkCy9ilwqR9rLa2b6W9g4PnJk1XTjq+MQDJYvEnkAxfPcir96kzvE4xp/Gs070PENy/Zl6fbxRO6ezE//fkt+g3+6n3+8fDzPJ7sepNb0lcgMKRbT/3y2bLtaXf4oFrf7ga/rYfB/dW5IV6NLpL9gi7bPiFiQn3s4RCgq0zbI3gSupDPqjIpG3OH8Vgo/4WULgQWwIRipvLpCImr7C3I4m8mKBedRPzFxUQYzAvSQkhDHNI+RpgsV6obpmF3BkwfUYJfYO5K17IuL3V+R4BQTt/T+vZlbzmve80upetxLznSmOggEEWBs5wUECoGKYmcDAtxyHcieoHU8cWAeCf59pWAt8ZqYlyEJ8SBK8bpwnkA8eCq+cwUmsynIR5BtoXsPgIRoMG0uDggnMtLx2UAYj8EhjaAqljkFKCJeNIjRNytNaWHsPMygNPAYXRQRt3MDyh8HIPlDswYExURwy0v4KSyl+t53EypYbj1E9/mo1NHVSS01gFiBYRqQLeZdaeQUDjP7b1soOSqKehG8K0lxFlGXmrCSH6OuAzl9SatpAhNMukDPrFGBUHskwzMhmSgKtVga50NKqEjs8GvCt8/IHbUA2HnbUScCpBp3mx4N50TtftTuRl3H7/9Y4fnmrGS0c6Vi65qCCw0Bp6Y7isOQpobgofDiC2mjMz0qduHLlMC69VoTPl7xCEswKEEXeLj0fOELa23JoAVQhJH1TUYBYjD7AaiKaSBAyrCHECBF3KMMHtCUh3r2COD0GOSmUk/lm7Bkru3H/7UbsP4Z7UQ/6rRXcNiCp9WU7YKhs6ETJdGkTOUgodvQXWbU1OdieE8oDnOZFJKmex3xphcSAhz2yBd4LpqSizxpiDEjFeVjVGZJ8Bq02sNw2y3koprQa5cqIZmv44QxVRGp+QvZskP4rWLu/Ll4f6YtSsza+iQxZg//Tsvn0/VQB1SOnrJvPahywHlSMqBd5nWJ02ztSlXZ13G9XqCaZUXKqGkSlA6VHmwx0j3YXBbPbCG7vbTnVJl8rqf8FY0g5Gm9AZ/yOg7Zfi7zvC1piFtdxm+Kpn9naTwbbt5coCzLjxZDfPhPbm9HGjSrjSb8HmZgvbTig6ELvsXj3nFD/jkI2ZdeupZN3dpQ99jlloJQLul1KJd723dS+tzw2N20srVqHKVuFVh8arucCGRy/K62qbFG7G0ah6VqTuSpftsv0AQ8q7aV5bGBpx6T7nY7olb7xxbLqbKzL1/GtjskOjgNGC1TQO5gxvdFj3Qo2gjVKfvbQX7nab0FWd5pYq98lCwXOQfvjJ4FQS140o6LAk5X5CbrwoUH/Cg5LBdhKHcqP64EQkQR6xU0/cYoAz14AHKOkWjlVSgNv02pemh2WaRh1EoWOQGjHkcinYRd1T5i4G0rRAfaynXtwhGi4jCkQSaU/eg7oxLb+rjO+seaHKFcmzpRFt5gAsiP11Wy0yQ7FrDD4iOJitI1p0/JuAtwNXV6RqHLgGgnA9sdiQkM0Cd3fO8sS8H3ucnqyvxlDPgbcjS7eWd/DMunuCNKvK57W0o2crSnnXTbGIrtwMt1yjZquCXzA70C0/tKN9hY5e21I0js6Xe1inxqbrbnsiblncJERwLkcv13VMwhrH/96q+PPq4Bd3OCKVUwXWMTjNG2VkFpx9dMve+2aN9Uqj+FNJUS3WEYRenqPkUsq16MHnP/LkGgoDwnIN3lUzEdrP3zGTT47/iwtA9F50mZqWKuHYipNazVaMBIRntEBITs78PjXGW/ZWtfvU/ diff --git a/examples/archinstall/docs/help/discord.rst b/examples/archinstall/docs/help/discord.rst deleted file mode 100644 index 88ef354..0000000 --- a/examples/archinstall/docs/help/discord.rst +++ /dev/null @@ -1,14 +0,0 @@ -.. _help.discord: - -Discord -======= - -There's a discord channel which is frequented by some `contributors `_. - -To join the server, head over to `https://discord.gg/aDeMffrxNg `_ and join in. -There's not many rules other than common sense and to treat others with respect. The general chat is for off-topic things as well. - -There's the ``@Party Animals`` role if you want notifications of new releases which is posted in the ``#Release Party`` channel. -Another thing is the ``@Contributors`` role can be activated by contributors by writing ``!verify`` and follow the verification process. - -Hop in, we hope to see you there! : ) diff --git a/examples/archinstall/docs/help/known_issues.rst b/examples/archinstall/docs/help/known_issues.rst deleted file mode 100644 index bf039dc..0000000 --- a/examples/archinstall/docs/help/known_issues.rst +++ /dev/null @@ -1,136 +0,0 @@ -.. _help.known_issues: - -Known Issues -============ - -Some issues are out of the `archinstall`_ projects scope, and the ones we know of are listed below. - -.. _waiting for time sync: - -Waiting for time sync `#2144`_ ------------------------------- - -The usual root cause of this is the network topology. -More specifically `timedatectl show`_ cannot perform a proper time sync against the default servers. - -Restarting ``systemd-timesyncd.service`` might work but most often you need to configure ``/etc/systemd/timesyncd.conf`` to match your network design. - -.. note:: - - If you know your time is correct on the machine, you can run ``archinstall --skip-ntp`` to ignore time sync. - -Waiting for Arch Linux keyring sync (archlinux-keyring-wkd-sync) to complete. `#2679`_ ------------------------------- - -The ``archlinux-keyring-wkd-sync.service`` or ``archlinux-keyring-wkd-sync.timer`` can hang "indefinitely" some times. -This is usually due to an inability to reach the key servers, or a slow connection towards key servers. - -The script ``/usr/bin/archlinux-keyring-wkd-sync`` can be run manually, to verify if it's executing slowly or not. - -If ``systemctl show --property=ActiveEnterTimestamp --no-pager archlinux-keyring-wkd-sync.timer`` shows nothing, it means the built-in sync never finished. Likewise ``systemctl show --no-pager -p SubState --value archlinux-keyring-wkd-sync.service`` most likely shows ``dead``, which means the service never completed. - -To fix this, try the following: - -.. code-block:: console - - # killall gpg-agent - # rm -rf /etc/pacman.d/gnupg - # pacman-key --init - # pacman-key --populate - # pacman -Sy archlinux-keyring - # systemctl restart archlinux-keyring-wkd-sync.timer - -.. note:: - - If you know the ISO is the latest, and that you have valid GPG keys, try ``archinstall --skip-wkd`` to ignore waiting for the sync. - - If you skip WKD sync, you might end up with: - - .. code-block:: console - - > error: archinstall: signature from "Anton Hvornum (Torxed) " is unknown trust - > :: File /var/cache/pacman/pkg/archinstall-1.2.3-4-x86_64.pkg.tar.xz is corrupted (invalid or corrupted package (PGP signature)). - > Do you want to delete it? [Y/n] - -Missing Nvidia Proprietary Driver `#2002`_ ------------------------------------------- - -In some instances, the nvidia driver might not have all the necessary packages installed. -This is due to the kernel selection and/or hardware setups requiring additional packages to work properly. - -A common workaround is to install the package `linux-headers`_ and `nvidia-dkms`_ - -ARM, 32bit and other CPU types error out `#1686`_, `#2185`_ ------------------------------------------------------------ - -This is a bit of a catch-all known issue. -Officially `x86_64`_ is only supported by Arch Linux. -Hence little effort have been put into supporting other platforms. - -In theory, other architectures should work but small quirks might arise. - -PR's are welcome but please be respectful of the delays in merging. -Other fixes, issues or features will be prioritized for the above reasons. - -Keyring is out of date `#2213`_ -------------------------------- - -Missing key-issues tend to be that the `archlinux-keyring`_ package is out of date, usually as a result of an outdated ISO. -There is an attempt from upstream to fix this issue, and it's the `archlinux-keyring-wkd-sync.service`_ - -The service starts almost immediately during boot, and if network is not configured in time — the service will fail. -Subsequently the ``archinstall`` run might operate on a old keyring despite there being an update service for this. - -There is really no way to reliably over time work around this issue in ``archinstall``. -Instead, efforts to the upstream service should be considered the way forward. And/or keys not expiring between a sane amount of ISO's. - -.. note:: - - The issue can happen on new ISO's too even as little as a few days after release, as some keys might expire right after the keyring is *"burnt in"* to the ISO. - -.. note:: - - Another common issue relating to the network not being configured, is that time might not be set correctly - resulting in the keyring not being able to update. See :ref:`waiting for time sync`. - -AUR packages ------------- - -This is also a catch-all issue. -`AUR is unsupported `_, and until that changes we cannot use AUR packages to solve feature requests in ``archinstall``. - -This means that feature requests like supporting filesystems such as `ZFS`_ can not be added, and issues cannot be solved by using AUR packages either. - -.. note:: - - But in spirit of giving the community options, ``archinstall`` supports :ref:`archinstall.Plugins`, which means you can run ``archinstall --plugin `` and source an AUR plugin. - - `torxed/archinstall-aur `_ is a reference implementation for plugins: - - .. code-block:: console - - # archinstall --plugin https://archlinux.life/aur-plugin - - `phisch/archinstall-aur `_ is another alternative: - - .. code-block:: console - - # archinstall --plugin https://raw.githubusercontent.com/phisch/archinstall-aur/master/archinstall-aur.py - - .. warning:: - - This will allow for unsupported usage of AUR during installation. - -.. _#1686: https://github.com/archlinux/archinstall/issues/1686 -.. _#2002: https://github.com/archlinux/archinstall/issues/2002 -.. _#2144: https://github.com/archlinux/archinstall/issues/2144 -.. _#2185: https://github.com/archlinux/archinstall/issues/2185 -.. _#2213: https://github.com/archlinux/archinstall/issues/2213 -.. _#2679: https://github.com/archlinux/archinstall/issues/2679 -.. _linux-headers: https://archlinux.org/packages/core/x86_64/linux-headers/ -.. _nvidia-dkms: https://archlinux.org/packages/extra/x86_64/nvidia-dkms/ -.. _x86_64: https://wiki.archlinux.org/title/Frequently_asked_questions#What_architectures_does_Arch_support? -.. _archlinux-keyring: https://archlinux.org/packages/core/any/archlinux-keyring/ -.. _archlinux-keyring-wkd-sync.service: https://gitlab.archlinux.org/archlinux/archlinux-keyring/-/blob/7e672dad10652a80d1cc575d75cdb46442cd7f96/wkd_sync/archlinux-keyring-wkd-sync.service.in -.. _ZFS: https://aur.archlinux.org/packages/zfs-linux -.. _archinstall: https://github.com/archlinux/archinstall/ -.. _timedatectl show: https://github.com/archlinux/archinstall/blob/e6344f93f7e476d05bbcd642f2ed91fdde545870/archinstall/lib/installer.py#L136 diff --git a/examples/archinstall/docs/help/report_bug.rst b/examples/archinstall/docs/help/report_bug.rst deleted file mode 100644 index ffb405d..0000000 --- a/examples/archinstall/docs/help/report_bug.rst +++ /dev/null @@ -1,33 +0,0 @@ -.. _help.issues: - -Report Issues & Bugs -==================== - -Issues and bugs should be reported over at `https://github.com/archlinux/archinstall/issues `_. - -General questions, enhancements and security issues can be reported over there too. -For quick issues or if you need help, head over to the Discord server which has a help channel. - -Log files ---------- - -When submitting a help ticket, please include the :code:`/var/log/archinstall/install.log`. -It can be found both on the live ISO but also in the installed filesystem if the base packages were strapped in. - -.. tip:: - | An easy way to submit logs is ``curl -F'file=@/var/log/archinstall/install.log' https://0x0.st``. - | Use caution when submitting other log files, but ``archinstall`` pledges to keep ``install.log`` safe for posting publicly! - -There are additional log files under ``/var/log/archinstall/`` that can be useful: - - - ``/var/log/archinstall/user_configuration.json`` - Stores most of the guided answers in the installer - - ``/var/log/archinstall/user_credentials.json`` - Stores any usernames or passwords, can be passed to ``--creds`` - - ``/var/log/archinstall/user_disk_layouts.json`` - Stores the chosen disks and their layouts - - ``/var/log/archinstall/install.log`` - A log file over what steps were taken by archinstall - - ``/var/log/archinstall/cmd_history.txt`` - A complete command history, command by command in order - - ``/var/log/archinstall/cmd_output.txt`` - A raw output from all the commands that were executed by archinstall - -.. warning:: - - We only try to guarantee that ``/var/log/archinstall/install.log`` is free from sensitive information. - Any other log file should be pasted with **utmost care**! diff --git a/examples/archinstall/docs/index.rst b/examples/archinstall/docs/index.rst deleted file mode 100644 index 9f3c2c2..0000000 --- a/examples/archinstall/docs/index.rst +++ /dev/null @@ -1,41 +0,0 @@ -archinstall Documentation -========================= - -**archinstall** is library which can be used to install Arch Linux. -The library comes packaged with different pre-configured installers, such as the default :ref:`guided` installer. - -Some of the features of Archinstall are: - -* **Context friendly.** The library always executes calls in sequential order to ensure installation-steps don't overlap or execute in the wrong order. It also supports *(and uses)* context wrappers to ensure cleanup and final tasks such as ``mkinitcpio`` are called when needed. - -* **Full transparency** Logs and insights can be found at ``/var/log/archinstall`` both in the live ISO and partially on the installed system. - -* **Accessibility friendly** Archinstall works with ``espeakup`` and other accessibility tools thanks to the use of a TUI. - -.. toctree:: - :maxdepth: 1 - :caption: Running Archinstall - - installing/guided - -.. toctree:: - :maxdepth: 3 - :caption: Getting help - - help/known_issues - help/report_bug - help/discord - -.. toctree:: - :maxdepth: 3 - :caption: Archinstall as a library - - installing/python - examples/python - archinstall/plugins - -.. toctree:: - :maxdepth: 3 - :caption: API Reference - - archinstall/Installer diff --git a/examples/archinstall/docs/installing/guided.rst b/examples/archinstall/docs/installing/guided.rst deleted file mode 100644 index 24ee19a..0000000 --- a/examples/archinstall/docs/installing/guided.rst +++ /dev/null @@ -1,297 +0,0 @@ -.. _guided: - -Guided installation -=================== - -Archinstall ships with a pre-programmed `Guided Installer`_ guiding you through the mandatory steps as well as some optional configurations that can be done. - -.. note:: - - Other pre-programmed scripts can be invoked by executing :code:`archinstall --script